Análise e Projeto de Sistemas Orientados a Objetos



Documentos relacionados
UML - Unified Modeling Language

Unified Modeling Language UML - Notações

Engenharia de Software III

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

2 Diagrama de Caso de Uso

Wilson Moraes Góes. Novatec

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Notas de Aula 04: Casos de uso de um sistema

Engenharia de Requisitos Estudo de Caso

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Sumário. Uma visão mais clara da UML

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

A Linguagem de Modelagem Unificada (UML)

O modelo unificado de processo. O Rational Unified Process, RUP.

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Análise e Projeto Orientados por Objetos

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

1 UML (UNIFIED MODELING LANGUAGE)

Modelagem de Casos de Uso (Parte 1)

Processo de Desenvolvimento Unificado

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

Programa do Módulo 2. Fundações do Modelo Objeto

Engenharia de Software na Prática Hélio Engholm Jr.

Engenharia de Software I

CASO DE USO. Isac Aguiar isacaguiar.com.br

Padrões de projeto 1

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

UML: Casos de Uso. Projeto de Sistemas de Software

Modelagemde Software Orientadaa Objetos com UML

MÓDULO DE CONTROLE ACADÊMICO - MCA Documento de Requisitos

ENGENHARIA DE SOFTWARE I

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

O Processo Unificado: Captura de requisitos

Guia de Modelagem de Casos de Uso

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar

Engenharia de Software I

2 Engenharia de Software

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Programa do Módulo 2. Processo Unificado: Visão Geral

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Análise e Projeto de Sistemas

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

Ricardo Roberto de Lima UNIPÊ APS-I. Históricos e Modelagem Orientada a Objetos

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Modelagem de Processos. Prof.: Fernando Ascani

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

Tarciane Andrade.

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Manual SAGe Versão 1.2 (a partir da versão )

Palavras-Chaves: Arquitetura, Modelagem Orientada a Objetos, UML.

Engenharia de Software I: Análise e Projeto de Software Usando UML

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 20 PROFª BRUNO CALEGARO

Professor: Curso: Disciplina:

UNIVERSIDADE DE MOGI DAS CRUZES Centro de Ciências Exatas e Tecnológicas

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Unified Process. Sueleni Mendez Batista. Orientadora: Dra. Elisa Hatsue Moriya Huzita

Documento de Análise e Projeto VideoSystem

Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Componentes do Diagrama

Unified Software Development Process

Fundamentos de Banco de Dados e Modelagem de Dados

Concepção e Elaboração

Diagrama de Classes. Diagrama de Classes. Diagramas de Classe. POST Criando Diagramas de Classe. Como construir (2)

Casos de Uso O que é. Casos de Uso. Objetivos de um Caso de Uso. Atores. Atores e Casos de Uso. Diagramas de Caso de Uso

Fase 1: Engenharia de Produto

Processo Unificado (RUP)

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

APOO Análise e Projeto Orientado a Objetos. Requisitos

Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

MODELAGEM DE SISTEMAS

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

O Processo Unificado

Resolução da lista de exercícios de casos de uso

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Uma visão mais clara da UML Sumário

Modelo para Documento de. Especificação de Requisitos de Software

Transcrição:

Análise e Projeto de Sistemas Orientados a Objetos Marco Antônio Pereira Araújo, M.Sc. maraujo@acessa.com Organização Introdução Conceituação Desenvolvimento Orientado a Objetos UML (Unified Modeling Language) RUP (Rational Unified Process) Teste em Software Orientado a Objetos Estratégias de Persistência de Objetos Refatoração Padrões de Projeto (Design Patterns) Considerações Finais 1

Bibliografia BEZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML. Campus, 2002. BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. UML Guia do Usuário. 2ª. ed. Campus, 2006. FOWLER, Martin. UML Essencial. 3ª. ed. Bookman, 2005. COCKBURN, Alistair. Escrevendo Casos de Uso Eficazes. Bookman, 2005. LARMAN, Craig. Utilizando UML e Padrões. 2ª. ed. Bookman, 2004. SCOTT, Kendal. O Processo Unificado Explicado. Bookman, 2003. Bibliografia GAMMA, Erich, et al. Padrões de Projeto Soluções Reutilizáveis de Software Orientado a Objetos. Bookman, 2000. FOWLER, Martin. Refatoração Aperfeiçoando o Projeto de Código Existente. Bookman, 2004. SINTES, Anthony. Aprenda Programação Orientada a Objetos em 21 Dias. Makron Books, 2002. BINDER, Robert. Testing Object-Oriented Systems. Addison-Wesley, 1999. http://www.rational.com/uml http://www.cetus-links.org http://www.mundooo.com.br 2

Introdução Histórico Origens: Linguagem SIMULA67: conceito de classe Linguagem SMALLTALK Os conceitos básicos da OO já tiveram algumas décadas para amadurecimento 3

Motivação Noção intuitiva: o mundo é povoado por objetos que interagem entre si Melhor mapeamento: Mundo Real x Mundo Computacional Melhoria da qualidade e produtividade Aumenta o grau de reutilização Melhoria da manutenção Melhor gerenciamento da complexidade Complexidade 4

