Desenvolver software implica em fazer escolhas todos os dias. Muitas vezes, todas opções disponíveis fazem sentido. Além disso, com frequência, os “campeões” de cada ideia são passionais em suas defesas e fica a sensação de que alguém não ficará satisfeito no final. Mais que isso, escolhas mal gerenciadas colocam o projeto em risco.
É fundamental que nossas escolhas sejam fundamentadas. Além disso, é importante que o conjunto dessas escolhas seja, no longo prazo, coerente. Logo, precisamos de um padrão coerente para tomada de decisões, aka estratégia.
[tweet]Fazer escolhas relacionadas a evolução da arquitetura de software fica mais fácil caso tenhamos uma definição explícita e compartilhada de quais são os princípios arquiteturais que devem ser observados.[/tweet] Em nossas consultorias, recomendamos práticas para definição, explicitação e comunicação indicadas pelo TOGAF.
Architecture principles define the underlying general rules and guidelines for the use and deployment of all IT resources and assets across the enterprise. They reflect a level of consensus among the various elements of the enterprise, and form the basis for making future IT decisions.
Each architecture principle should be clearly related back to the business objectives and key architecture drivers. (TOGAF)
Repare que, para o TOGAF, os princípios arquiteturais não são específicos para um determinado projeto, mas, sim, fiéis a todas iniciativas da organização. Entretanto, é importante observar que o TOGAF versa sobre arquitetura corporativa (um nível acima de arquitetura de software).
O TOGAF recomenda a adoção de um template para explicitação dos princípios. Nele, estão indicadas as presenças de quatro diferentes informações:
- Nome do princípio – sendo, ao mesmo tempo, suficiente para indicar a essência do princípio e fácil de lembrar.
- Descrição – indicando, sem ambiguidades, do que trata o princípio (acionáveis)
- Justificativa – explicando quais são os motivos para a definição do princípio. Em muitos casos, indica o que se tem a perder caso o princípio não seja observado.
- Implicações – relacionando, de forma objetiva, quais são as consequências, na prática, de observar o princípio.
Vale a pena ver a página do TOGAF para ver bons exemplos de princípios definidos e documentados conforme esse template.
Como dissemos, precisamos ser assertivos e coerentes nas escolhas que fazemos para nossos esforços de desenvolvimento. Quanto maiores os riscos relacionados, mais vantajoso investir tempo e energia para definir, explicitar e comunicar princípios arquiteturais.
Isso ajuda quem não tem a menor ideia sobre o assunto, mas o complicado é sempre estabelecer os princípios. Inclusive porque é frequente errar, o que reduz ou elimina a eficácia da sua criação.
Pensando em ‘arquitetura corporativa’ o erro na definição dos princípios estaria mais fortemente relacionado a uma falha de concepção da própria corporação. Caso aconteça, entendo que seria o caso de reavaliar se a prática da organização condiz com os valores, missão e visão que ela um dia se propôs a seguir.