A escolha da aplicação de padrões de arquitetura para projetar algum elemento arquitetônico depende do tipo particular de sistema, requisitos e atributos de qualidade desejados. Estas características ajudam a orientar a seleção de um padrão específico em detrimento de outro. Em outros casos, diferentes padrões podem ser utilizados em conjunto para satisfazer as características de um sistema deixando a cargo da equipe de design escolher o padrão mais apropriado para o projeto. Projetistas familiarizados com certos padrões podem inclusive aplicá-los imediatamente a problemas de projeto, sem ter que redescobri-los.
Alguns padrões arquitetônicos são encontrados no mais alto nível de decomposição do sistema, sendo muito abstratos para produzir um projeto concreto do sistema; portanto, esses padrões não estão vinculados a uma implementação do sistema particular, mas podem ser associados a tipos (ou famílias) de sistemas de modo que sua solução possa ser reutilizada em vários sistemas do mesmo tipo.
As diversas classificações de padrões são apresentadas na tabela a seguir.
| Tipo | Descrição |
|---|---|
| Centrado nos Dados | Sistemas que servem como um repositório centralizado para dados, permitindo que os clientes acessem e mantenham os dados. |
| Fluxo de Dados | Sistemas orientados em torno do transporte e transformação de um fluxo de dados. |
| Distribuído | Os sistemas que envolvem principalmente a interação entre várias unidades de processamento independentes ligados através de uma rede. |
| Interativo | Sistemas que servem ao usuário ou são voltados ao usuário. |
| Hierárquico | Os sistemas nos quais componentes podem ser estruturados como uma hierarquia (vertical e horizontal) para refletir diferentes níveis de abstração e responsabilidade. |
Para melhor entendermos esta classificação, vamos explorar cada um destes tipos de padrões.
Existem padrões arquiteturais em que o nível de abstração é bastante alto, tais como: padrões de análise, padrões de projeto, padrões de código, entre outros.
X