Métodos Estruturados x Orientados a Objetos ESTRUTURADOS ORIENTADOS A OBJETOS DECOMPOSIÇÃO ENFOQUE DADOS E PROCEDIMENTOS TRANSIÇÃO DA ANÁLISE PARA PROJETO ESTRUTURA DO SISTEMA CICLO DE VIDA FUNCIONAL TOP-DOWN PROCEDIMENTOS NÃO ASSOCIADOS A DADOS NÃO BEM RESOLVIDO HIERARQUIA DE FUNÇÕES SEQUENCIAL OBJETO TOP-DOWN E BOTTOM-UP PROCEDIMENTOS ASSOCIADOS A DADOS NATURAL OBJETO / CLASSE HIERARQUIA DE CLASSES ITERATIVO EXECUÇÃO DO SISTEMA CHAMADA DE FUNÇÕES PASSAGEM DE MENSAGENS Conceituação 5

Paradigma Orientado à Objetos Conjunto de conceitos e regras que determinam como desenvolver software utilizando a tecnologia de orientação à objetos Objetos Representam elementos do mundo real Possuem Atributos (estado) Serviços (comportamento) Identidade 6

Atributos e Serviços Atributo É um dado (informação de estado) para o qual cada objeto em uma classe tem seu próprio valor Serviço É um comportamento específico que um objeto deve exibir Identidade Identifica de forma única um objeto, independente dos valores de seus atributos Objetos 7

Classe Uma descrição de um ou mais objetos com os mesmos atributos e serviços Uma classe pode ser vista como uma fábrica de objetos Objetos pertencentes à classe são ditos INSTÂNCIAS da classe Instanciação: ato de criar (instanciar) objetos de uma classe Classe 8

Tipos de Classes Classe Concreta Pode instanciar objetos Classe Abstrata Não pode instanciar objetos Classe e Objetos Classe Automóvel Atributos: cor, proprietário, ano, etc. Cor Proprietário Ano Classe Automóvel Serviços: acelerar, frear, abastecer, etc. Azul João 1992 Verde Maria 1995 9

Classificação Dificuldade da Classificação 10

Abstração Princípio de ignorar os aspectos de um assunto não relevantes para o propósito em questão, tornando possível uma concentração maior nos assuntos principais A abstração consiste então na seleção de alguns aspectos, ignorando outros Abstração 11

Encapsulamento (Ocultamento de Informações) O encapsulamento proíbe a visualização interna de um objeto Atributos são associados à serviços e só podem ser acessados por estes A interface para cada módulo é definida de forma a revelar o menos possível sobre seu funcionamento interno Encapsulamento Serviços só têm acesso aos atributos da classe para a qual foram definidos Atributos de uma classe só podem ser manipulados por serviços desta classe Serviços (ou Métodos) Atributos 12

Encapsulamento Herança Mecanismo para expressar a similaridade entre classes, simplificando a definição de classes iguais a outras que já foram definidas Representa a estrutura Generalização e Especialização, tornando explícitos os atributos e serviços comuns em uma hierarquia de classes 13

Herança Herança Superclasses representam abstrações generalizadas Subclasses representam abstrações onde variáveis de instância e métodos são adicionados, modificados ou removidos Relacionamento do tipo é-um Superclasses podem possuir serviços virtuais, que podem ser redefinidos nas subclasses Superclasses podem possuir serviços abstratos, que devem ser implementados nas subclasses, não possuindo implementação na superclasse 14

Herança Com o mecanismo de herança, ao se criar uma classe a partir de outra classe, a nova classe (subclasse da classe original) herda todas as suas características (atributos e serviços) Dois tipos Simples Múltipla Herança Simples Subclasse herda de apenas uma superclasse Generalização Veículo Terrestre Superclasse Especialização Automóvel Subclasse 15

Herança Múltipla Subclasse herda de mais de uma superclasse Principal problema: conflito de nomes Generalização Veículo Terrestre Veículo Aquático Superclasse Especialização Anfíbio Subclasse Polimorfismo Possibilidade de enviar um mesmo seletor de mensagem para diferentes objetos, mesmo que estes sejam instâncias de classes diferentes Significa que a mesma operação pode atuar de modos diferentes em classes diferentes 16

Associação Um modelo de mapeamento de domínio que um objeto precisa ter com outros, para cumprir suas responsabilidades Tipos: 1:1 - atributo simples (objeto) em ambas as classes da associação 1:N - atributo simples (objeto) em uma das classes da associação e atributo coleção (lista) na outra classe N:N - atributo coleção (lista) em ambas as classes da associação Composição / Agregação Utilizado quando objetos de determinadas classes são utilizados em conjunto e um faz parte do outro Representa a estrutura Todo-Parte Relacionamento do tipo tem-um Composição: relacionamento mais forte Ex. Carro e Motor em Locação de Veículos Agregação: relacionamento mais fraco Ex. Carro e Motor em Ferro-Velho 17

Composição / Agregação Mensagens Paradigma utilizado para comunicação entre objetos A independência de objetos é enfatizada através da troca de mensagens Os dados de um objeto não podem ser manipulados ou vistos por outro objeto, ao invés disso, uma mensagem é enviada ao objeto 18

Mensagens Persistência Relaciona-se com a sobrevivência (armazenamento) do objeto O objeto é livre para sobreviver à morte de seu criador Objetos podem ser persistentes ou não 19

Persistência Construção da Aplicação 20

