Os mecanismos arquiteturais representam conceitos técnicos fundamentais que serão padronizados por toda a solução. Eles são refinados durante o projeto em três estados, representados pelas três categorias de Mecanismos Arquiteturais:
-
Mecanismo de Análise, que dá ao mecanismo um nome, uma descrição resumida e alguns atributos básicos derivados dos requisitos do projeto
-
Mecanismo de Design, que são mais concretos e assumem alguns detalhes do ambiente de implementação
-
Mecanismo de Implementação, que especifica a exata implementação de cada mecanismo
Quando o Arquiteto identifica inicialmente um mecanismo arquitetural ele esta estabelecendo um marcador que diz para a equipe, "Nós iremos lidar com este aspecto do sistema de forma padronizada. Descobriremos os detalhes mais tarde." À medida que o projeto avança, os mecanismos arquiteturais são gradualmente refinados até que se tornem parte do software.
Mecanismos de Análise
Os mecanismos de análise são os estados iniciais para os mecanismos arquiteturais. São identificados no início do projeto e representam marcações para futuro desenvolvimento de software. Eles permitem à equipe focar na compreensão dos requisitos sem se distrair com as especificidades de uma implementação complexa. Os mecanismos de análise são descobertos pelo levantamento dos requisitos e pela procura de conceitos técnicos recorrentes. Segurança, persistência e interfaces legadas são alguns exemplos. Com efeito, o Arquiteto reúne os requisitos que descrevem tópicos arquiteturalmente importantes colocando-os em uma única lista. Tornando-os mais fáceis de serem gerenciados.
Os mecanismos de análise são descritos com termos simples:
-
Nome: identifica o mecanismo.
-
Atributos Básicos: definem os requisitos do mecanismo. Estes atributos podem variar dependendo do mecanismo que está sendo analisado. Veja Example: Atributos de Mecanismo Arquitetural para mais orientação.
Uma vez que a lista de mecanismos de análise tenha sido definida, ela pode ser priorizada e os mecanismos refinados de acordo com os objetivos da iteração. Não é necessário desenvolver todo o conjunto de mecanismos arquiteturais em software funcional de uma única vez. Muitas vezes é mais sensato desenvolver apenas os mecanismos necessários para suportar a funcionalidade a ser entregue na iteração atual.
Mecanismos de Design
Os mecanismos de design representam decisões sobre tecnologias concretas que serão usadas para desenvolver mecanismos arquiteturais. Por exemplo, a decisão de usar um RDBMS para persistência. Normalmente nada mais complexo do que isso (embora, evidentemente, o esforço envolvido na tomada de decisões pode, por vezes, ser muito complexo).
A decisão sobre quando aperfeiçoar um mecanismo arquitetônico do estado de análise para o de projeto é em grande parte arbitrária. Frequentemente haverá restrições em vigor no projeto que forcem a tomada de decisão a respeito de algumas destas questões. Por exemplo, pode existir um padrão corporativo para bancos de dados significando que a decisão para a adoção de um mecanismo de persistência possa ser tomada no primeiro dia do projeto.
Em outras ocasiões, a decisão pode direcionar para produtos que a equipe do projeto ainda não adquiriu. Neste caso, a decisão tem de ser tomada em tempo hábil para permitir os produtos necessários sejam colocados à disposição da equipe.
Muitas vezes, pode ser útil desenvolver um código prototípico para provar que estas decisões estão sólidas. O Arquiteto deve estar seguro de que as tecnologias selecionadas sejam capazes de atender os requisitos. Os atributos capturados com os mecanismos de análise correspondentes deverão ser usados como critérios para comprovar a validade das decisões.
Mecanismo de Implementação
Um mecanismo de implementação especifica a implementação real para o mecanismo arquitetural (daí o nome). Ele pode ser modelado como um padrão de design ou representado como código de exemplo.
O melhor momento para produzir o mecanismo de implementação é normalmente quando a primeira parte da funcionalidade necessária é agendada para desenvolvimento. O Arquiteto e o Desenvolvedor trabalham juntos para desenvolvê-lo. |