Projetar Arquitetura
Apresentar os passos necessários para
realizar a atividade projetar arquitetura e
discutir seus artefatos
Apresentar o padrão de arquitetura em
camadas
Apresentar e exercitar o uso de padrões de
projeto
Apresentar o Padrão MVC
Considerações sobre concorrência e
distribuição
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 2
Copyright © 2006 Qualiti. Todos os direitos reservados.
Objetivos
Analisar
Serviços
Projetar
Arquitetura
Projetar
Serviços
Revisor de
projeto
Prototipar
Interface
gráfica
Arquiteto de
Informação
Analisar
Casos de Uso
Projetar
Casos de Uso
Check
List
 bla bla
 bla
 blabla
Projetar
Subsistemas
Analista de
Sistemas
Projetar
classes
Revisar
Projeto
Projetar
Base de Dados
Projetista de
Banco de Dados
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 3
Copyright © 2006 Qualiti. Todos os direitos reservados.
Arquiteto de
Software
O que foi feito até agora
-
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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 4
Copyright © 2006 Qualiti. Todos os direitos reservados.
Análise de caso de uso - para cada caso de uso:
Objetivos desta atividade
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!
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 5
Copyright © 2006 Qualiti. Todos os direitos reservados.
Avaliar o conjunto das classes de análise
Visão geral dos artefatos
Modelo de
Casos de Uso
Arquiteto
Modelo de Análise
e Projeto (classes
de análise)
Copyright © 2006 Qualiti. Todos os direitos reservados.
Documento de
Requisitos
Projetar
Arquitetura
Mapeamento das
Classes de Análise
em Elementos de
Projeto
Documento da
Arquitetura
Modelo de Análise e
Qualiti Software Processes
Projeto (classes de
projeto, cápsulas eAnálise e Projeto OO com UML e Padrões| 6
subsistemas)
1. Mapear classes de análise em elementos (classes,
cápsulas e subsistemas) de projeto
2. Identificar oportunidades de reuso
3. Definir a estrutura da aplicação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 7
Copyright © 2006 Qualiti. Todos os direitos reservados.
Passos para Projetar
Arquitetura
Identificar classes de projeto
Identificar subsistemas
Especificar a interface dos subsistemas
Fazer o mapeamento
1 classe de análise pode dar origem a
0 ou mais elementos de projeto
Mapeamento m : n
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 8
Copyright © 2006 Qualiti. Todos os direitos reservados.
Passo 1: Mapear classes de análise em elementos
(classes, cápsulas e subsistemas) 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
projeto
Em geral, classes de análise complexas
podem ser divididas em várias classes ou
transformadas em um pacote ou subsistema
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 9
Copyright © 2006 Qualiti. Todos os direitos reservados.
Identificando classes de projeto
QIB – Identificando classes de
projeto
-
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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 10
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classe Conta
Identificando subsistemas
- Qual a diferença entre subsistemas e pacotes?
- Como se descreve o comportamento de um
-
subsistema?
Qual a grande vantagem associada aos
subsistemas?
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 11
Copyright © 2006 Qualiti. Todos os direitos reservados.
Antes, vamos revisar alguns conceitos...
<<interface>>
Nome da interface
Atributos
<<subsystem>>
Nome subsistema
Métodos
Realização
<<subsystem>>
Nome subsistema
Nome da interface
Atributos
Métodos
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 12
Copyright © 2006 Qualiti. Todos os direitos reservados.
Subsistemas e interfaces:
notação
Subsistemas permitem dividir o sistema em
partes independentes (que se tornarão
componentes)
Cada subsistema pode ser desenvolvido, testado e
possivelmente implantado independentemente dos
demais
Um subsistema pode representar uma abstração (no
projeto) de produtos ou sistemas externos que
serão incorporados na implementação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 13
Copyright © 2006 Qualiti. Todos os direitos reservados.
Por que usar subsistemas?
Identificando subsistemas
- 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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 14
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classes de análise
Classe A
Y()
Z()
<<interface>>
Interface A
<<subsystem>>
Subsistema X
Y()
Z()
Classe complexa
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 15
Copyright © 2006 Qualiti. Todos os direitos reservados.
Identificando subsistemas
A classe fachada
<<subsystem>>
nomeSubsistema
Interface
FachadaSubsistema
ISubSistema
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 16
Copyright © 2006 Qualiti. Todos os direitos reservados.
Além da interface, é destacada uma classe fachada
de cada subsistema
QIB – Efetuar Pagamento do Qualiti Card
Identificando subsistemas
<<boundary>>
ComunicacaoOperadoraCartao
enviar()
Projeto
ISubsistemaComunicacao
OperadoraCartao
enviar()
<<subsystem>>
SubsistemaComunicacao
OperadoraCartao
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 17
Copyright © 2006 Qualiti. Todos os direitos reservados.
Análise
QIB – Efetuar Pagamento do Qualiti
Card
ControladorPagamentoQualitiCard
PagamentoCartao
ISubsistemaComunicacao
OperadoraCartao
enviar()
FachadaComunicacaoOperadoraCartao
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 18
Copyright © 2006 Qualiti. Todos os direitos reservados.
Contexto do subsistema
Passo 2. Identificar
oportunidades de reuso
- 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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 19
Copyright © 2006 Qualiti. Todos os direitos reservados.
Internas ao sistema
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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 20
Copyright © 2006 Qualiti. Todos os direitos reservados.
Identificando oportunidades de
reuso
Definir as camadas da aplicação
Determinar o meio de armazenamento que
será utilizado
Agrupar as classes, cápsulas e protocolos em
pacotes e especificar a fachada da aplicação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 21
Copyright © 2006 Qualiti. Todos os direitos reservados.
Passo 3. Definir a estrutura da
aplicação
O arquiteto pode seguir um padrão já
existente para estruturar a aplicação
Se o arquiteto adotar uma estrutura
diferente do padrão, deve descrevê-la no
Documento da Arquitetura
O arquiteto também pode definir novos
padrões ou atualizar orientações já
existentes
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 22
Copyright © 2006 Qualiti. Todos os direitos reservados.
Definir as camadas da aplicação
Estruturação em camadas
- interface com o usuário (GUI)
- comunicação
- regras de negócio
- acesso a dados
Interface com o usuário
(GUI)
Comunicação
Negócio
Dados
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 23
Copyright © 2006 Qualiti. Todos os direitos reservados.
Separação do código:
Benefícios
- 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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 24
Copyright © 2006 Qualiti. Todos os direitos reservados.
Modularidade:
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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 25
Copyright © 2006 Qualiti. Todos os direitos reservados.
Benefí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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 26
Copyright © 2006 Qualiti. Todos os direitos reservados.
Camada de negócios
Representam conceitos básicos do domínio da
aplicação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 27
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classes básicas do negócio
Representam conjuntos de objetos das classes básicas
Responsáveis pela inclusão, remoção, atualização e
consultas a instâncias das classes básicas
Encapsulam as verificações e validações inerentes ao
negócio
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 28
Copyright © 2006 Qualiti. Todos os direitos reservados.
Coleções de negócio
Segue o padrão de projeto Facade
Representa os serviços oferecidos pelo sistema
Centraliza as instâncias das coleções de negócio e/ou
controladores
Gerencia as transações do sistema
Fachada
Fachada
efetuarPagamentoQualitiCard()
CadastroContas
CadastroPagamentos
Cartao
ControladorPagamento
QualitiCard
CadastroContas
CadastroPagamentos
Cartao
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 29
Copyright © 2006 Qualiti. Todos os direitos reservados.
Fachada do sistema
Responsável pela manipulação da estrutura
física de armazenamento dos dados
Isolam o resto do sistema do meio físico
usado
Classes coleções de dados
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 30
Copyright © 2006 Qualiti. Todos os direitos reservados.
Camada de dados
Executam inclusões, remoções, atualizações e
consultas a instâncias das classes básicas no meio de
armazenamento usado
Implementadas de acordo com o meio físico usado
RepositorioContasBDR
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 31
Copyright © 2006 Qualiti. Todos os direitos reservados.
Coleções de dados
Coleções de dados
RepositorioContasBDOO
RepositorioContasBDR
RepositorioContasArquivo
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 32
Copyright © 2006 Qualiti. Todos os direitos reservados.
Dependem do meio de armazenamento!
Independência do meio de
armazenamento
Copyright © 2006 Qualiti. Todos os direitos reservados.
Como isolar as coleções de negócio de mudanças
na coleção de dados correspondente?
CadastroContas
<<interface>>
RepositorioContas
RepositorioContasBDR
RepositorioContasArquivo
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 33
Interface negócio-dados
Copyright © 2006 Qualiti. Todos os direitos reservados.
Sugestão de serviços
<<interface>>
RepositorioContas
inserir(conta: Conta): void
atualizar(conta: Conta): void
remover(conta: Conta): void
consultarConta(login: String): Conta
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 34
Juntando tudo - Visão geral da arquitetura
TelaLogin
NEGÓCIO
TelaPagamentoQualitiCard
Fachada
ControladorLogin
ContaInternet
Interfaces
negóciodados
CadastroContas
Internet
IRepositorioContasInternet
ControladorPagamentoQualitiCard
CadastroPagamentosCartao
...
PagamentoCartao
IRepositorioPagamentosCartao
DADOS
RepositorioContas
InternetBDR
RepositorioContas
InternetArquivo
RepositorioPagamentos
CartaoBDR
RepositorioPagamentos
CartaoBDOO
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 35
Copyright © 2006 Qualiti. Todos os direitos reservados.
GUI / Comunicação
QIB – Efetuar Login e Efetuar Pagamento do
Qualiti Card
Mapeamento entre análise e projeto
Elementos de Projeto
Fachada
TelaMenu
Data
Hora
Conta
ContaInternet
ContaCorrente
CadastroContas
CadastroContasInternet
IRepositorioContasInternet
RepositorioContasInternetBDR
CadastroContasCorrente
IRepositorioContasCorrente
RepositorioContasCorrenteBDR
CadastroPagamentosCartao
CadastroTransacoes
IRepositorioTransacoes
RepositorioTransacoesBDR
ComunicacaoOperadoraCartao
SubsistemaComunicacaoOperadoraCartao
ISubsistemaComunicacaoOperadoraCartao
FachadaComunicacaoOperadoraCartao
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 36
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classes de Análise
QIB – Efetuar Login e Efetuar Pagamento do
Qualiti Card
Projeto da arquitetura
TelaLogin
TelaMenu
TelaPagamentoQualitiCard
0..n
1
1
1
0..n
Fachada
1
1
1
1
1
ControladorLogin
ControladorPagamentoQualitiCard
1
1
1
1
ISubsistemaComunicacao
OperadoraCartao
1
1
1
1
1
CadastroContasCorrente
CadastroContasInternet
1
Comprovante
PagamentoCartao
CadastroPagamentosCartao
1
numeroFatura
contaBancaria
valor
Data
1
1
1
1
ContaInternet
IRepositorio
ContasInternet
RepositorioContas
InternetBDR
IRepositorio
ContasCorrente
1
ContaCorrente
IRepositorio
PagamentosCartao
1
RepositorioContas
CorrenteBDR
RepositorioPagame
ntosCartaoBDR
Hora
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 37
Copyright © 2006 Qualiti. Todos os direitos reservados.
FachadaComunicacaoOperadoraCartao
0..n
Exercício – Qualiti Internet
Banking
-
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)
-
Tabela mapeando as classes de análise nos elementos de
projeto
Diagrama de contexto dos subsistemas (opcional)
Projeto da arquitetura com incluindo Realizar DOC
Produzir:
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 38
Copyright © 2006 Qualiti. Todos os direitos reservados.
Dado:
À medida que os elementos de projeto são
identificados, a complexidade do modelo vai
aumentando
Para organizá-lo, os elementos devem ser
agrupados em pacotes
As camadas guiam essa organização
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 39
Copyright © 2006 Qualiti. Todos os direitos reservados.
Agrupar as classes em pacotes
Critérios para definição dos
pacotes
- 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.
Evite dependências cíclicas
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 40
Copyright © 2006 Qualiti. Todos os direitos reservados.
Acoplamento e Coesão
Pacote Global
- classes utilitárias
Não é necessário explicitar as dependências
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 41
Copyright © 2006 Qualiti. Todos os direitos reservados.
Pode ser usado por todos os outros pacotes
QIB – Efetuar Login e Efetuar
Pagamento do Qualiti Card
conta
subsistemaComunicacao
OperadoraCartao
<<global>>
util
GUI
controladores
transacao
protocolos
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 42
Copyright © 2006 Qualiti. Todos os direitos reservados.
Organização de pacotes
<<entity collection>>
CadastroContasCorrente
<<entity collection>>
CadastroContasInternet
1
1
1
<<Interface>>
IRepositorioContas
Corrente
<<entity>>
ContaCorrente
1
numero
saldo
<<entity>>
1 ContaInternet
login
senha
1
<<Interface>>
IRepositorioContasInternet
getSaldo()
debitar()
RepositorioContasCorrenteBDR
RepositorioContasInternetBDR
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 43
Copyright © 2006 Qualiti. Todos os direitos reservados.
QIB – Pacote conta
QIB – Pacotes
GUI
<<subsystem>>
subsistemaComunicaca
o
OperadoraCartao
<<global>>
util
controladores
protocolos
ISubsistemaComunicacao
OperadoraCartao
transacao
conta
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 44
Copyright © 2006 Qualiti. Todos os direitos reservados.
Dependência entre pacotes
Exercício – Qualiti Internet
Banking
- 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
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 45
Copyright © 2006 Qualiti. Todos os direitos reservados.
Dado:
Download

to get the file