Tipificação Forte Ligação Dinâmica Objetos só existem em tempo de execução Habilidade de uma operação ser executada diferentemente de acordo com o tipo (classe) a que um objeto está associado Significa que a ligação (acoplamento) de uma mensagem com seu método correspondente é feito em tempo de execução 21

Reutilização O reuso é inerente ao processo de solução de problemas utilizado pelos seres humanos Na medida em que soluções são encontradas, estas são utilizadas em problemas similares A capacidade de abstração é o que garante a adaptação necessária ao novo contexto Reutilização Definições É a utilização de produtos de software desenvolvidos ao longo do ciclo de vida em uma situação diferente daquela para a qual foram originalmente produzidos É o processo de utilização de software préexistente (programas, procedimentos, documentação e dados associados) durante o desenvolvimento de um novo sistema ou componente 22

Reutilização Motivação Melhores índices de produtividade Produtos de melhor qualidade, mais confiáveis, consistentes e padronizados Redução dos custos e tempo envolvidos no desenvolvimento de software Maior flexibilidade na estrutura do software produzido, facilitando sua manutenção e evolução Reutilização Objetos de reutilização Código (rotinas, programas, componentes) Projeto (informações sobre o projeto, decisões de projeto, arquiteturas) Análise (requisitos, especificações, aspectos sobre o domínio da aplicação) Conhecimento (formal e informal, sobre o domínio de aplicação, sobre computação, experiência passada) Processos de desenvolvimento de software 23

Reutilização Objetos existentes são novamente aproveitados, com pouca ou nenhuma alteração É um benefício somente alcançado a longo prazo Somente é alcançada nos sistemas OO bem-construídos Reutilização Deve ser criada uma biblioteca de classes reutilizáveis Para que possa ser efetiva, sistemas devem ser desenvolvidos para serem reutilizados, e não apenas reutilizando objetos existentes A OO não garante a reutilização, apenas a possibilita 24

Reutilização Atividades do processo de reutilização Compreensão do alvo de reutilização Identificação de candidatos à reutilização Avaliação do potencial de reutilização de cada candidato e seleção do mais adequado Modificação do objeto selecionado (se necessário) Integração do objeto modificado ao processo de desenvolvimento Reutilização Construtores de Classes (Desenvolvimento para o Reuso) Utilizadores de Classes (Desenvolvimento com Reuso) 25

Frameworks Conjunto de classes que incorpora um projeto abstrato para uma família de problemas que se relacionam, e suporta a reutilização em uma granularidade maior que a de classes Podem ser considerados como projetos ou arquiteturas de alto nível, consistindo de classes que são especialmente projetadas para serem refinadas e usadas em grupo Framework Caixa-Branca O comportamento específico da aplicação é inserido na arquitetura genérica, somando-se métodos às subclasses de uma ou mais classes do framework. Os frameworks que fazem uso deste processo de especialização obrigam quem os utiliza a conhecer os seus dispositivos internos São mais flexíveis e permitem a sua utilização na especificação de aplicações até então desconhecidas dentro do domínio 26

Framework Caixa-Preta O framework recebe um conjunto de parâmetros que representa o comportamento específico da aplicação. Este fornecimento de parâmetros é feito por protocolo, através da interface de cada classe do framework e, por isso, esta forma de especialização requer que seja conhecida apenas esta interface Facilita a reutilização, pois exige que apenas a sua interface seja compreendida, podendo ser, portanto, encarado como um grande componente que encapsula o comportamento genérico de um domínio Reutilização Fatores de influência Tamanho do programa: quanto maior é o programa, maior é a chance de se tornar complexo, dificultando sua compreensão e/ou modificação, reduzindo suas possibilidades de reutilização Estrutura do programa: influi diretamente na compreensão e/ou modificação do programa. Estruturas complexas reduzem a chance de reutilização 27

Reutilização Linguagem de programação: bibliotecas formadas por componentes escritos em diferentes linguagens de programação. A reutilização pode implicar na conversão entre linguagens Documentação: a insuficiência de documentação interna (comentários) e externa (especificação, projeto, etc.) pode impossibilitar a reutilização Reutilização Agente da reutilização: quanto mais experiente for o agente da reutilização (na área de aplicação e em aspectos computacionais), mais facilmente ele será capaz de compreender e/ou modificar componentes, portanto, reutilizá-los Grau de generalidade: quanto mais genérico for o objeto de reutilização, maiores serão as chances de ser reutilizado 28

Reutilização Independência: quanto mais independente (de hardware e de software), maiores as chances de reutilização Coesão: força que mantém unidos os elementos de um objeto de reutilização. Quanto maior for a coesão, mais reutilizável será o objeto Acoplamento: grau de interdependência entre objetos. Quanto menor for o acoplamento, mais reutilizável será o objeto Tecnologias Orientadas à Objetos x Baseadas em Objetos As orientadas à objetos suportam todos os conceitos como encapsulamento, heranças nas classes e polimorfismo nas operações As baseadas em objetos apenas aderem parcialmente a estes conceitos Nem todas as ferramentas visuais são orientadas à objetos 29

Desenvolvimento Orientado a Objetos Processo de Desenvolvimento Define o modelo que será utilizado para o desenvolvimento do produto Normalmente, engloba Ciclo de Vida Métodos Ferramentas 30

