“O arquiteto ideal deve ser uma pessoa erudita, um matemático, familiarizado com estudos históricos, um estudioso aplicado de filosofia, conhecedor de música, que não desconheça medicina, detentor de saber jurídico e familiarizado com astronomia e cálculos astronômicos.” - Vitruvius, há aproximadamente 25 anos a.C.
Li isso na revista Mundo Java 25 uma definição desafiante e intimidante do que é um arquiteto, mas a definição de Vitruvus vale para o arquiteto de software?
Se formos interpretar literalmente a resposta é não. Então como podemos definidr um arquiteto de software? Para nós entendermos o que é um arquiteto de software precisamos saber qual o objeto do seu trabalho, a arquitetura de software.
A mais pragmática definição de arquitetura de software que eu li foi:
“Arquitetura de software é o conjunto de decisões de projeto que, se feitas incorretamente, podem causar o cancelamento do projeto.” – Eoin Woods
Simples e prática e é claro extremamente dependente do conhecimento que nós temos do que são decisões de projeto. Com esta definição fica fácil entender que o arquiteto de software é aquele que toma as decisões de projeto.
Logo você pode esta dizendo eu sou um arquiteto de software pois toda vez que programo eu tomo decisões de projeto. A verdade é que tais decisões são limitadas seja pelo conhecimento que você tem sobre as opções de projeto ou seja porquê quando você iniciou a desenvolver você já adotou uma arquitetura e não pode decidir nada diferente sob a pena de ter seu projeto cancelado.
Alguns ainda podem dizer que seu projeto não precisou de um arquiteto e não segue nenhuma arquitetura. Todo desenvolvimento de software envolve implicitamente a aceitação de uma arquitetura de software. Se você não sabe qual a arquitetura de software que esta usando então você corre o risco de tomar uma decisão de projeto que vá de encontro a sua arquitetura e tenha consequências nefastas ao seu projeto.
Usando a definição de arquitetura de software podemos dizer que arquiteto de software é aquele que toma as decisões de projeto com conhecimento que esta usando a melhor opção, opção esta que se consegue tendo um pleno conhecimento do peopleware, hardware e software ou como disse Vitruvius um amplo conhecimento sobre o ser humano e como ele interage com seu meio.
Recursos:
Definições de arquitetura de software