Falando de arquitetura

Big Ball of Mud architecture

Este post vem muito da minha própria necessidade de entender o que é arquitetura e o papel de uma arquitetA de software significa.

Em uma bela manhã de quarta eu vi esse post da Rebecca e do Neal, Microservices as an Evolutionary Architecture. Não foi a primeira vez que fui provocada a pensar sobre o papel da arquitetura no desenvolvimento de software, mas foi um bom guia que me deu coragem de escrever esse post e gerar algumas idéias do que é a arquitetura de software.

De Rebecca e Neal chego a esse texto do Martin Fowler, Who needs an architect?, de 2003, onde ele explora o que arquitetura significa.

Ele traz um texto do Ralph Johnson que fez muito sentido na minha cabeça e que chega a uma conclusão:

A arquitetura de um sistema é uma construção social.

Sim. Uma construção social. Arquitetura no final das contas é o desenho da aplicação composto pelos componentes (e suas interfaces) mais conhecidos pela equipe, que por sua vez considerados os mais importantes no funcionamento da aplicação.

Um entendimento compartilhado por todas na equipe onde só aparecerão aqueles componentes essenciais à aplicação.

Arquiteta é um guia nas coisas importantes

Architectus Oryzus, citado pelo Martin Fowler, é a mina da colaboração e o perfil ideal de uma arquiteta de software.

A arquitetA de software pode ser a pessoa mais experiente, contudo ela deve ajudar o time a tomar a melhor decisão e desenvolver as pessoas no processo.

Ela sabe o que está acontecendo no projeto como um todo e fica atenta a possíveis pontos de problemas e lida com eles, de novo, com colaboração.

Ela não toma todas as decisões sozinhas mas está lá para guiar a equipe nestas tais decisões, não se tornando um possível gargalo na produtividade do time.

A colaboração também diz respeito a transversalidade do papel da arquitetA. Além do time de desenvolvimento, a arquiteta está em contato contínuo com o cliente/Product Owner/Business Analytics entendendo, transmitindo, negociando os requisitos para a realidade do desenvolvimento do projeto.


Esses foram os pensamentos que tive sobre o papel da Arquitetura no desenvolvimento de software.

Quais são suas idéias sobre o assunto? Você discorda dos pontos nesse post?

Não parece que o papel de arquitetA que descrevi está mais para uma líder técnica do time?

Links

Architecture is abstract until operationalized. by Neal Ford

Building Architect by Martin Fowler