Buscar

Aula 14 Projeto de Software OO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Projeto de Software 
Orientado a Objetos
Marcos Dósea
dosea@ufs.br
Atualizado por:
Breno Santos
breno.itatechjr@gmail.com
Agenda
• Introdução.
• Projetar Caso de Uso.
• Projetar Subsistemas.
• Projetar Classes.
Introdução
• Onde estamos?
Introdução
• Análise x Projeto:
Análise Projeto
Foco no problema. Foco na solução.
Comportamento caixa
preta.
Detalha operações e
atributos dos objetos.
Estrutura geral da
arquitetura do sistema.
Representação próxima
do código.
Requisitos Funcionais.
Requisitos Funcionais e
Não Funcionais.
Modelo simples. Modelo complexo.
Introdução
• O que faremos?
– Projetar o Software.
Fluxo de Análise e Projeto
Analisar 
caso de usoProjetista
Projetista de 
banco de 
dados
Revisar 
projeto
Projetar 
caso de uso
Arquiteto
Revisor do 
projeto
Projetar 
base de 
dados
Projetar 
arquitetura
Projetar 
subsistema
Projetar 
classes
Projetar Caso de Uso
• Refinar as realizações de casos de uso
substituindo os elementos de análise
(elaboradas na análise de casos de uso)
por elementos de projeto definido no
mapeamento do projeto da arquitetura.
• Incorporar persistência nas realizações.
• O modelo final serve de referência para
a implementação do caso de uso.
Projetar Caso de Uso
1) Refinar as realizações de casos de uso.
2) Simplificar os diagramas de interação.
1) Refinar as Realizações de Caso
de Uso
• Substitui as classes de projeto e/ou
interfaces dos subsistemas associados,
seguindo as recomendações da
arquitetura.
• Incorporar a persistência.
• Atualizar os diagramas que realizam o
caso de uso:
– Diagramas de Interação.
– Diagramas de Classes.
1) Refinar as Realizações de Caso
de Uso
• Como era na análise?
 : Balconista
 : TelaDevolverLivro
<<boundary>>
 : ControladorDevolucao
<<control>>
 : Emprestimo
<<entity>>
 : CadastroEmprestimos
