análise oo / uml renata araujo ricardo storino núcleo de computação eletrônica curso de...
TRANSCRIPT
Análise OO / UML
Renata AraujoRicardo Storino
Núcleo de Computação EletrônicaCurso de Programação de Computadores
Maio a Setembro/2000
Análise e Projeto de Sistemas
2
Ciclo de Vida de Software
Definição dos requisitos
Análise
Projeto
Implementação
Teste/Avaliação
Implantação
Manutenção
Documentos são geradosa cada fase e servem deentrada para a fase seguinte
3
Ciclo de Vida - Modelo Cascata
Intenções
Especificação do
Software
Projetodo
Software
Códigodo
Software
Sistemapronto
para operar
Análise
Projeto
Implementação
Teste
Requisitosdo
Software
Definição de Requisitos
Documentos geradosdurante o ciclo de vida
Transformações
4
Definição de Requisitos
Identificar desejos, intenções, procedimentos
atuais e dados;
Organizá-los de forma coerente
Definir de uma forma geral o que será tratado pelo software interface com o que fica de fora do
software
DesejosIntenções
ProcedimentosDados
Requisitosdo
Software
5
Análise do Software
Entendimento e Representação Domínio do problema Conceitos Funcionalidades Casos de uso
Baseado nos fatores críticos de sucesso do software
Especificaçãodo
Software
Requisitosdo
Software
6
Análise Orientada a Objetos
Objetivos Representar todos os conceitos do mundo real que são
relevantes para o sistema Modelagem do Sistema segundo o paradigma OO Descrever a estrutura de classes do sistema
Produtos Modelo/representação do software Modelo de Análise do Sistema
Representação gráfica do diagrama de classes do Sistema e das interações entre os objetos destas classes
Documentação Detalhamento e complementação do diagrama de classes do
sistema
7
Análise Orientada a Objetos
8
Diagramas da UML
Visão Externa Diagrama de Casos de Uso
Visão Estrutural (Estática) Diagrama de Classes
Visão Comportamental (Dinâmica) Diagrama de Estado Diagrama de Atividade
Visão de Interação Diagrama de Sequência Diagrama de Colaboração
Visão da Arquitetura (Implementação) Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes
9
Diagramas de Caso de Uso
Especificam a visão externa do sistema Descrevem como o sistema é percebido por seus
usuários Descrevem as interações entre os usuários e o
sistema
Consulta de saldo
Ator
Solicitação de extrato
Interações
10
Diagramas de Classe
Descrevem a parte estática do sistema, ignorando seu processamento
Apresentam Classes (objetos) Atributos Relacionamentos
Herança Agregação Associação
Serviços
11
Diagramas de Estado
Apresentam as sequências de estados que um objeto assume em sua existência em resposta a estímulos recebidos
Complemento das descrições estáticas de classes
Relacionam os possíveis estados que os objetos de uma classe podem ter e quais os eventos que causam mudanças em seu estado.
Pedido Registrado
Pedido em Análise
Pedido para análise requisitado
Pedido enviado
Pedido em Aprovação
Pedido para aprovação
Aprovação emitida
Pedido Aprovado
Pedido será atendido
Classe Pedido
12
Diagramas de Sequência
Apresentam a interação entre os objetos no decorrer do tempo
Mostra a sequência de mensagens entre objetos
Vendedor
Janela Pedido Nota Fiscal Fatura Cliente
1: situação financeira do cliente 2: obter pedidos
(cliente)
3: obter notas fiscais (pedido)
4: obter faturas vencidas (nota fiscal)
5: obter faturas a vencer (nota fiscal)
6: obter limite de crédito (cliente)
13
Diagrama de Classes
Passos para confecção
Identificação de Classes
Identificação de relacionamentos
Definição de atributos
Definição de serviços
14
Identificação de Classes
O domínio do problema Um determinado domínio de problemas inclui informações
relativas ao mundo real
Os requisitos da aplicação Considerados os objetivos da aplicação a ser construída,
apenas um subconjunto dessas informações necessita ser representado
15
Identificação de Classes
Cliente Nome Endereço Altura Peso Idade Sexo Renda Mensal Cor dos Cabelos Número de Dependentes ...
Cliente Nome Endereço Idade Sexo Renda Mensal Número de Dependentes
No mundo real Em uma dada aplicação/sistema
16
Identificação de Classes
No mundo real Numa aplicação/sistema
Cliente
Endereço
Carro Dependentes
Time
Nome
Cliente
Nome
Endereço
17
Identificação de Classes
O que procurar? Objetos
Ex. Pessoas, clientes, turmas, cursos, produtos etc. Agentes
Ex. cliente, atendente etc. Unidades organizacionais
Ex. local para entrega, setor etc. Eventos
Reclamação do cliente, pedido pago etc.
“Quaisquer conceitos que serão armazenados e “lembrados” pelo sistema.”
18
Identificação de Classes
O que Considerar? Armazenamento necessário
O sistema precisará armazenar informações sobre os objetos desta classe?
Mais de um objeto em uma classe É possível identificar facilmente os objetos desta classe? Evite classes que representem um só objeto
Atributos sempre aplicáveis Todos os atributos identificados para a classe são aplicáveis a
todas as suas instâncias?
19
Identificação de Classes
Notação de classe
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
20
Identificação de Classes
Recomendações Nomenclatura de classes
Nome da classe deve descrever claramente o conceito representado
Uso de termos de conhecimento de todos Evitar abreviaturas Estabelecimento de padrões para nomeação de classes Evitar ambigüidades (dupla interpretação)
Uso Fast CasePrática
21
Definição de Atributos
Objetivo Identificar e formalizar a definição dos atributos de cada
classe presente no diagrama de classes
O que considerar? Necessidade do sistema em armazenar as características das
instâncias das classes
22
Definição de Atributos
Representação gráfica
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
23
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Visibilidade: Critério de acesso ao atributo Opcional
+ visibilidade pública (default) Atributo pode ser acessado por todos, inclusive por serviços de outras classes
# visibilidade protegida Atributo é acessado apenas pelos serviços da própria classe ou por serviços de classes
dentro de um mesmo pacote
- visibilidade privada Atributo é acessado por operações da própria classe
24
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Visibilidade:
Aluno
+ Nome# Endereço- Créditos
25
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Nome do atributo Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas
Aluno
+ Nome# EndereçoDoAluno- CréditosObtidos
26
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Tipo de Expressão Opcional Tipo de implementação do atributo
Inteiro String Real ... Aluno
+ Nome: string# EndereçoDoAluno: string- CréditosObtidos: int
27
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Valor Inicial Valor inicial do atributo Opcional
Aluno
+ Nome: string# EndereçoDoAluno: string- CréditosObtidos: int = 0
28
Definição de Atributos
Notação de atributos
Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}
Propriedade Opcional Maior detalhamento do atributo
Descrição Tipo
Estático Constante Variável
Domínio de Valores
Aluno
+ Nome: string# EndereçoDoAluno: string-CréditosObtidos: int = 0-NumMáximoDeCréditos: int = 70 {constant}
29
Definição de Atributos
Notação de atributos Exemplo
Nome da Classe
AtributoAtributo:tipo do dadoAtributo:tipo do dado = valor inicial
Aluno
NomeEndereço:stringCréditos:inteiro = 0
Uso Fast CasePrática
30
Definição de Serviços
Objetivo Identificar e formalizar a definição das operações de cada
classe presente no diagrama de classes
O que considerar? Necessidade de cada classe em realizar operações que
atendam às funcionalidades do sistema
31
Definição de Serviços
Representação Gráfica
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
32
Definição de Serviços
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Visibilidade: Critério de acesso ao serviço Opcional
+ visibilidade pública (default) Serviço pode ser acessado por todos, inclusive por serviços de outras classes
# visibilidade protegida Serviço é acessado apenas pelos serviços da própria classe ou por serviços de classes
dentro de um mesmo pacote
- visibilidade privada Serviço é acessado por operações da própria classe
33
Definição de Serviços
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Visibilidade:
Aluno
NomeEndereçoCréditos
+ InformarNome( ):string# InformarEndereço( ):string- CancelarCréditos( códigoCadeira )
34
Definição de Serviços
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Nome do serviço Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas
Aluno
NomeEndereçoCréditos
+ InformarNome( ):string# InformarEndereço( ):string- CancelarCréditos( códigoCadeira )
35
Definição de Serviços
Notação de Serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Parâmetros Lista de valores utilizados pelo serviço
Aluno
NomeEndereçoCréditos
+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira )-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
36
Definição de Serviços
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Expressão de tipo de retorno Tipo do valor de retonor do serviço
Aluno
NomeEndereçoCréditos
+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira )-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
37
Definição de Atributos
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}
Propriedade Opcional Maior detalhamento do serviço
Classificação Construtor:
incializam/constroem instâncias da classe
Destrutor: destróem instâncias da classe
Modificador de atributos: modificam valores de atributos
Seletor de atributos: utilizam mas não modificam valores de atributos
Prés e pós condições Exceções Propriedades dependentes da
linguagem de programação
Aluno
NomeEndereçoCréditos
+ CriarAluno( nome ) { construtor }+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira ) { modificador }-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
38
Definição de Serviços
Persistência Objetos Persistentes – armazenado no banco de dados Objetos transientes – em memória
Construtores e Destrutores Coleta automática de lixo
Serviços para acesso a atributos
Uso Fast CasePrática
39
Identificação de Relacionamentos
Objetivo Identificar associações, agregações e relacionamentos de
generalização/ especialização (herança) entre classes
O que considerar? Necessidade do sistema em “lembrar” relacionamentos entre
as classes
O que procurar? Todos os relacionamentos entre instâncias de classes que
sejam relevantes para o sistema
40
Identificação de Relacionamentos
Associação Relacionamentos simples entre instâncias de classes
Descrevem algum vínculo, relacionamento ou interdependência entre instâncias de classes
41
Identificação de Relacionamentos
Associação - Representação Unária
Binária
Pessoa
Aluno
É pai de
0..*
1..2
Cadeira0..* Cursa
0..*
42
Identificação de Relacionamentos
Associação - Representação N-ária
Avaliação
Funcionário Quesito
* *
Projeto
*
43
Identificação de Relacionamentos
Agregação
Relacionamentos com uma semântica bem definida: a de composição
Relacionamentos que representem: montagens e suas partes
Ex. Um carro e suas partes
(motor, chassi, rodas …) recipientes e seus conteúdos
Ex. Vôo e passageiros conjuntos e seus membros
Ex. Turma e alunos
44
Identificação de Relacionamentos
Agregação - notação
EmpresaDepartamento
“Todo”“Parte”
1..*
1
45
Identificação de Relacionamentos
Herança O que procurar?
Diferenças e similaridades entre classes Várias classes com características comuns
Notação Veículo
Ano Cor
Carro Ônibus Caminhão
Ano Cor No de Assentos
Ano Cor Capacidade
Ano Cor No de Portas
46
Generalização / Especialização
O que procurar? (cont.) Uma classe com atributos aplicáveis apenas a subconjuntos de suas
instâncias
Funcionário
NomeNascSalárioProjeto
Funcionário_Maria Nome = ‘Maria’ Nasc = ‘16/02/70’ Salário = 2500
Projeto = ‘’
Funcionário_João Nome = ‘João’ Nasc = ‘10/05/65’ Salário = 3000
Projeto = ‘Call Center’Gerente
Projeto
47
Identificação de Relacionamentos
Nome/Semântica do relacionamento
Multiplicidade 1 somente um * muitos (zero ou mais) 0..* muitos (zero ou mais) 0..1 opcional (zero ou um) 1..* maior ou igual a um M..N sequência específica
Ex. 1..27 (de um a 27), 23..* (acima de 23)
Papéis Navegabilidade Restrições
Uso Fast CasePrática
48
Diagramas de Estado
Objetos de uma classe possuem um “ciclo de vida” São gerados Assumem posições (estados) Dão origem a outros objetos Deixam de existir (são destruídos)
O estudo dos diferentes estados de um objeto de uma classe e das transições entre estes estados permite o levantamento de serviços adicionais a serem incorporados na classe
49
Diagramas de Estado
Notação
Estado: condição ou situação durante a vida de um objeto no qual
satisfaz alguma condição, executa alguma atividade em resposta a um evento ou espera pela ocorrência de algum evento.
<nome do estado>
Início
Fim
50
Diagramas de Estado
Notação
Evento: Ocorrência que deve ser reconhecida e gerar uma reação pelo
sistema em estudo. A ocorrência de um evento provoca a transição entre estados de
instâncias de alguma classe pertencente ao sistema
Estado 1
Estado 2
evento
51
Diagramas de Estado
Exemplo – Classe PedidoDeCompra
Pedido Registrado
Envio de pedido
Pedido cancelado
Pedido em Análise
Requisição de análise de
pedido
Pedido Pendente
Pedido não pode ser atendido neste
momento Pedido já pode ser atendido
Pedido Aprovado
Pedido é aprovado
Pedido cancelado
Pedido cancelado
Pedido cancelado
Pedido Atendido
Atendimento a Pedido
Uso Fast CasePrática
52
Diagramas de Sequência
Objetivo Identificar o envio de mensagens entre os objetos das
diversas classes do diagrama em resposta a cada caso de uso
Um diagrama de sequência mostra interações de objetos organizadas em uma sequência de tempo e de mensagens trocadas
53
Diagrama de Sequência
um objeto
outro objeto
Tempo(top-down)
ativação
Linha de vida
criar
mensagem
retorno
excluir
Símbolo de exclusão
ator
(evento)
54
Diagrama de Sequência
Vendedor
Janela Pedido Nota Fiscal Fatura Cliente
1: situação financeira do cliente 2: obter pedidos
(cliente)
3: obter notas fiscais (pedido)
4: obter faturas vencidas (nota fiscal)
5: obter faturas a vencer (nota fiscal)
6: obter limite de crédito (cliente)
Uso Fast CasePrática