Desenvolvimento OO Em geral, envolve as seguintes atividades Levantamento dos requisitos Identificação de candidatos a classes/objetos Identificação das interações entre objetos e classes Projeto Codificação Testes Ciclo de Vida A OO incentiva o desenvolvimento através de um processo incremental e interativo, com refinamento crescente do software Essa abordagem é facilitada pela utilização de um modelo homogêneo para a representação das etapas de desenvolvimento do software 31

Ciclo de Vida em Espiral Meta-Modelo: qualquer ciclo de vida pode ser utilizado na fase de desenvolvimento A medida que componentes são desenvolvidos Os componentes são avaliados O desenvolvimento futuro é replanejado Riscos são avaliados O ciclo termina com o produto pronto Ciclo de Vida em Espiral Planejamento Análise de Riscos Validação Desenvolvimento 32

Análise Orientada à Objetos OOA = Object Oriented Analysis (Análise Orientada à Objetos) Em OO, um modelo é construído utilizando classes, e não objetos do mundo real (as instâncias) Etapas Encontre as classes Identifique os relacionamentos Defina atributos Defina serviços Projeto Orientado à Objetos OOD = Object Oriented Design (Projeto Orientado à Objetos) O projeto OO utiliza as mesmas ferramentas da análise, resultando num gap semântico muito menor entre as fases de desenvolvimento de sistemas, possibilitando uma transição da análise para o projeto mais eficiente 33

Projeto Orientado à Objetos O projeto OO transforma as abstrações do domínio em classes implementáveis, embora nem todas as classes venham do domínio No projeto OO, basta acrescentar ao modelo de análise as classes que irão tratar da interação humana e de aspectos computacionais Projeto Orientado à Objetos Os sistemas devem ser construídos em 3 camadas, isolando os objetos de interface dos objetos de domínio, e estes da camada de acesso ao banco de dados Etapas Refine o modelo (verificar herança simples e múltipla, incluir classes para o sistema e para conjuntos de objetos, caso necessário) Projete o gerente de dados (persistência) Projete o gerente de interface Projete o(s) gerente(s) de tarefas (relatórios, consultas, estatísticas, etc.) 34

Programação Orientada à Objetos OOP = Object Oriented Programming (Programação Orientada à Objetos) Deixar a OO limitada à programação será extremamente limitante e de poucos ganhos quanto à produtividade É importante pensar em objetos desde a análise Principais Linguagens Puras: forçam o uso do paradigma OO Smalltalk Java Eiffel Híbridas: permitem a utilização de diferentes paradigmas C++ Object Pascal OOCobol 35

Métodos Orientados a Objetos Um Método de Desenvolvimento de Software é um conjunto de procedimentos técnicos e convenções notacionais para a construção organizada de produtos de software Principais Métodos Coad & Yourdon Booch Rumbaugh (OMT) Jacobson (Use case) Unified Method / UML Fusion Shlaer-Mellor 36

UML Unified Modeling Language UML - Definição Uma evolução das representações tradicionais para análise e projeto Unifica as formas de representação de Booch, Rumbaugh e Jacobson Adotado como padrão pela OMG (Object Management Group) 37

UML - Definição Normalmente é definido como uma linguagem de modelagem e não um método propriamente dito Uma proposta de processo de desenvolvimento que pode ser utilizada em conjunto é o RUP (Rational Unified Process), definido por Booch, Jacobson e Rumbaugh UML -Histórico Nov 97 UML é aprovada pelo OMG 38

UML - Utilização A UML pode ser utilizada para Mostrar a periferia de um sistema e suas maiores funções usando Casos de Uso e Atores Ilustrar realizações de Casos de Uso com Diagramas de Interações Representar a estrutura estática de um sistema usando Diagramas de Classes Modelar o comportamento de objetos com Diagramas de Estado Revelar a arquitetura de implementação física com Diagramas de Componentes e Distribuição Requisitos Uma condição ou capacidade necessária para um usuário resolver um problema ou alcançar um objetivo Uma condição ou uma capacidade que deve ser alcançada ou estar presente em um sistema Requisitos Funcionais: descrevem uma interação entre o sistema e seu ambiente Requisitos Não Funcionais (ou Restrições): descrevem uma restrição para o sistema que limita as possíveis escolhas de solução para o problema 39

Requisitos Uma especificação de requisitos é importante porque: Estabelece uma base de concordância entre o cliente e o fornecedor sobre o que o software fará Fornece uma referência para a validação do produto final Uma especificação de requisitos de alta qualidade é um pré-requisito para um software de alta qualidade Reduz o custo do desenvolvimento Requisitos (Padrão IEEE 830) Estrutura de um documento de requisitos Título Índice Introdução Propósito Escopo Definições Descrição Geral Visão Geral Perspectiva do Produto Funções do Produto Requisitos Requisitos Funcionais Requisitos Não Funcionais 40

