segunda-feira, 14 de abril de 2014

Arquitetura de Software e Padrões de Projeto!




Uma arquitetura define a estrutura

Se você pedir a pessoa para descrever "arquitetura", nove em cada dez vão fazer alguma referência à estrutura. Essas estruturas na maioria das vezes vão fazer referencia a um edifício ou qualquer outra estrutura de engenharia civil como uma ponte por exemplo. Embora existam outras características da arquitetura de software como o comportamento, adequação à finalidade, e até mesmo a estética, é a característica estrutural que é frequentemente mencionados.
Portanto quando você pedir a alguém para descrever a arquitetura de um sistema de software que ele está trabalhando, provavelmente ele te mostrará um diagrama que mostra os aspectos estruturais do sistema.
Muitas definições de arquitetura também reconhece não só os próprios elementos estruturais, mas também a composição de elementos estruturais, seus relacionamentos (e todos os conectores necessários para apoiar essas relações).


Uma arquitetura define o comportamento
Além de definir os elementos estruturais, uma arquitetura define as interações entre esses elementos estruturais. São essas interações que fornecem o comportamento do sistema desejado. 

Uma arquitetura concentra-se em elementos significativos
Enquanto se define a estrutura e comportamento, ela não está preocupado com a definição de toda a estrutura e de todos os comportamentos. Ela só se preocupa com os elementos que são considerados significativos. Elementos significativos são aqueles que têm um efeito longo e duradouro, tais como os principais elementos estruturais, os elementos associados com o comportamento essencial, e os elementos que abordam qualidades importantes, como confiabilidade e escalabilidade. Em geral, a arquitetura não está preocupado com os detalhes de granulação fina desses elementos. 
Também é interessante notar que o conjunto de elementos significativos não é estática e pode mudar ao longo do tempo. Em consequência das exigências sendo refinada, os riscos identificados, software executável e as lições aprendidas, o conjunto de elementos significativos podem mudar. No entanto, a relativa estabilidade da arquitetura em face da mudança é um sinal de uma boa arquitetura, e o fato de executar bem um processo de arquitetura, é o sinal de um bom arquiteto. Se a arquitetura precisa ser continuamente revista devido a mudanças relativamente pequenas, então este não é um bom sinal. 

Uma arquitetura incorpora decisões baseadas em lógica
Um aspecto importante de uma arquitetura não é apenas o resultado final, a própria arquitetura, mas a razão por ela ser do jeito que é. Assim, uma consideração importante documentar as decisões que levaram a esta arquitetura e as razões para tais decisões.
Esta informação é relevante para muitas partes interessadas, especialmente os que devem manter o sistema. Esta informação é muitas vezes valiosa para o arquiteto, quando ele precisa de revisar o raciocínio por trás das decisões que foram tomadas. Por exemplo, esta informação é utilizada quando a arquitetura precisa revisar e justificar as decisões que foram tomadas.

Uma arquitetura pode estar de acordo com um estilo arquitetônico
A maioria das arquiteturas são derivadas de sistemas que compartilham um conjunto semelhante de preocupações. Esta semelhança pode ser descrita como um modelo de arquitetura, que pode ser pensado como um tipo particular de padrão. Como um padrão, um estilo arquitetônico representa uma codificação da experiência, e é uma boa prática para arquitetos para procurar oportunidades para reutilizar tal experiência. Exemplos de estilos arquitetônicos incluem um estilo distribuído, um estilo centrado em dados, um estilo baseado em regras, e assim por diante. Um sistema dado pode apresentar mais do que um estilo arquitetônico. 
Como Shaw e Garlan descreve:
[Um estilo arquitetônico] define uma família de sistemas em termos de um padrão de organização estrutural. Mais especificamente, um estilo arquitetônico define um vocabulário de componentes e tipos de conectores, e um conjunto de restrições sobre como eles podem ser combinados. 9

Ou em termos de UML:
[Um padrão é] uma solução comum para um problema comum em um dado contexto.
Além da experiência em reuso, a aplicação de um estilo arquitetônico (ou padrão) torna a nossa vida um pouco mais fácil, já que um estilo é normalmente documentado em termos da razão para usá-lo e em termos de sua estrutura e comportamento (e por isso há menos documentação arquitetura a ser produzida, uma vez que pode simplesmente se referir ao estilo em seu lugar).


Nenhum comentário:

Postar um comentário