Núcleo de Computação Eletrônica
Curso de Programação de Computadores
Maio a Setembro/2000
Análise e Projeto de Sistemas
Análise OO / UML
Renata Araujo
Ricardo Storino
Ciclo de Vida de Software
Definição dos requisitos
Análise
Documentos são gerados
a cada fase e servem de
entrada para a fase seguinte
Projeto
Implementação
Teste/Avaliação
Implantação
Manutenção
2
Ciclo de Vida - Modelo Cascata
Definição de Requisitos
Intenções
Transformações
Requisitos
do
Software
Análise
Especifica
ção do
Software
Projeto
Projeto
do
Software
Documentos gerados
durante o ciclo de vida
Implementação
Código
do
Software
Teste
Sistema
pronto
para operar
3
Definição de Requisitos
Desejos
Intenções
Procedimentos
Dados
Identificar
Organizá-los de forma coerente
Definir de uma forma geral
Requisitos
do
Software
4
desejos, intenções, procedimentos
atuais e dados;
o que será tratado pelo software
interface com o que fica de fora do
software
Análise do Software
Entendimento e Representação
Requisitos
do
Software
Especificação
do
Software
5
Domínio do problema
Conceitos
Funcionalidades
Casos de uso
Baseado nos fatores críticos de
sucesso do software
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
Documentação
6
Representação gráfica do diagrama de classes do Sistema e das
interações entre os objetos destas classes
Detalhamento e complementação do diagrama de classes do
sistema
Análise Orientada a Objetos
7
Diagramas da UML
Visão Externa
Diagrama de Casos de Uso
Visão de Interação
Visão Estrutural (Estática)
Diagrama de Classes
Visão Comportamental
(Dinâmica)
8
Diagrama de Sequência
Diagrama de Colaboração
Diagrama de Estado
Diagrama de Atividade
Visão da Arquitetura
(Implementação)
Diagrama de Componentes
Diagrama de Implantação
Diagrama de Pacotes
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
Solicitação de
extrato
Ator
9
Interações
Diagramas de Classe
Descrevem a parte estática do sistema, ignorando seu
processamento
Apresentam
Classes (objetos)
Atributos
Relacionamentos
10
Herança
Agregação
Associação
Serviços
Diagramas de Estado
Apresentam as sequências
de estados que um objeto
assume em sua existência
em resposta a estímulos
recebidos
Classe Pedido
Pedido enviado
Pedido Registrado
Pedido para análise requisitado
Pedido em Análise
Complemento das descrições
estáticas de classes
Pedido para aprovação
Pedido em Aprovação
11
Relacionam os possíveis
estados que os objetos de
uma classe podem ter e quais
os eventos que causam
mudanças em seu estado.
Aprovação emitida
Pedido Aprovado
Pedido será atendido
Diagramas de Sequência
Apresentam a interação entre
os objetos no decorrer do
tempo
Janela
Vendedor
1: situação
financeira do
cliente
Pedido
Mostra a sequência de
mensagens entre objetos
Nota Fiscal
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)
12
Fatura
Cliente
Diagrama de Classes
13
Passos para confecção
Identificação de Classes
Identificação de
relacionamentos
Definição de atributos
Definição de serviços
Identificação de Classes
O domínio do problema
Os requisitos da aplicação
14
Um determinado domínio de problemas inclui informações
relativas ao mundo real
Considerados os objetivos da aplicação a ser construída,
apenas um subconjunto dessas informações necessita ser
representado
Identificação de Classes
No mundo real
Cliente
15
Em uma dada
aplicação/sistema
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
Identificação de Classes
No mundo real
Numa aplicação/sistema
Cliente
Cliente
Nome
Time
Nome
Endereço
Carro
Endereço
16
Dependentes
Identificação de Classes
O que procurar?
Objetos
Agentes
Ex. cliente, atendente etc.
Unidades organizacionais
Ex. Pessoas, clientes, turmas, cursos, produtos etc.
Ex. local para entrega, setor etc.
Eventos
Reclamação do cliente, pedido pago etc.
“Quaisquer conceitos que serão armazenados e “lembrados” pelo sistema.”
17
Identificação de Classes
O que Considerar?
Armazenamento necessário
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
18
O sistema precisará armazenar informações sobre os objetos
desta classe?
Todos os atributos identificados para a classe são aplicáveis a
todas as suas instâncias?
Identificação de Classes
Notação de classe
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
19
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)
Prática
20
Uso Fast Case
Definição de Atributos
Objetivo
O que considerar?
21
Identificar e formalizar a definição dos atributos de cada
classe presente no diagrama de classes
Necessidade do sistema em armazenar as características das
instâncias das classes
Definição de Atributos
Representação gráfica
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
22
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)
# 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
23
Atributo pode ser acessado por todos, inclusive por serviços de outras classes
Atributo é acessado por operações da própria classe
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
24
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
25
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
26
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
27
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
28
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}
Definição de Atributos
Notação de atributos
Nome da Classe
Atributo
Atributo:tipo do dado
Atributo:tipo do dado = valor inicial
29
Exemplo
Aluno
Nome
Endereço:string
Créditos:inteiro = 0
Prática
Uso Fast Case
Definição de Serviços
Objetivo
O que considerar?
30
Identificar e formalizar a definição das operações de cada
classe presente no diagrama de classes
Necessidade de cada classe em realizar operações que
atendam às funcionalidades do sistema
Definição de Serviços
Representação Gráfica
Nome da Classe
<lista de atributos>
<Lista de serviços/operações>
31
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)
# 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
32
Serviço pode ser acessado por todos, inclusive por serviços de outras classes
Serviço é acessado por operações da própria classe
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
Nome
Endereço
Créditos
+ InformarNome( ):string
# InformarEndereço( ):string
- CancelarCréditos( códigoCadeira )
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}
Nome do serviço
Obrigatório!!!!
Necessidade de padronização
Clareza de significado
Evitar abreviaturas
Aluno
Nome
Endereço
Cré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}
Parâmetros
Lista de valores utilizados pelo serviço
Aluno
Nome
Endereço
Créditos
35
+ InformarNome( ):string
# InformarEndereço( ):string
-CancelarCréditos( códigoCadeira )
-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
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
Nome
Endereço
Créditos
36
+ InformarNome( ):string
# InformarEndereço( ):string
-CancelarCréditos( códigoCadeira )
-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
Definição de Atributos
Notação de serviços
Visibilidade Nome do Serviço (Parâmetro):
Expressão de Tipo de Retorno
{Propriedade}
Propriedade
37
Prés e pós condições
Exceções
Propriedades dependentes da
linguagem de programação
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
Aluno
Nome
Endereço
Créditos
+ CriarAluno( nome ) { construtor }
+ InformarNome( ):string
# InformarEndereço( ):string
-CancelarCréditos( códigoCadeira ) { modificador }
-AtualizarCréditos( códigoCadeira, ano, número de Créditos )
Definição de Serviços
Persistência
Construtores e Destrutores
38
Objetos Persistentes – armazenado no banco de dados
Objetos transientes – em memória
Coleta automática de lixo
Serviços para acesso a atributos
Prática
Uso Fast Case
Identificação de Relacionamentos
Objetivo
O que considerar?
Necessidade do sistema em “lembrar” relacionamentos entre
as classes
O que procurar?
39
Identificar associações, agregações e relacionamentos de
generalização/ especialização (herança) entre classes
Todos os relacionamentos entre instâncias de classes que
sejam relevantes para o sistema
Identificação de Relacionamentos
40
Associação
Relacionamentos simples entre instâncias de classes
Descrevem algum vínculo, relacionamento ou
interdependência entre instâncias de classes
Identificação de Relacionamentos
Associação - Representação
Unária
Pessoa
0..*
É pai de
1..2
Binária
Aluno
Cadeira
0..*
Cursa
0..*
41
Identificação de Relacionamentos
Associação - Representação
N-ária
Avaliação
*
Funcionário
42
*
Projeto
*
Quesito
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
conjuntos e seus membros
43
Ex. Vôo e passageiros
Ex. Turma e alunos
Identificação de Relacionamentos
Agregação - notação
Departamento
Empresa
1
1..*
“Parte”
44
“Todo”
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
Ano
Cor
No de Portas
45
Ônibus
Ano
Cor
No de Assentos
Caminhão
Ano
Cor
Capacidade
Generalização / Especialização
O que procurar? (cont.)
Uma classe com atributos aplicáveis apenas a subconjuntos de suas
instâncias
Funcionário
Nome
Nasc
Salário
Projeto
Gerente
Projeto
46
Funcionário_Maria
Funcionário_João
Nome = ‘Maria’
Nome = ‘João’
Nasc = ‘16/02/70’
Nasc = ‘10/05/65’
Salário = 2500
Salário = 3000
Projeto = ‘’
Projeto = ‘Call Center’
Identificação de Relacionamentos
Nome/Semântica do relacionamento
Multiplicidade
1
*
0..*
0..1
1..*
M..N
47
somente um
muitos (zero ou mais)
muitos (zero ou mais)
opcional (zero ou um)
maior ou igual a um
sequência específica
Ex. 1..27 (de um a 27), 23..* (acima de 23)
Papéis
Navegabilidade
Restrições
Prática
Uso Fast Case
Diagramas de Estado
Objetos de uma classe possuem um “ciclo de vida”
48
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
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
49
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
evento
Estado 1
Estado 2
50
Diagramas de Estado
Exemplo – Classe PedidoDeCompra
Envio de pedido
Prática
Pedido Registrado
Pedido Atendido
Requisição de
análise de
pedido
Atendimento a
Pedido
Pedido é
aprovado
Pedido em Análise
Pedido não pode ser
atendido neste
momento
Pedido Aprovado
Pedido já pode ser
atendido
Pedido
cancelado
Pedido Pendente
Pedido cancelado
51
Pedido cancelado
Pedido cancelado
Uso Fast Case
Diagramas de Sequência
52
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
Diagrama de Sequência
Tempo
(top-down)
ator
um objeto
(evento)
criar
outro objeto
mensagem
retorno
ativação
excluir
Linha de vida
53
Símbolo de
exclusão
Diagrama de Sequência
Prática
Janela
Pedido
Nota Fiscal
Vendedor
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)
54
Fatura
Uso Fast Case
Cliente