Requisitos Funcionais - Exemplos Requisito Funcional 1: O sistema deve permitir à secretaria cadastrar cursos, contendo código, descrição, carga horária, professor coordenador, quantidade de períodos e tipo de curso (Graduação, Especialização, Mestrado e Doutorado). Requisito Funcional 2: O sistema deve permitir à secretaria cadastrar disciplinas, contendo curso, código da disciplina, descrição, período, número de aulas, ementa e bibliografia, bem como seus pré-requisitos. Requisito Funcional 3: O sistema deve permitir à secretaria cadastrar alunos contendo matrícula, nome, data de nascimento, curso, ano de início, semestre de início, e- mail, telefone residencial, telefone comercial, telefone celular, fotografia, endereço completo (logradouro, número, complemento, bairro, cidade, UF, CEP), CPF, documento de identidade (número, órgão expedidor, UF e data expedição). Requisitos Funcionais - Exemplos Requisito Funcional 4: O sistema deve permitir à secretaria cadastrar professores, contendo matrícula, nome, data de nascimento, data de admissão, e-mail, telefone residencial, telefone comercial, telefone celular, fotografia, endereço completo (logradouro, número, complemento, bairro, cidade, UF, CEP), CPF, documento de identidade (número, órgão expedidor, UF e data expedição), titulação máxima (graduação, especialização, mestrado e doutorado), tipo de contrato (substituto, auxiliar, assistente ou adjunto), benefícios (vale transporte e/ou vale alimentação) e alocação das disciplinas lecionadas pelo professor. Requisito Funcional 5: O sistema deve permitir à secretaria cadastrar turmas, contendo curso, disciplina, ano, semestre, descrição da turma, número máximo de alunos, horários e professor responsável. 41

Requisitos Funcionais - Exemplos Requisito Funcional 6: O sistema deve permitir à secretaria matricular alunos em turmas específicas. Requisito Funcional 7: O sistema deve permitir ao professor cadastrar avaliações e freqüência de alunos de uma turma específica. Requisito Funcional 8: O sistema deve calcular a aprovação de alunos, considerando 75% de freqüência mínima. Além disso, média menor do que 3 (três), implica em reprovação, média maior ou igual a 3 (três) e menor que 7 (sete) implica em prova final e média igual ou superior à 7 (sete) implica em aprovação. Para a prova final, a média desta nota com a média anterior menor ou igual a 5 (cinco) implica em reprovação, caso contrário, em aprovação. Requisitos Funcionais - Exemplos Requisito Funcional 9: O sistema deve permitir ao professor a emissão da relação de alunos por turmas, contendo descrição do curso, nome da disciplina, ano, semestre, turma, nome do professor, matrícula do aluno e nome do aluno. Requisito Funcional 10: O sistema deve permitir à secretaria a emissão da relação de disciplinas por curso, contendo nome do curso, nome das disciplinas, total de disciplinas por curso e total de todas as disciplinas. Requisito Funcional 11: O sistema deve permitir à secretaria a emissão do histórico escolar, contendo matrícula do aluno, nome do aluno, ano, semestre, nome das disciplinas, número de aulas, número de faltas e avaliações. 42

Requisitos Não Funcionais - Exemplos Requisito não funcional 1: O sistema deve possibilitar que todos os relatórios sejam pré-visualizados antes do envio para a impressora. Requisito não funcional 2: O sistema deve apresentar o recurso de ajuda on-line sensível ao contexto. Requisito não funcional 3: O sistema deve processar matrículas em, no máximo, 5 segundos UML - Use Cases Tipicamente representa uma interação entre um usuário e um sistema computacional Pode ser utilizado para capturar os contextos de utilização do sistema Tem a capacidade de representar os requisitos do sistema em alto nível de abstração É um padrão de comportamento que o sistema exibe Apresenta uma visão externa do sistema 43

UML - Use Cases Elementos que compõem um diagrama de use cases Ator: representa um papel que um usuário desempenha com respeito ao sistema Situação (use case): representa as funcionalidades externas do sistema Extensões: representam extensões à situações pré-definidas Usos: demonstram a reutilização de situações pré-definidas UML - Use Cases Atores Um Ator é alguém ou alguma coisa que deve interagir com o sistema a ser desenvolvido Cada caso de uso é uma seqüência de transações relacionadas executadas por um ator e o sistema, em um diálogo Secretaria Professor Aluno Sistema Faturamento 44

UML - Use Cases Atores são examinados para determinar suas necessidades Coordenador: manter o currículo Professor: solicitar lista de cursos Aluno: efetuar matrícula Sistema Cobrança: recebe informações sobre cobranças Cadastrar Aluno Emitir Histórico Escolar Efetuar Matrícula UML - Use Cases Diagramas de use case são criados para se visualizar a relação entre atores e casos de uso Cadastrar Aluno Secretaria Secretaria Emitir Histórico Escolar Aluno Efetuar Matrícula Secretaria 45

UML - Use Cases À medida em que casos de uso são documentados, outras relações entre casos de uso poderão ser descobertas Uma relação de uso (use) mostra comportamento que é comum a a um ou mais casos de uso Uma relação de extensão (extend) mostra comportamento opcional Efetuar Matrícula <<use>> <<use>> Validar Senha Emitir Histórico Escolar UML - Use Cases Secretaria Efetuar Matrícula <<extend>> Emitir Declaração Matrícula 46

Diagrama de Casos de Uso UML- Especificação de Casos de Uso Caso de Uso Super Caso de Uso Sumário Ator Principal Atores Secundários Pré-Condições Curso Normal Cursos Alternativos Cursos de Exceção Pós-Condições Requisitos Não Funcionais Requisitos de Interface com o Usuário Regras do Negócio 47