<<entity collection>>
1 : devolverLivro()
2
<<create>>
3
4 : devolverLivro()
5 : buscar()
6
7 : calculaMultaPorAtraso()
8 : atualizar()
9
10
11 : resultado()
1) Refinar as Realizações de Caso
de Uso
• Como era na análise?
1) Refinar as Realizações de Caso
de Uso
• Como ficou no projeto?
– Para projetar as classes, deve-se obedecer
as regras de mapeamento entre classes de
análise e classe de projeto definidas pelo
arquiteto.
– Para cada diagrama de interação de análise,
deve ser criado um diagrama de interação
com as classes de projeto.
– É recomendado também criar o diagrama de
classes de projeto que realizam o caso de
uso.
Lembrando a Arquitetura…
GUI
Negocio
Dados
ITela
TelaDevolverLivro
+processa()
Fachada
IControladorLivro
IFachada
ControladorLivro ControladorAluno
IControladorAluno
IRepositorioEmprestimo
RepositorioEmprestimoBDR
+getInstance()
1) Refinar as Realizações de Caso
de Uso
• Como ficou no projeto?
1) Refinar as Realizações de Caso
de Uso
• Como ficou no projeto?
2) Simplificar os diagramas de
interação
• Identifique subfluxos comuns nos diagramas
de interação e encapsule-os em subsistemas
(possivelmente novos).
• Substitua os elementos internos pela
interface dos subsistemas (nos diagramas).
• Interações internas ao subsistema serão
descritas na atividade "Projetar subsistema".
2) Simplificar os diagramas de
interação
• Quando encapsular fluxos em subsistemas?
– Quando um subfluxo:
• ocorre em vários casos de uso.
• possui potencial de reuso.
• é complexo e de fácil encapsulamento.
• é responsabilidade de uma equipe/pessoa
específica.
• produz um resultado bem definido.
• é encapsulado dentro de um componente de
implementação.
• É importante nessa etapa estabilizar a
interface.
Projetar Caso de Uso
Classes de projeto
Projetar
Caso de Uso
Caso de uso
Realização de
caso de uso
Subsistemas de projeto
Documento de
requisitos
Realização de
caso de uso
Exercício Sala I
Faça o projeto de casos de uso do sistema
de biblioteca.
Fluxo de Análise e Projeto
Analisar 
caso de usoProjetista
Projetista de 
banco de 
dados
Revisar 
projeto
Projetar 
caso de uso
Arquiteto
Revisor do 
projeto
Projetar 
base de 
dados
Projetar 
arquitetura
Projetar 
subsistema
Projetar 
classes
Projetar Subsistemas
• Identificar elementos internos ao
subsistema (classes e outros
subsistemas) que realizem a interface
do subsistema.
• Este processo pode gerar novas
dependências do subsistema com
elementos externos.
• A atividade é realizada uma vez para
cada subsistema, podendo ser recursiva
(gerando outros subsistemas).
Projetar Subsistema
1) Identificar elementos de projeto do
subsistema (classes e/ou outros
subsistemas) e distribuir o
comportamento do subsistema entre
eles.
2) Documentar os elementos do
subsistema.
3) Descrever as dependências do
subsistema com elementos externos.
1) Identificar elementos de projeto do
subsistema e distribuir o comportamento do
subsistema entre eles
• Identifique novas classes e subsistemas
que, cooperativamente, realizem o
comportamento do subsistema.
– crie novos elementos de projeto, ou reuse
elementos existentes.
• O comportamento do subsistema pode
ser identificado a partir das operações
na interface.
– As operações podem ser realizadas por
classes internas ou subsistemas internos.
1) Identificar elementos de projeto do
subsistema e distribuir o comportamento do
subsistema entre eles
• Desenvolva um ou mais diagramas de
interação para cada operação da
interface, alocando responsabilidades
aos elementos de projeto.
– os diagramas ajudam a encontrar os
elementos.
• Incorpore persistência, quando aplicável.
2) Documentar os elementos do
subsistema
• A estrutura interna do subsistema é definida
neste passo, através de diagrama(s) de classe,
incluindo os relacionamentos entre elementos
de projeto.
• A técnica usada é a mesma usada na atividade
"Analisar caso de uso".
– As mensagens trocadas entre os objetos apontam
as responsabilidades.
– Os links entre objetos indicam os relacionamentos.
3) Descrever as dependências do
subsistema
• Os passos anteriores identificaram os
elementos internos, com as respectivas
responsabilidades, e as associações
entre esses elementos.
• O objetivo aqui é documentar
associações com elementos externos
necessários à realização da interface do
subsistema.
3) Descrever as dependências do
subsistema
• Dependência de um Subsistema.
• Dependência de um Pacote.
Fornecedor
IFornecedor
Cliente
Cliente Util
Projetar Subsistemas
Classes de projeto
Projeto de 
Subsistema
Realização de
caso de uso
Subsistemas e interfaces de projeto
Subsistemas e interfaces de projeto
(atualizado)
Realização de
caso de uso
(atualizado)
Exercício Sala II
Faça o projeto dos subsistemas do
sistema de biblioteca.
Fluxo de Análise e Projeto
Analisar 
caso de usoProjetista
Projetista de 
banco de 
dados
Revisar 
projeto
Projetar 
caso de uso
Arquiteto
Revisor do 
projeto
Projetar 
base de 
dados
Projetar 
arquitetura
Projetar 
subsistema
Projetar 
classes
Projetar Classes
• Realizado para cada classe identificada.
• Detalha a estrutura interna (atributos e
operações) das classes de projeto.
• Identifica classes e relacionamentos
adicionais.
• Garante que as classes fornecem o
comportamento necessário à realização dos
casos de uso.
• Atenção para os requisitos não funcionais.
• Na verdade, essa etapa revê tudo que já foi
feito adicionando detalhes.
Projetar Classes
1) Identificar classe de Projeto.
2) Definir atributos.
3) Definiroperações.
4) Refinar relacionamentos.
1) Identificar Classes de Projeto
• Revisar mapeamento entre as classes de
análise e projeto.
– Todas as classes de fronteira foram
mapeadas corretamente?
– Todas as classes de controle foram
mapeadas corretamente?
– Todas as classes de entidade foram
mapeadas corretamente?
2) Definir Atributos
• Onde encontrar atributos?
– Documento de Requisitos.
– Modelo de Negócio.
– Glossário.
• É necessário criar atributos derivados?
– Exemplo: Criar o atributo média do aluno ou
calcular a média sempre que necessário?
2) Definir Atributos
• Verificar ainda nos atributos…
– O tipo foi definido?
– É necessário valor inicial?
– A visibilidade foi definida?
• Visibilidade privada por padrão.
– O escopo foi definido?
• Atributos de instância.
• Atributos de classe.
3) Definir Operações
• Mapear as operações encontradas em
análise para operações nas classes de
projeto.
• Deve-se verificar ainda…
– Nome, assinatura e descrição da operação.
– Visibilidade.
– Escopo da operação.
• Operação de classe.
• Operação de instância.
3) Definir Operações
• Deve-se verificar ainda…
– Parâmetros das operações.
• Foram todos definidos?
• Os tipos foram definidos?
• Quanto menos parâmetro no método, mais fácil
de entender e reutilizar.
• Exemplo: É melhor passar um objeto do tipo
Aluno ao invés de passar como parâmetro todos
os dados do aluno (matrícula, nome, endereço,
etc).
4) Refinar Relacionamentos
• Detalhar e avaliar as associações entre
classes quanto ao:
– Tipo.
– Navegabilidade.
– Multiplicidade.
4) Refinar Relacionamentos
• Quanto ao tipo das associações:
– Dependência.
– Associação.
– Agregação.
– Composição.
– Generalização.
Menor nível de
acoplamento
Maior nível de
acoplamento
4) Refinar Relacionamentos
• Quanto a navegabilidade:
– Quais as direções são necessárias?
– A análise dos diagramas de interação é
muito importante nessa definição.
4) Refinar Relacionamentos
• Quanto a multiplicidade:
– Simples de definir, mas essencial para
entender o modelo.
– Quando a multiplicidade é maior que zero,
siginifica que a classe irá trabalhar com uma
coleção do objeto.
Projetar Classes
Classes de projeto
Projetar 
classesRealização de
casos de uso
Requisitos não 
funcionais
Classes de projeto
Modelo de 
análise e projeto
Exercício Sala III
Faça o projeto das classes do sistema de
biblioteca.
Projeto – ES
Criar o modelo de projeto do
sistema proposto.

Outros materiais