Upload
internet
View
105
Download
1
Embed Size (px)
Citation preview
Projetar Arquitetura
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 2
Objetivos
Apresentar os passos necessários para realizar a atividade projetar arquitetura e discutir seus artefatosApresentar o padrão de arquitetura em camadasApresentar e exercitar o uso de padrões de projetoApresentar o Padrão MVCConsiderações sobre concorrência e distribuição
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Arquiteto de Informação
Análise e Projeto OO com UML e Padrões| 3
Analisar Casos de Uso
Revisar Projeto
Projetar Arquitetura
Projetista deBanco de Dados
Arquiteto de Software
Revisor de projeto
Projetar Casos de Uso
Projetar Subsistemas
Projetar Base de Dados
Analista deSistemas
CheckList bla bla
bla
blabla
Projetar classes
Prototipar Interface gráfica
Analisar Serviços
ProjetarServiços
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 4
O que foi feito até agoraAnálise de caso de uso - para cada caso de uso:
Identificação das classes de análise (fronteira, entidade e controle)
Identificação das classes persistentes
Distribuição do comportamento do caso de uso entre as classes
• Elaboração do diagrama de seqüência
• Geração do diagrama de colaboração
Identificação das responsabilidades das classes
Identificação dos atributos e relacionamentos
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 5
Objetivos desta atividade
Avaliar o conjunto das classes de análise
Definir elementos de projeto (classes de projeto, cápsulas e subsistemas) e organizá-los em pacotes
Definir a estrutura da aplicação
No final do projeto da arquitetura tudo deve estar pronto para que os projetistas possam detalhar as realizações dos casos de uso de maneira uniforme!
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 6
Visão geral dos artefatos
Arquiteto Projetar Arquitetura
Documento da
Arquitetura
Documento de
Requisitos
Mapeamento das Classes de Análise em
Elementos de Projeto
Modelo de Análise e Projeto (classes de projeto, cápsulas e
subsistemas)
Modelo de Análise e Projeto
(classes de análise)
Modelo de Casos de Uso
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 7
Passos para Projetar Arquitetura
1. Mapear classes de análise em elementos (classes, cápsulas e subsistemas) de projeto
2. Identificar oportunidades de reuso3. Definir a estrutura da aplicação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 8
Passo 1: Mapear classes de análise em elementos (classes, cápsulas e
subsistemas) de projeto
Identificar classes de projetoIdentificar subsistemasEspecificar a interface dos subsistemasFazer o mapeamento1 classe de análise pode dar origem a 0 ou mais elementos de projeto
Mapeamento m : n
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 9
Identificando classes de projeto
Uma classe de análise simples, que representa uma única abstração, é mapeada para uma única classe de projeto Exemplo: classes de entidade
Classes de análise muito simples podem até ser combinadas em uma única classe de projetoEm geral, classes de análise complexas podem ser divididas em várias classes ou transformadas em um pacote ou subsistema
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 10
QIB – Identificando classes de projeto
Classe Conta Tem duas responsabilidades distintas: controle de
acesso e conta bancária
Na realidade, modelam duas entidades diferentes
A separação favorece o reuso Por exemplo, ContaCorrente é utilizado para clientes
que não têm acesso à internet.
1
1
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 11
Identificando subsistemas
Antes, vamos revisar alguns conceitos...
Qual a diferença entre subsistemas e pacotes?
Como se descreve o comportamento de um subsistema?
Qual a grande vantagem associada aos subsistemas?
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 12
<<subsystem>>Nome subsistema
<<subsystem>>Nome subsistema
Atributos
Realização
Subsistemas e interfaces: notação
Nome da interface
Métodos
<<interface>>Nome da interface
Atributos
Métodos
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 13
Por que usar subsistemas?
Subsistemas permitem dividir o sistema em partes independentes (que se tornarão componentes)
Cada subsistema pode ser desenvolvido, testado e possivelmente implantado independentemente dos demaisUm subsistema pode representar uma abstração (no projeto) de produtos ou sistemas externos que serão incorporados na implementação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 14
Identificando subsistemas
Classes de análise Classes de fronteira (interfaces com
sistemas externos e com usuários)
Classes que fornecem serviços complexos
Componentes reusáveis Software de comunicação
Suporte ao acesso a BD
Estruturas de dados
Bibliotecas de utilitários
Produtos específicos da aplicação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 15
<<subsystem>>Subsistema X
Identificando subsistemas
Classe A
Y()Z()
Y()Z()
<<interface>>
Interface A
Classe complexa
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 16
Interface <<subsystem>>nomeSubsistema
FachadaSubsistema
ISubSistema
Além da interface, é destacada uma classe fachada de cada subsistema
A classe fachada
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 17
Análise
Projeto
QIB – Efetuar Pagamento do Qualiti Card
Identificando subsistemas
<<boundary>>ComunicacaoOperadoraCartao
enviar()
<<subsystem>>SubsistemaComunicacao
OperadoraCartaoISubsistemaComunicacaoOperadoraCartao
enviar()
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 18
QIB – Efetuar Pagamento do Qualiti Card
ISubsistemaComunicacaoOperadoraCartao
enviar()
FachadaComunicacaoOperadoraCartao
PagamentoCartao
Contexto do subsistema
ControladorPagamentoQualitiCard
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 19
Passo 2. Identificar oportunidades de reuso
Internas ao sistema Similaridades entre pacotes e subsistemas
Externas ao sistema Componentes disponíveis no mercado
Componentes de aplicações já desenvolvidas
Componentes que podem se tornar reusáveis para outros projetos
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 20
Identificando oportunidades de reuso
A partir das interfaces de subsistemas ou componentes existentes analisar onde estes podem ser reutilizados Para um candidato a subsistema Procure interfaces similares (podendo requerer
engenharia reversa de subsistemas existentes)
Tente adaptar a interface nova às existentes, ou tornar as existentes mais gerais
Substitua a interface nova por existentes
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 21
Passo 3. Definir a estrutura da aplicação
Definir as camadas da aplicaçãoDeterminar o meio de armazenamento que será utilizadoAgrupar as classes, cápsulas e protocolos em pacotes e especificar a fachada da aplicação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 22
Definir as camadas da aplicação
O arquiteto pode seguir um padrão já existente para estruturar a aplicaçãoSe o arquiteto adotar uma estrutura diferente do padrão, deve descrevê-la no Documento da ArquiteturaO arquiteto também pode definir novos padrões ou atualizar orientações já existentes
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 23
Estruturação em camadas
Separação do código: interface com o usuário (GUI)
comunicação
regras de negócio
acesso a dadosInterface com o usuário
(GUI)
Comunicação
Negócio
Dados
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 24
Benefícios
Modularidade: Dividir para conquistar
Separação de conceitos
Reusabilidade
Extensibilidade
Mudanças em uma camada não afetam as outras, desde que as interfaces sejam preservadas plug-and-play
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 25
Benefícios
Uma mesma versão de uma camada trabalhando com diferentes versões de outra camada várias GUIs para a mesma aplicação
vários mecanismos de persistência suportados pela mesma aplicação
várias plataformas de distribuição para acesso a uma mesma aplicação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 26
Camada de negócios
Responsável por implementar a lógica do negócio
Classes inerentes ao domínio da aplicação: classes básicas do negócio
coleções de negócio
fachada do sistema
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 27
Classes básicas do negócio
Representam conceitos básicos do domínio da aplicação
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 28
Coleções de negócio
Representam conjuntos de objetos das classes básicasResponsáveis pela inclusão, remoção, atualização e consultas a instâncias das classes básicasEncapsulam as verificações e validações inerentes ao negócio
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 29
Fachada do sistemaSegue o padrão de projeto FacadeRepresenta os serviços oferecidos pelo sistemaCentraliza as instâncias das coleções de negócio e/ou controladoresGerencia as transações do sistema
CadastroContas CadastroPagamentosCartao
CadastroContas
Fachada
CadastroPagamentosCartao
ControladorPagamentoQualitiCard
Fachada
efetuarPagamentoQualitiCard()
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 30
Camada de dados
Responsável pela manipulação da estrutura física de armazenamento dos dadosIsolam o resto do sistema do meio físico usadoClasses coleções de dados
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 31
Coleções de dados
Executam inclusões, remoções, atualizações e consultas a instâncias das classes básicas no meio de armazenamento usadoImplementadas de acordo com o meio físico usado
RepositorioContasBDR
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 32
Coleções de dados
Dependem do meio de armazenamento!
RepositorioContasBDR
RepositorioContasBDOO
RepositorioContasArquivo
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 33
Independência do meio de armazenamento
Como isolar as coleções de negócio de mudanças na coleção de dados correspondente?
RepositorioContasBDR RepositorioContasArquivo
CadastroContas
<<interface>>RepositorioContas
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 34
Interface negócio-dados
Sugestão de serviços
<<interface>>RepositorioContas
inserir(conta: Conta): voidatualizar(conta: Conta): voidremover(conta: Conta): voidconsultarConta(login: String): Conta
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 35
Juntando tudo - Visão geral da arquitetura
GUI / Comunicação
NEGÓCIO
Interfaces negócio-
dados
DADOS
FachadaFachada
TelaLogin
TelaLogin
TelaPagamentoQualitiCard
TelaPagamentoQualitiCard
ControladorLogin
ControladorLogin
ControladorPagamentoQualitiCard
ControladorPagamentoQualitiCard
CadastroPagamentosCartao
CadastroPagamentosCartao
...
ContaInternetContaInternet PagamentoCartao
PagamentoCartao
IRepositorioContasInternet IRepositorioPagamentosCartao
RepositorioPagamentosCartaoBDR
RepositorioPagamentosCartaoBDR
RepositorioPagamentosCartaoBDOO
RepositorioPagamentosCartaoBDOO
RepositorioContasInternetBDR
RepositorioContasInternetBDR
RepositorioContasInternetArqui
vo
RepositorioContasInternetArqui
vo
CadastroContasInternet
CadastroContasInternet
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 36
QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card
Mapeamento entre análise e projetoClasses de Análise Elementos de Projeto
FachadaTelaMenuDataHora
Conta ContaInternetContaCorrente
CadastroContas
CadastroPagamentosCartao CadastroTransacoesIRepositorioTransacoesRepositorioTransacoesBDR
ComunicacaoOperadoraCartao SubsistemaComunicacaoOperadoraCartaoISubsistemaComunicacaoOperadoraCartaoFachadaComunicacaoOperadoraCartao
CadastroContasInternetIRepositorioContasInternetRepositorioContasInternetBDRCadastroContasCorrenteIRepositorioContasCorrenteRepositorioContasCorrenteBDR
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 37
QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card
Projeto da arquitetura
Comprovante
FachadaComunicacaoOperadoraCartao
Hora
Data
PagamentoCartao
numeroFaturacontaBancariavalor
RepositorioContasCorrenteBDR
RepositorioContasInternetBDR
RepositorioPagamentosCartaoBDR
ContaCorrente
ContaInternet
1
1
1
1
IRepositorioContasCorrente
TelaLogin TelaMenu TelaPagamentoQualitiCard
IRepositorioPagamentosCartaoIRepositorio
ContasInternet
ControladorLogin
CadastroContasCorrente
1
1
1
1
Fachada
1
0..n
1
0..n
1
0..n
1
0..n 0..n
1
0..n
1
1
1
1
ISubsistemaComunicacaoOperadoraCartao
CadastroPagamentosCartao
1
1
1
1
CadastroContasInternet
1
1
1
1
1
1
1
1
ControladorPagamentoQualitiCard
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 38
Exercício – Qualiti Internet Banking
Dado: As classes de análise do caso de uso Realizar Doc A tabela de mapeamento e o projeto de arquitetura de
Efetuar Login e Efetuar Pagamento do Qualiti Card Identificar para o Realizar Doc: subsistemas e suas interfaces elementos de projeto (classes e subsistemas)
Produzir: Tabela mapeando as classes de análise nos elementos
de projeto Diagrama de contexto dos subsistemas (opcional) Projeto da arquitetura com incluindo Realizar DOC
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 39
Agrupar as classes em pacotes
À medida que os elementos de projeto são identificados, a complexidade do modelo vai aumentandoPara organizá-lo, os elementos devem ser agrupados em pacotesAs camadas guiam essa organização
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 40
Evite dependências cíclicas
Critérios para definição dos pacotes
Acoplamento e Coesão Agrupa as classes em bibliotecas
Exemplo: cliente, conta, banco, util, etc.
Distribuição – usuário Agrupa as classes por locais de implantação
Exemplo: clienteRecife, clienteSaoPaulo, etc.
Segurança Agrupa as classes por permissão de acesso
Exemplo: gerência, programadores, etc.
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 41
Pacote Global
Pode ser usado por todos os outros pacotes classes utilitárias
Não é necessário explicitar as dependências
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 42
QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card
subsistemaComunicacaoOperadoraCartao
controladores
GUIconta
Organização de pacotes
transacaoutil
<<global>>
protocolos
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 43
QIB – Pacote conta
IRepositorioContasCorrente
<<Interface>>
CadastroContasCorrente<<entity collection>>
1
1
1
1
RepositorioContasCorrenteBDR
ContaCorrente
numerosaldo
getSaldo()debitar()
<<entity>>
ContaInternet
loginsenha
<<entity>>11 11 IRepositorioContasInternet
<<Interface>>
CadastroContasInternet<<entity collection>>
1
1
1
1
RepositorioContasInternetBDR
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 44
QIB – Pacotes
Dependência entre pacotes
<<global>>util
controladores
GUI
conta
<<subsystem>>subsistemaComunicaca
oOperadoraCartao
transacao
ISubsistemaComunicacao OperadoraCartao
protocolos
Cop
yri
gh
t ©
20
06
Qu
alit
i. T
od
os
os
dir
eit
os
rese
rvad
os.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 45
Exercício – Qualiti Internet Banking
Dado: Os elementos de projeto
A estrutura definida para a aplicação
Definir os pacotes da aplicação e os elementos que devem estar presentes em cada pacote (incluir os elementos do caso de uso Realizar DOC)
Elaborar um diagrama mostrando as dependências entre pacotes (opcional