UML- Especificação de Casos de Uso Caso de Uso: Matricular Aluno Super Caso de Uso: Não de aplica Sumário: Este caso de uso é iniciado pela secretaria quando da matrícula de um aluno em uma turma de uma determinada disciplina. Ator Principal: Secretaria Ator Secundário: Não se aplica Pré-Condições: Usuário da secretaria logado no sistema UML- Especificação de Casos de Uso Curso Normal: 1. Secretaria solicita ao sistema a matrícula de alunos; 2. Sistema exibe uma lista com as turmas cadastradas, contendo descrição do curso, descrição da disciplina, ano, semestre e descrição da turma; 3. Sistema solicita a opção de matricular alunos a partir da seleção de uma turma na lista de turmas disponibilizada; 4. Secretaria seleciona uma turma; 5. Sistema exibe a lista de alunos matriculados na turma, professor responsável, total de vagas e vagas restantes; 6. Sistema solicita o número de matrícula do aluno; 7. Secretaria informa o número de matrícula do aluno; 8. Sistema solicita confirmação da matrícula; 9. Secretaria confirma os dados; 10. Sistema efetua validação da matrícula (RN1) (RN2) (RN3); 11. Sistema armazena a matrícula; 12. Sistema fecha a interface. 48

UML- Especificação de Casos de Uso Cursos Alternativos: a) Cancelamento da operação de matrícula Entre os passos 1 e 8, a Secretaria pode cancelar a operação de matrícula, fechando a interface; Cursos de Exceção: a) A turma está com o número total de vagas preenchidas Sistema avisa que a matrícula não poderá ser efetuada e o caso de uso se encerra; b) O aluno não é do curso da turma selecionada Sistema avisa que a matrícula não poderá ser efetuada e o caso de uso se encerra; c) O aluno não está na situação de matriculado Sistema avisa que a matrícula não poderá ser efetuada e o caso de uso se encerra; UML- Especificação de Casos de Uso Pós-Condições: Podem ser lançadas avaliações para este aluno nesta turma Requisitos Não Funcionais: Não se aplica Requisitos de Interface com o Usuário: O sistema deve fornecer uma interface gráfica com facilidades para pesquisa de turmas através de nomes de cursos e nomes de disciplinas. Regras do Negócio: RN 1: Um aluno só pode se matricular em disciplinas que tenha obtido aprovação em seus pré-requisitos RN 2: Um aluno não pode matricular-se em turmas com coincidência de horários RN 3: Não podem ser matriculados alunos além do limite de vagas da turma 49

UML - Diagrama de Classes Descreve os tipos dos objetos existentes no sistema e as associações estáticas entre eles As principais relações estáticas são Classes, suas estruturas internas e comportamento Associações, composições, agregações, dependências, e relações de herança Multiplicidade e indicadores de navegação Nomes de papéis (o que uma classe representa para outra) Mostram também os atributos, operações e restrições que se aplicam aos objetos de uma determinada classe UML - Diagrama de Classes Classes Representam os tipos de objetos existentes no modelo Descritas a partir de seus atributos, operações e restrições Podem ser organizadas segundo uma estrutura de generalização/especialização Admitem classificação simples ou múltipla (herança simples ou múltipla) Nome da classe em itálico representa classe abstrata Classe Atributos Operações( ) 50

UML- Herança Herança é uma relação entre uma super-classe e suas sub-classes Atributos comuns, operações, relações e/ou, são mostradas no nível aplicável mais alto da hierarquia Generalização Especialização 1 Especialização 2 UML - Diagrama de Classes Associações Representam relacionamentos entre instâncias de classes (um aluno se matricula em um curso, um curso possui várias disciplinas) Conceitualmente representam relacionamentos entre classes Possuem 2 papéis, um para cada sentido da associação, que pode ser explicitamente Associação representado por um label Classe 1 Classe 2 min..max min..max 51

UML - Diagrama de Classes Associação Multiplicidade define como muitos objetos participam numa relação Multiplicidade é o número de instâncias de uma classe que se relacionam a UMA instância de uma outra classe Para cada associação e agregação, haverá duas decisões relativas a multiplicidade a se tomar: uma para cada lado da relação UML - Diagrama de Classes Associações A multiplicidade de um papel representa o número de objetos que pode participar da associação Do ponto de vista da especificação do sistema as associações representam responsabilidades Do ponto de vista de implementação associações indicam a existência de referências entre os objetos, e servem para indicar a navegabilidade do modelo 52

UML - Diagrama de Classes Multiplicidade de Associações 1 Exatamente um 1..* 1 ou mais Classe Classe Classe * Muitos (0 ou mais) Classe 1-3,5 Possibilidades específicas Classe 0..1 Opcional (0 ou 1) Curso código * Contêm É-composto-de 1..* Está-incluída Disciplina código UML - Diagrama de Classes Associação Relações fornecem um caminho para a comunicação entre os objetos Diagramas de sequência e/ou comunicação podem identificar ligações entre objetos para se chegar ao comportamento desejado Tipos de relações Associação Agregação Composição Dependência 53

UML - Diagrama de Classes Associação Uma associação é uma conexão bi-direcional entre classes Uma associação é mostrada como uma linha conectando as classes relacionadas Uma agregação é um tipo mais forte de conexão, onde a relação é entre o todo e suas partes Uma agregação é mostrada como uma linha conectando as classes relacionadas com um losango perto da classes que representa o todo UML - Diagrama de Classes Associação Uma relação de dependência é uma forma mais fraca de relação, mostrando uma relação entre um cliente e um fornecedor, onde o cliente não tem conhecimento semântico do fornecedor Uma dependência é mostrada como uma linha pontilhada entre o cliente e o fornecedor 54

