PROJETO DE ARQUITETURA
Projeto Detalhado de Software (PDS)Profa. Cynthia Pinheiro
Antes de mais nada...
•Próximas aulas
:
•Seminários
de Padrões de Projeto GoF
• 1º Dia: 10/11/2017, 08h – 10h, Sala 04• 2º Dia: 13/11/2017, no local e horário habituais • 3º Dia: 17/11/2017, 08h – 10h, Sala 04
Na aula passada...
•Padrões de Projeto
GoF
(Gang of Four)
Uso de Pacotes para o Modelo de Domínio
•Se o Modelo de Domínio cresce muito:
• É desejável decompô-lo em pacotes de conceitos fortemente relacionados.
Uso de Pacotes para o Modelo de Domínio
•Posse
e
referência
entre pacotes:
• Um elemento é possuído pelo pacote dentro do qual é definido, mas pode ser referenciado em outros pacotes. • O nome do elemento é qualificado pelo nome do pacote,
usando o formato NomeDoPacote::NomeDoElemento.
Elemento possuído pelo pacote Elemento referenciado em outros pacotes
Uso de Pacotes para o Modelo de Domínio
•Dependências
entre pacotes:
• Os elementos do pacote dependente tem, de alguma forma, conhecimento (ou estão acoplados) aos elementos do pacote de destino.
Uso de Pacotes para o Modelo de Domínio
•Como
particionar
um Modelo de Domínio:
Uso de Pacotes para o Modelo de Domínio
•Como
particionar
um Modelo de Domínio:
• Todos os elementos do modelo estão enraizados em um pacote“Domínio”. • Todos os conceitos amplamente compartilhados, comuns e centrais são definidos em um pacote “Elementos Centrais” ou “Conceitos Comuns”.
Uso de Pacotes para o Modelo de Domínio
•Como
particionar
um Modelo de Domínio:
• Pacote “Elementos Centrais” ou “Conceitos Comuns”: conceitos amplamente compartilhados.
Uso de Pacotes para o Modelo de Domínio
• Como
particionar
um Modelo de
Domínio:
• Pacote
Uso de Pacotes para o Modelo de Domínio
• Como
particionar
um Modelo de
Domínio:
• Pacote “Produtos”Uso de Pacotes para o Modelo de Domínio
•Como
particionar
um Modelo de Domínio:
Uso de Pacotes para o Modelo de Domínio
• Como
particionar
um Modelo de
Domínio:
• Pacote “Transações de Autorização”Uso de Pacotes para o Modelo de Domínio
Arquitetura Lógica
•Introdução:
• Um Projeto OO típico é baseado em várias camadas arquiteturais como a camada de Interface com o Usuário, camada de Aplicação Lógica (ou “Domínio”) etc.
• Diagramas UML podem ilustrar a Arquitetura Lógica como
parte do modelo de projeto.
• Ela pode também ser resumidacomo uma visãono DAS
(Documento de Arquitetura do Software).
• Principal entrada: forças arquiteturais captadas na
Especificação Suplementar(artefato de requisitos do PU).
Arquitetura
Lógica
• Exemplo de
Arquitetura Lógica em camadasparcial feita com a notação de
Diagrama de Pacotes
Refinamento da Arquitetura Lógica
•Evolução da Arquitetura Lógica:
• Evoluir a Arquitetura Lógica significa gradualmente adicionar mais pacotes e mais informação às camadas e aos pacotes existentes, à medida que as iterações (do PU) se dão.
• Um objetivo da 3ª fase da Elaboração é ter a Arquitetura central estabelecida (projetada e implementada).
Refinamento da
Arquitetura Lógica
•Evolução
da
Arquitetura
Lógica:
Refinamento da
Arquitetura Lógica
•Acoplamento
entre camadas e
pacotes:
Linhas de dependênciaDiagrama da Visão Lógica: ilustra acoplamentos importantes entre as camadas e os pacotes.
Refinamento da
Arquitetura Lógica
•Acoplamento
pacote-pacote:
Diagrama de Arquitetura Lógica mais comum: oculta os tipos específicos e foca apenas no acoplamento pacote a pacote (apenas os mais importantes e suas dependências).
Refinamento da Arquitetura Lógica
•Interação
entre
camadas
e entre
pacotes
:
• Diagramas de Pacotesmostram informações estáticas. • Para entender a dinâmica na arquitetura lógica é útil
incluir um diagrama que mostre como os objetos se
conectam e se comunicam entre as camadas → Diagrama
de Interação.
• Foca as colaboraçõesconforme elas cruzam os limites das camadas e de pacotes.
• Fazer apenas para os cenários arquiteturalmente mais
significativos: ilustram muitos aspectos das grandes idéias ou aquelas de larga escala.
Refinamento da
Arquitetura Lógica
• Cenário
“Processar
Vendas”
:
Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
• Duas decisões de projeto a nível arquitetural:
• Quais são as grandes partes? • Como elas estão conectadas?
• Padrão arquitetural Camadas:
• Guia a definição das grandes partes
• Padrões de projeto micro arquiteturais como Fachada,
Controlador e Observadorsão usados para o projeto das
conexões entre camadas e pacotes.
Refinamento da Arquitetura Lógica
•Colaboração
com o
padrão
Camadas
:
• Pacotes simples x Subsistemas:
• Alguns pacotes ou camadas não são apenas grupos
conceituais de coisas, mas são verdadeiros subsistemas, com
Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
• Pacotes simples x Subsistemas:
• O pacote EstabelecimentoDePreços
não é um subsistema: apenas agrupa a fábrica e as estratégias usadas no estabelecimento de preços.
• O pacote Persistência,
MotorDeRegraPDVe Jesssão subsistemas: são mecanismos separados com responsabilidades coesasque funcionam.
Estereótipoque identifica um subsistema
Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
•Fachada:
• Padrão de acesso mais comum no caso de pacotes que representam subsistemas.
Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
•Fachada:
• Uma fachada não realiza o seu próprio trabalho, mas sim é a
consolidadora ou mediadora dos objetos do subsistema, que são os que realizam o trabalho.
• Outros pacotes não veem a implementação do subsistema, pois fica oculto atrás da fachada.
Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
•Fachada:
• Se a aplicação tem um pequeno número de operações é comum que a camada de Domínio tenha apenas um objeto fachada para a camada superior.
• Mas se tem muitas operações, com vários subsistemas, é comum pelo menos uma fachada para cada
Refinamento da Arquitetura Lógica
•Colaboração
com o
padrão
Camadas
:
•Fachada:
• Número de interfaces expostas para as camadas superiores.Refinamento da Arquitetura Lógica
•Colaboração
com o padrão
Camadas
:
•Fachadas de sessão
e a camada de aplicação:
• Fachada de sessão: mantem os estados da sessão para
as operações de um caso de uso, em que cada instância
Refinamento da Arquitetura Lógica
•Colaboração
com o
padrão
Camadas
:
• Fachadas de sessão e a camada de aplicação
Refinamento da Arquitetura Lógica
•Colaboração
com o
padrão
Camadas
:
• O padrão GRASP Controlador descreve controladorespara chamadas de operação que partem das UIs.Bibliografia
• Esta aula foi retirada dos seguintes livros/artigos:
• LARMAN, Craig. Utilizando UML e Padrões: uma
introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: