Teas
O projeto de arquitetura tem o objetivo de fazer com que os desenvolvedores compreendam como um sistema deve ser organizado definindo sua estrutura geral. Existem dois tipos de arquiteturas de softwares, a arquitetura em pequena escala e a arquitetura em grande escala. A arquitetura em pequena escala abrange a arquitetura de programas individuais. Já a arquitetura em grande escala abrange a arquitetura de sistemas corporativos complexos de programas que incluem outros sistemas, programas e componentes de programas. Estes sistemas computacionais estão distribuídos por diversos computadores, que podem pertencer e serem geridos por diferentes empresas.
Uma boa definição de arquitetura de software é extremamente importante, pois afeta o desempenho, a robustez a capacidade de distribuição e de manutenibilidade do sistema. Se esta metodologia for seguida a arquitetura de software pode servir como apresentação de alto nível do sistema e ser usada como discussão por uma série de diferentes stakeholders. Ela promove uma analise inicial do sistema em relação aos requisitos críticos, como desempenho, confiabilidade e manutenabilidade. Tendo em mente que a arquitetura de um sistema pode ser a mesma usada para outros sistemas com requisitos semelhantes, ela promove o reuso em larga escala.
A organização cliente-servidor ou a divisão em camadas são tipos de arquitetura utilizadas em sistemas de software. Quando o desempenho é algo critico no sistema, sua arquitetura deve ser projetada para localizar as operações criticas dentro de um pequeno número de componentes. Frameworks de log`s e programação orientada a aspectos são frequentemente utilizadas para descobrir estes pontos. Quando a proteção for um requisito crítico, deve ser usada uma estrutura em camadas para a arquitetura. Quando a segurança for um requisito critico, a arquitetura deve ser concebida de modo que as operações relacionadas com a segurança estejam localizadas em um único