UML - Diagrama de Classes Associações Classe 1 Associação Classe 2 Todo Agregação Parte min..max min..max min..max min..max Classe A Classe B Todo Composição Parte min..max min..max Classe Associativa Classe B Anotação Classe 1 min..max min..max Navegabilidade Classe 2 min..max min..max Dependência Classe 1 Classe 2 UML - Diagrama de Classes 55

UML - Diagrama de Classes Associação Apesar de associações e agregações serem bidirecionais por definição, frequentemente é desejável restringir a navegação em uma única direção Caso a navegação seja restringida, uma seta é adicionada para se indicar a direção da navegação Muitas vezes é conveniente definir a navegabilidade a partir dos diagramas de seqüência UML - Diagrama de Classes A estrutura de uma classe é representada pelos seus atributos O comportamento de uma classe é representado pelas suas operações Atributos podem ser encontrados pelo exame das definições de classes, requisitos de problemas, e pela aplicação do conhecimento do domínio Cada Disciplina oferecida possui uma ementa e uma bibliografia Disciplina Ementa Bibliografia 56

UML - Diagrama de Classes UML Especificação de Classes Atributos Nome Descrição Tipo (Integer, Real, Boolean, Character, Classe) Tamanho Visibilidade Obrigatoriedade Restrições 57

UML Especificação de Classes Serviços Nome Descrição Tipo (Procedimento / Função) Parâmetros (Opcional) Nome Tipo Tamanho Obrigatoriedade Tipo de Saída (para Funções) UML Diagramas de Interação Diagramas de Interação descrevem como casos de uso são realizados como interações entre associações de objetos 58

UML Diagramas de Interação Diagrama de Interação Modelos que descrevem como grupos de objetos colaboram para obter algum comportamento Tipicamente um diagrama de interação captura o comportamento de um único caso de uso Há dois tipos de Diagramas de Interação Diagramas de Seqüência Diagramas de Comunicação UML - Diagrama de Seqüência Um Diagrama de Seqüência mostra interações de objetos ordenados numa seqüência de tempo Operações podem ser encontradas examinando-se os Diagramas de Interação Relacionamentos podem ser descobertos examinando-se os Diagramas de Interação 59

Diagrama de classes após a construção do diagrama de seqüência 60

UML Diagrama de Comunicação Um Diagrama de Comunicação mostra interações organizadas à volta de objetos e as ligações de um para o outro 61

UML Diagrama de Estados Mostra os estados de uma determinada classe, os eventos que causam a transição de um estado para outro e as ações resultantes da troca de estados Representa a visão do modelo dinâmico de uma simples classe ou do sistema como um todo Diagramas de Estados são criados para objetos que tenham um comportamento dinâmico significante UML Diagrama de Estados Estados Representam os resultados acumulativos do comportamento de um objeto Transições (eventos) Alguma ocorrência que pode causar a troca do estado de um sistema 62

UML Diagrama de Estados Matriculado Formado Trancado Abandono UML Diagrama de Estados Notação Avançada Ações dos Estados Ações podem ser associadas a estados Transição Condicional Transições somente ocorrerão se satisfizerem a determinadas condições Estados aninhados Estados podem ser particionados 63

UML Diagrama de Estados Iniciar Ação fazer: iniciar curso Cancelar Incluir Aluno / Contador = 0 Cancelar Inclui aluno[ contador < 10 ] Abrir entrar: Matricular Aluno Sair: incrementa contador [ contador = 10 ] Cancelado fazer: Notificar Aluno Matriculado Cancelar Fechado fazer: Finalize curso UML Diagrama de Atividades Utilizados para modelar o fluxo de atividades em um procedimento Decisões podem ser representadas quando mais de um evento pode ocorrer em uma atividade Atividades são equivalentes aos estados Eventos são equivalentes às transições Normalmente são associados a diagramas de estados 64

UML Diagrama de Atividades Um Diagrama de Atividades pode ser usado com diferentes propósitos, incluindo Capturar o trabalho que será executado quando uma operação é disparada (ações) Capturar o trabalho interno em um objeto Mostrar como um grupo de ações relacionadas pode ser executadas, e como vão afetar outros objetos Mostrar como uma instância de caso de uso pode ser executada em termos de ações e objetos UML Diagrama de Atividades Atividade A Transição Atividade B Início Atividade inicial Atividade X Fim Atividade B Atividade C Decisão Saída B Atividade D Saída A A barra indica que uma atividade despacha para várias que ocorrem em paralelo ou em ordem não previsível 65

UML Diagrama de Atividades Matricular Aluno Cancelar matrícula [para cada pré requisito da disciplina] negado Verificar Horários [ok] [Horários e Pré-Requistos OK] Verificar Pré-Requisitos [ok] Aceitar matrícula UML Diagrama de Empacotamento Representa as classes e seus relacionamentos Mostra uma visão da estrutura de classes do sistema Indicam os papéis e responsabilidades das entidades que provêem o comportamento do sistema 66

UML Diagrama de Empacotamento Interface do Usuário Objetos do Sistema Utilidades Banco de Dados UML Diagrama de Empacotamento Academico Faturamento Aluno Aluno (from Acadêmico) Mensalidade 67

