sexta-feira, 8 de maio de 2020

Padrões de Arquitetura de Software

Definição de padrão arquitetural

Um padrão arquitetural determina a estrutura de um projeto de software. Portanto, trata-se de um conceito amplo que aborda questões como limitação de hardware, alta disponibilidade de uso e risco de negócio (BUSCHMANN et al., 2001).
Como sabemos, o desenvolvimento de algoritmos visa resolver problemas com o auxílio do computador. Já houve uma época em que os programadores tinham muita dificuldade com a escrita e a compilação do código. No entanto, esta dificuldade já foi superada com a ajuda de ferramentas que auxiliam o programador na sintaxe e semântica das linguagens de programação.
Temos agora um problema de segunda ordem que está relacionado a como organizar as linhas de código.
Muitas vezes, sabemos quais linhas de código atenderão um determinado requisito de negócio, porém ainda precisamos saber qual a melhor organização das linhas de código que evitará a degradação da aplicação.

O uso de padrões arquiteturais pode ser um dos direcionadores desta organização. Um único padrão pode auxiliar na solução das necessidades ligadas à organização do código, contudo, é possível usar uma combinação de padrões.
Vale lembrar que o conceito de padrões arquiteturais diferencia-se de padrões de projetos e ambos são assuntos tratados neste material.

IMPORTANTE
Arquitetura de software, segundo Booch, Rumbaugh e Jacobson (2005, p. 34) é o “conjunto de decisões significativas” acerca dos seguintes itens:
  • a organização do sistema de software;
  • a seleção dos elementos estruturais e suas interfaces, que compõem o sistema;
  • seu comportamento, conforme especificado nas colaborações entre esses elementos;
  • a composição desses elementos estruturais e comportamentais em subsistemas progressivamente maiores;
  • o estilo de arquitetura que orienta a organização: os elementos estáticos e dinâmicos e suas respectivas interfaces, colaborações e composição.
De uma maneira mais simplificada, Pressman (2011, p. 230) define arquitetura de software como a “estrutura do sistema que abrange os componentes de software, as propriedades externamente visíveis destes componentes e as relações entre eles”. O autor ainda completa que a arquitetura
[...] não é o sistema operacional, mas sim uma representação que nos permite (1) analisar a efetividade do projeto no atendimento aos requisitos declarados, (2) considerar alternativas de arquitetura em um estágio quando realizar mudanças de projeto ainda é relativamente fácil e (3) reduzir os riscos associados à construção do software.
As seções a seguir descrevem os principais padrões arquiteturais, suas vantagens e desvantagens. Vale lembrar que existem muitos outros padrões possíveis, simples ou compostos, mas vamos nos ater aos mais utilizados nesta abordagem.

Padrão de arquitetura em camadas

De acordo com Buschmann et al. (2001), camadas são grupos de componentes reutilizáveis, similares e inter-relacionados, responsáveis por um nível de abstração particular, ou seja, as camadas executam tarefas específicas da aplicação consumindo e fornecendo recursos entre si.

Padrão de arquitetura Pipes and filters ou Pipeline

De acordo com Buschmann et al. (2001), o padrão arquitetural Pipes and filters, também denominado Pipeline, permite um processamento sequencial por meio de etapas encapsuladas em componentes chamados filters que, por sua vez, são acoplados por meio de conexões conhecidas como pipes.

Padrão de arquitetura Blackboard

O padrão Blackboard é utilizado para tratar problemas não determinísticos, como por exemplo, sistemas de inteligência artificial e reconhecimento de padrões. Neste padrão arquitetural, de acordo com Buschmann et al. (2001), diversos subsistemas unem seus conhecimentos para gerar uma possível solução parcial ou aproximada.

Model-View-Controller (MVC)

O padrão MVC é um modelo de camadas específico que divide a aplicação em três componentes:
  • o Model, ou Modelo, que contém as funções básicas e o acesso aos dados;
  • a View, ou visualizador, que exibe os dados para o usuário; e
  • o Controller, ou controlador, que gerencia a interação entre as entradas do usuário e os dados do sistema.

Padrão de arquitetura Microkernel

O padrão arquitetural Microkernel se aplica a sistemas de software que devem ser capazes de se adaptar às necessidades de mudança do sistema. Ele separa um núcleo funcional mínimo de recursos estendidos e partes específicas. Este padrão também serve como um gerenciador para conectar essas extensões e coordenar a sua colaboração (BUSCHMANN et al., 2001).

Padrão de arquitetura Reflection

O padrão Reflection fornece um mecanismo para alterar a estrutura e o comportamento de sistemas de forma dinâmica. Neste padrão, a arquitetura é dividida em duas partes: um nível meta, que provê informações sobre as propriedades do sistema, e um nível base, que inclui a lógica da aplicação. Alterações realizadas em informações contidas no nível meta afetam o comportamento do nível base (BUSCHMANN et al., 2001).

Nenhum comentário:

Postar um comentário