Resumo - Who needs an Architect?
Neste artigo Martin Fowler nós diz algumas definições de arquitetura de software, e qual acredita estar mais correta. Ele começa falando sobre uma passagem de uma lista de discussão, Extreme Programing: “ O RUP, trabalhando fora da definição IEEE, define a arquitetura como "o conceito mais alto nível de um sistema em seu ambiente. A arquitetura de um sistema de software (em um determinado ponto no tempo) é a sua organização ou a estrutura dos componentes significativos que interagem através de interfaces, os componentes sendo composto de sucessivamente menores componentes e interfaces. “ Mas o que ele quer enfatizar nessa discussão é a resposta de Ralph Jhonson, assim, uma melhor definição seria "Na maioria dos projetos bem sucedidos, os desenvolvedores experientes que trabalham nesse projeto têm uma compreensão compartilhada do projeto do sistema. Este entendimento comum é chamado de 'arquitetura'. Esta compreensão inclui a forma como o sistema é dividido em componentes e como os componentes interagem através de interfaces. Esses componentes são geralmente compostas por componentes menores, mas a arquitetura inclui apenas os componentes e interfaces que são comprendidos por todos os desenvolvedores. "
Martin Fowler ainda fala de outras definições em seu artigo, mas fazendo criticas às mesmas. Partindo que já temos uma idéia sobre o que é arquitetura de software, Fowler trata agora o papel do arquiteto. Para isso vai usar 2 tipos:
Architectus Reloadus ( como o arquiteto no final de Matrix Reload ): Define o arquiteto como a pessoa que toma todas as decisões importantes a respeito dos projetos. Muitas vezes, tais decisões devem ser tomadas logo no início, para que todo mundo tem um plano a seguir.
Architectus Oryzus ( exemplificado por Dave Rice ): Define o arquiteto como uma pessoa presente no time, que fica atenta para as questões importantes e tomadas de decisões, assim como para os problemas, para que não se tornem