UML Diagrama de Componentes Diagramas de Componentes ilustram a organização e dependências entre componentes de software Um componente pode ser Um componente de código fonte Um componente de run-time, ou Um componente executável UML Diagrama de Componentes Cobrança.exe Sistema Cobrança Registro.exe curso.dll curso pessoas.dll Usuário Aluno Professor Curso Disciplina 68

UML Diagrama de Desenvolvimento Apresenta os relacionamentos físicos entre os componentes de software e hardware que compõem o sistema É bastante útil para apresentar a distribuição dos componentes no sistema Os nós do diagrama representam algum tipo de unidade computacional Conexões entre os nós mostram algum tipo de comunicação Componentes representam módulos físicos (código) As dependências entre os componentes devem ser as mesmas que as existentes entre os pacotes UML Diagrama de Desenvolvimento ClienteA : Pentium 200 <<TCP/IP>> ClienteB : Pentium 200 <<TCP/IP>> Servidor de Aplicação SQL <<TCP/IP>> Servidor de Banco de Dados : ORACLE 8 69

UML Diagrama de Distribuição O Diagrama de Distribuição mostra a configuração dos elementos de processamento run-time e dos processos que rodam dentro deles O Diagrama de Distribuição visualiza a distribuição dos componentes através de toda a empresa UML Diagrama de Distribuição Matrícula Database Biblioteca Sede Principal Salas 70

Ferramentas CASE Rational Rose Visual Paradigm Argo UML Poseidon Jude System Architect RUP Rational Unified Process 71

RUP Definição RUP é um framework genérico de um processo de desenvolvimento RUP é baseado em componentes RUP utiliza toda a definição da UML RUP é dirigido pelos use cases, centrado na arquitetura, iterativo e incremental (conceitos-chave) RUP Definição Conjunto de atividades bem definidas com responsáveis com artefatos de entrada e saída com dependências entre as mesmas e ordem de execução com modelo de ciclo de vida descrição sistemática de como devem ser realizadas 72

RUP Características Principais O desenvolvimento de sistemas seguindo o RUP é Iterativo e incremental Guiado por casos de uso (use cases) Baseado na arquitetura do sistema RUP Fases O ciclo de vida de um sistema consiste de quatro fases, divididas em iterações Concepção Elaboração Construção Transição Tempo Marco do Objetivo (no Ciclo de Vida) Marco da Arquitetura (no Ciclo de Vida) Marco Capacidade Inicial de Operação Concepção (define o escopo do projeto) Elaboração (define os requisitos e a arquitetura) Construção (desenvolve o sistema) Transição (implanta o sistema) Marco da Liberação do Produto 73

RUP Concepção Responder às seguintes perguntas Quais serão as principais funcionalidades do sistema? Em linhas gerais, como será a arquitetura do sistema? Qual é a estimativa inicial de tempo e custo para o projeto? Quais são os principais riscos? Entendimento geral do problema e da tecnologia envolvida Estabelecer o escopo do projeto Garantir o financiamento do projeto Verificar a viabilidade do projeto RUP Elaboração Detalhamento dos requisitos do sistema Protótipo Descartável Interface com Usuário Garantir uma arquitetura estável e testada para a Construção (evitar surpresas técnicas durante a Construção) Minimizar os riscos relacionados à fase de construção Plano de desenvolvimento para as próximas fases Estimativa realista de custo e prazo para a Construção 74

RUP Construção Construção do produto em uma sequência de iterações Ênfase em Projeto Detalhado, Implementação e Testes Construção em incrementos sucessivos Gerar o software propriamente dito Manuais / Documentação do usuário Produto ao final da Construção ainda pode conter erros, que serão descobertos e removidos na fase de Transição RUP Transição Fazer a transição do produto para a comunidade de usuários Foco na correção de problemas e não em adição de novas funcionalidades Modificações em função de feedback dos usuários Otimização Treinamento dos usuários Montagem da estrutura de suporte Teste beta Aceitação final 75

RUP Iterativo e Incremental Cada iteração é planejada realiza uma seqüência de atividades (de elicitação de requisitos, análise e projeto, implementação, etc.) distintas geralmente resulta em uma versão executável do sistema é avaliada segundo critérios de sucesso previamente definidos RUP Fluxos de Trabalho Modelagem de Negócio Definição dos Processos e Modelo de Domínio Requisitos Casos de Uso + Protótipo Interface com Usuário + Glossário Análise e Projeto Desenvolvimento baseado em componentes. Mecanismos de colaboração entre componentes de forma a realizar os cenários dos casos de uso Implementação Produção de código e testes de unidade Testes Testes do sistema, baseados nos casos de uso e demais requisitos 76

RUP RUP Guiado por Casos de Uso Os casos de uso não servem apenas para definir os requisitos do sistema Várias atividades do RUP são guiadas pelos casos de uso: planejamento das iterações criação e validação do modelo de projeto planejamento da integração do sistema definição dos casos de teste 77

RUP Baseado na Arquitetura Arquitetura visão geral do sistema em termos dos seus subsistemas e como estes se relacionam A arquitetura é prototipada e definida logo nas primeiras iterações O desenvolvimento consiste em complementar a arquitetura A arquitetura serve para definir a organização da equipe de desenvolvimento e identificar oportunidades de reuso 78