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
Download

Análise