Engenharia de Software
Alexandre Vasconcelos,
André Santos, Augusto
Sampaio, Hermano Moura,
Paulo Borba
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Tópicos
1 - Visão Geral de Orientação a Objetos e UML
2 - Visão Geral do Fluxo de Análise e Projeto
3 - Atividade Analisar de Caso de Uso
4 - Atividade Projetar Arquitetura
5 - Atividade Projetar Caso de Uso
6 - Atividade Projetar Subsistema
7 - Atividade Projetar Classe
Aspectos de Concorrência, Distribuição e Projeto
de Base de Dados não serão abordados
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Referências
• Descrição do fluxo de análise e projeto
– Link para o RUP a partir da página do curso
• Capítulos 8 e 9 do livro The Unified Software
Development Process
– Uma observação importante é que o CD do RUP
apresenta um único fluxo para análise e projeto,
enquanto no livro são dois fluxos independentes
• The Unified Modeling Language User Guide
– Introdução e consultas eventuais à notação de UML
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
1 - Visão Geral de
Orientação a Objetos e UML
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Objetivos
• Apresentar os princípios do paradigma de
orientação a objetos
• Apresentar os conceitos de orientação a
objetos com a notação UML
correspondente
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Princípios básicos de OO
•
•
•
•
Abstração
Encapsulamento
Modularidade
Herança
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Abstração
• Construção de um modelo para
representação de uma realidade
• Concentração nas características
essenciais, gerenciando complexidade
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Abstração - Objetos do mundo real
gado
cliente
automóvel
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Abstração - construção de um modelo
para a realidade
Automovel
modelo
preco
...
atualizaPreco()
...
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Encapsulamento
• Elimina dependência de implementação,
escondendo-a do cliente
• Uso de interfaces
• Mudanças internas não têm impacto sobre
os clientes
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Encapsulamento - Objeto televisão
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Encapsulamento: Objeto conta bancária
Crédito
Saldo
Número
875,32
21.342-7
Débito
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Modularidade
• Decomposição de um problema em
pequenos pedaços, para gerenciar
complexidade
• Cada conceito independente deve ser
representado por um módulo
• Construção de módulos desacoplados
• Dividir para conquistar ...
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Modularidade
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Herança
• Criação de hierarquias de abstração
• Permite ordenar hierarquias relacionadas
• Base conceitual para permitir
extensibilidade do software
• Reuso de código e comportamento
(subtipo)
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Herança
Figura
Conta
Polígono
Poupança
Triângulo
Retângulo
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
ContaEspecial
Herança: Objeto poupança
Crédito
Saldo
Número
875,32
21.342-7
R. Juros
Débito
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Conceitos básicos de OO
•
•
•
•
•
•
•
Objeto
Classe
Interface
Componente
Pacote
Subsistema
Relacionamentos
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Classe
• Descrições de objetos
com propriedades e
comportamento comuns
• Abstração que
– enfatiza o que é relevante
– suprime o que não interessa
• Classes são fábricas de
objetos
• Objetos são agrupados
em classes
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Classes de Objetos
• Quantas classes temos aqui?
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fonte: Rational
Classe de Contas Bancárias
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Classe em UML
Conta
Nome da Classe
Atributos
Operações
Conta
numero
saldo
credito()
debito()
getSaldo()
getNumero()
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
estrutura
comportamento
Objeto
• Modelo de um objeto real
– entidade física, conceitual ou
de software
• Possui comportamento,
estado e identidade
• Exemplo: objetos conta e
poupança apresentados
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Objeto em UML
: Conta
Apenas o nome da
classe
ContaSaque :
Conta
ContaSaque
Apenas o nome do
objeto
Nome da classe e do
objeto
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Objeto em UML
Objeto
Valor do Atributo
: ContaSaque
numero = 21.342-7
saldo = 875,32
Conta
numero
saldo
: ContaDeposito
numero = 23.025-1
saldo = 500,00
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Polimorfismo
• Escondendo diferentes implementações
através de uma única interface
Manufacturer A
Manufacturer B
Manufacturer C
interface bem
definida
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fonte: Rational
Interface
• Interfaces
formalizam
polimorfismo
• Interfaces permitem
o uso de arquitetura
baseada em
componentes
<<interface>>
Círculo
Forma
Desenhar
Mover
ModificarTamanho
Rotacionar
Pirâmide
Cubo
Relacionamento de realização
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fonte: Rational
Exemplo: Repositório de Contas
<<interface>>
ListaContas
Repositorio
Incluir
Remover
credito
debito
RepositorioBDR
RepositorioBDOO
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fonte: Rational
Interface
• Interfaces definem um tipo especificando
apenas a assinatura de seus métodos
• Interfaces não possuem atributos e seus
métodos não têm corpo
• Classes implementam interfaces
– provêem implementação para os métodos
especificados em uma interface
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Interface em UML
Círculo
Representação
com ícone
Pirâmide
Forma
Representação
Canônica
<<interface>>
Forma
Desenhar
Mover
ModificarTamanho
Rotacionar
Cubo
Círculo
Pirâmide
Cubo
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fonte: Rational
Classe abstrata
• Classe abstrata é aquela que não possui
instância
• Em geral, possui pelo menos um método
abstrato
• Métodos abstratos não têm corpo
– devem ser implementados em subclasses não
abstratas
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Classes abstratas x Interfaces
• Herança de tipos x herança de código
• Classes descrevem propriedades
fundamentais de um objeto
• Interfaces descrevem papéis
desempenhados por um objeto em
determinadas situações
• Interfaces são úteis para implementar
herança múltipla
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Componente
• Parte não trivial, quase independente,
substituível de um sistema, que provê a
realização de (uma/um conjunto de) interface(s)
• Exemplos
– um código fonte
– um componente de tempo de execução
– um componente executável
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Componente em UML
Source File
Name
<<DLL>>
Component
Name
<<EXE>>
Executable
Name
Component
Interface
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Pacote
• Mecanismo para organizar
elementos em grupos
• Facilita entendimento do
sistema
• Favorece modularidade e reuso
em larga escala
• Essencial para estruturar
sistemas complexos
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Package Name
Coesão e Acoplamento
• Acoplamento é a medida de quão
conectadas duas classes são
– cuidado com herança
• Coesão é a medida de quão autocontida uma classe é
• Sistemas devem ter baixo acoplamento
e alta coesão
– bom para manutenção
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Subsistema
• União de
– pacote (agrupa outros elementos)
– classe (comportamento)
• Realiza uma ou mais interfaces, que
definem o seu comportamento
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Subsistema em UML
Realização
Subsistema
<<subsystem>>
Interface
Subsystem Name
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Subsistemas e Componentes
• Ambos encapsulam um
comportamento modelado
por interfaces
• Subsistemas representam
componentes no modelo de
projeto
• Componentes são a
realização física dos
subsistemas
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Projeto
<<subsystem>>
Nome do
subsistema
Implementação
Nome do
componente
Relacionamentos
• Associação
– simples
– agregação
– composição
• Dependência
• Generalização
• Realização
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Associação
• Relação estrutural entre classes
Nome da associação
Pessoa
trabalha
Empresa
Associação
Papéis
Classe
Pessoa
Empresa
Empregado Empregador
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Agregação
• Tipo especial de associação
• Relacionamento todo-parte
• O todo possui um nível de abstração maior que a
parte
Todo
Parte
Empresa
Departamento
Agregação
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Composição
•
•
•
•
Tipo especial de agregação
Relação de posse mais forte
O todo é responsável pela criação da parte
A parte não vive sem o todo
Todo
Parte
Empresa
Departamento
Composição
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Dependência
• Relacionamento não estrutural (uso)
– mais fraco que associação
• Uma dependência entre dois elementos indica
que mudança em um elemento pode causar
mudanças no outro
LeitoraCartao
lerCartao (cartao)
Cartão
Relacionamento
de Dependência
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Dependência
• Pode existir relacionamento de dependência
entre vários elementos de UML
Classe
Cliente
Pacote
PacoteCliente
Componente
Fornecedor
Cliente
PacoteFornecedor
Fornecedor
Dependência
Fonte: Rational
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Exercício - Relacionamentos
• Modele os relacionamentos existentes entre as
classes abaixo:
Universidade
Estudante
Departamento
Disciplina
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Instrutor
Multiplicidade
• Multiplicidade define quantos objetos
participam do relacionamento
– O número de instâncias de uma classe relacionada
a uma instância de outra classe
– Especificado em cada uma das pontas da
associação
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Tipos de Multiplicidade
• Não especificada
• Exatamente um
1
• Zero ou mais
0..*
• Muitos (mesmo que 0..*)
*
• Um ou mais
1..*
• Zero ou um
0..1
• Intervalo determinado
2..4
• Valores múltiplos
2, 4..6
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Exemplo: Multiplicidade
Multiplicidade
Empresa
1
1..*
Pessoa
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Navegação
• Especifica a direção da associação
• Associações e agregações são bidirecionais
por default, mas é desejável que a navegação
seja restringida a apenas uma direção
• Associações bidirecionais são mais difíceis de
implementar
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Exemplo: Navegação
Empresa
1
1..*
Pessoa
Navegação
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Exercício - Multiplicidade
• Acrescente a multiplicidade nos
relacionamentos encontrados no exercício
anterior.
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Generalização
• Relacionamento entre classes onde uma
classe compartilha a estrutura (atributos e
relacionamentos) e comportamento
(operações) de outras classes
• Define uma hierarquia de abstrações
• Relacionamento “é um tipo de” (is-a-kind-of)
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Generalização
• Uma subclasse pode
– adicionar atributos, operações e
relacionamentos
– redefinir operações herdadas
• Tipos de herança: simples e múltipla
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Herança Simples
• Classes herdando de apenas uma outra classe
Figura
Superclasse
(pai)
Subclasses
cor
largura da linha
desenhar()
girar(graus)
selecionar()
Círculo
raio
centro
desenhar()
Relacionamento
de Generalização
Retângulo
vertices
desenhar()
diagonal()
Quadrado
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Herança Múltipla
• Classes herdando de mais de uma classe
ObjetoVoador
Animal
Herança
múltipla
Avião
Helicóptero
Pássaro
Lobo
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Cavalo
Fonte: Rational
Herança Múltipla
• O que acontece quando as
superclasses possuem o mesmo
método (métodos com o mesmo
nome)?
• O que acontece quando se tenta
executar um método que não está
definido na subclasse? Em que
hierarquia de superclasses deve-se
procurar o método?
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Realização
• Indica que um elemento serve como contrato
que o outro deve seguir
Exemplos:
Classe
Componente
Subsistema
Realização
Caso de uso
Realização de Caso de uso
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Exercício - Generalização
• Modele a hierarquia de classes de uma
aplicação bancária com contas correntes
(contas comuns, sem cheque especial),
poupanças e contas especiais (contas com
certo crédito).
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Mecanismos adicionais de UML
•
•
•
•
Estereótipos
Notas
Propriedades (Tagged values)
Restrições
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Estereótipos
• Mecanismo utilizado para estender os
elementos de UML
• Define um novo modelo de elemento em
termos de outro já existente
• Como
– criando um novo ícone
– utilizando a notação <<novo_elemento>>
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Estereótipos - Exemplo
• Classes de fronteira:
<<boundary>>
ClasseFronteira
ClasseFronteira
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Notas
• Anotação utilizada para adicionar
informação a diagramas
– Pode ser associada a qualquer elemento de UML
– Pode ser ligada a um elemento com uma linha
tracejada
Exemplo:
LeitoraCartao
Esta classe é uma abstração
do dispositivo de hardware
que será usado para ler
efetivamente as informações
do cartão magnético.
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Propriedades (Tagged Values)
• Servem para estender elementos UML,
adicionando informações sobre eles
• Exemplos já definidos em UML:
– Persistence
– Location (ex: no cliente, no servidor)
Cliente
{persistence}
LeitoraCartao
{location=server}
• Você pode criar
suas próprias propriedades
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Paradigma de Orientação a Objetos
• Benefícios
– Favorece modularidade, extensibilidade,
compatibilidade e reuso, suportando a
evolução do sistema
– Aproxima-se do mundo real
– Uso do mesmo conceito em todas as fases
do desenvolvimento
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Respostas dos Exercícios
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Relacionamentos
Resposta do exercício
Universidade
coordena
Departamento
vinculado
Estudante
alocado no
inscrito
Disciplina
ministra
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Instrutor
Multiplicidade
Resposta do exercício
Universidade
Departamento
1
coordena
0..1
1..*
1..*
1..*
1..*
vinculado
alocado no
1..*
*
Estudante
Disciplina
inscrito
*
1..*
*
ministra
*
1..*
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Instrutor
0..1
Generalização
Resposta do exercício
Conta
Conta-corrente
Poupança
Conta especial
Fluxo de Análise e Projeto
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Download

Fluxo de Análise e Projeto 1 - Centro de Informática da UFPE