Professional Documents
Culture Documents
Atenciosamente,
Definição de arquitetura
Visões de arquitetura
GRASP – Padrões de Princípios Gerais para Atribuição de Responsabilidades
Especialista na informação;
Criador;
Coesão alta;
Acoplamento fraco;
Controlador
Padrões arquiteturais
Padrão camada
Padrões microarquiteturais
Modelo de domínio;
Roteiro de transação;
1. Lógica
a) Descreve a organização conceitual do software em termos das camadas, dos
subsistemas, dos pacotes, dos frameworks, das classes e das interfaces mais
importantes.
b) Mostra cenários de realização de casos de uso destacados (como diagrama de
interação) que ilustram aspectos importantes do sistema
2. Processo
3. Implantação
4. Dados
5. Caso de uso
6. Implementação
GRASP
B tem os dados de iniciação que serão passados para A quando ele for criado .
Benefícios
Favorece o acoplamento fraco, o que implica em menor dependência para a
manutenção e maiores oportunidades de reutilização.
GRASP
Acoplamento fraco
Problema
Como favorecer a dependência baixa, o pequeno impacto à mudança e aumentar a
reutilização?
Solução
Atribuir uma responsabilidade de maneira que o acoplamento permaneça fraco.
Benefícios
Não é afetado por mudanças em outros componentes;
É simples de entender isoladamente;
Solução
Atribuir uma responsabilidade de maneira que a coesão permaneça alta.
Benefícios
Mais clareza e facilidade de compreensão no projeto;
Simplificação da manutenção e do acréscimo de melhorias;
Favorecimento do acoplamento fraco;
Solução:
Atribuir a responsabilidade de receber ou tratar uma mensagem de um evento do
sistema a uma classe que represente uma das seguintes escolhas:
Represente todo o sistema, o dispositivo ou subsistema;
Represente um cenário de um caso de uso dentro do qual ocorra o evento do
sistema, frequentemente chamado TratadorDe<NomeDoCasoDeUso>,
CoordenadorDe<NomeDoCasoDeUso> ou SessãoDe<NomeDoCasoDeUso>
Benefícios
Aumento das possibilidades de reutilização e de interfaces “plugáveis”. Garante que a
lógica da aplicação não seja tratada na camada de interface.
Conhecer o estado do caso de uso. Algumas vezes, é necessário garantir que as
operações do sistema ocorram em uma sequência válida ou ser capaz de reconhecer o
estado da atividade e das operações dentro do caso de uso em processamento.
Padrões arquiteturais: Padrão camadas
Problemas
As alterações no código-fonte são propagadas por todo o sistema;
A lógica da aplicação é entrelaçada com a interface com o usuário e, assim, não pode
ser reutilizada com uma interface diferente e nem distribuída para outro nó de
processamento;
Potencialmente, os serviços técnicos em geral ou a lógica do negócio é entrelaçada
com a lógica mais específica da aplicação e, portanto, não pode ser reutilizada, não
pode ser distribuída para outro nó nem facilmente substituída por uma implementação
diferente;
Existe forte acoplamento entre diferentes áreas de interesse. Assim, é difícil dividir o
trabalho em limites claros para diferentes desenvolvedores;
Devido ao forte acoplamento e à mistura de interesses, é difícil expandir a
funcionalidade, aumentar a escala do sistema ou atualizá-lo para usar novas
tecnologias.
Padrões arquiteturais: Padrão camadas
Solução
Organizar a estrutura lógica de larga escala de um sistema em camadas distintas de
responsabilidades precisas e relacionadas, com uma separação clara e coesa dos
interesses, de modo que as camadas “inferiores” sejam serviços de baixo nível e
gerais e as camadas mais altas sejam mais específicas da aplicação.
A colaboração e o acoplamento se dão das camadas superiores para as inferiores, o
acoplamento de uma camada mais baixa para uma mais alta é evitado.
Padrões arquiteturais: As três principais camadas
Lógica da apresentação
Diz respeito a como tratar a interação entre o usuário e o software. As
responsabilidades primárias da camada de apresentação são exibir informações para o
usuário e traduzir comandos do usuário em ações sobre o domínio e a camada de
dados.
Lógica da camada de dados
Diz respeito à comunicação com outros sistemas que executam tarefas no interesse da
aplicação. Para a maioria das aplicações, a maior parte da lógica de dados é um banco
de dados responsável , antes de mais nada, pelo armazenamento de dados
persistentes.
Lógica de domínio (de negócio)
Diz respeito ao trabalho que esta aplicação tem de fazer para o domínio com o qual
você está trabalhando. Envolve cálculos baseados nas entradas e em dados
armazenados, validação de quaisquer dados provenientes da camada de apresentação
e a compreensão exata de qual lógica de dados executar, dependendo dos comandos
recebidos da apresentação.
Padrões microarquiteturais
Modelo de domínio
Padrão de criação
Factory refere-se a uma classe que implementa um ou mais métodos
de criação.
Em uma Factory, os métodos de criação podem ser estáticos ou não-
estáticos; o tipo de retorno dos métodos de criação pode ser uma
interface, classe abstrata ou classe concreta.
Uma Factory pode implementar responsabilidades não-relacionadas
com a criação de objetos.
Um Factory Method é um método não-estático que retorna uma classe
base ou um tipo de interface e que é implementado em uma hierarquia
para permitir criação polimórfica. Um Facoty Method deve ser
definido/implementado por uma classe e por uma ou mais subclasses
desta classe. A classe e as subclasses agem, cada uma delas, como ou
ma Factory.
Referência bibliográfica