Existe decisão arquitetural puramente técnica?

09/01/2012 15:19

Um arquiteto nunca deve decidir sobre uma arquitetura de forma arbitrária ou mesmo impensada. Todas as alternativas devem ser consideradas, fracionando o sistema (solução) em elementos e relações que possibilitarão o atendimento aos atributos de qualidade.

Alexander Wolf e Dewayne Perry definiram em um artigo intitulado “Foundations for the Study of Software Architecture” o seguinte modelo:

Arquitetura = { Elementos, Organização, Decisões }


De acordo com essa definição, a arquitetura de software é um conjunto de elementos arquiteturais que possuem alguma organização. Os elementos e sua organização são definidos por decisões tomadas para satisfazer objetivos e restrições. São destacados três tipos de elementos arquiteturais:

  • Elementos de processamento: são elementos que usam ou transformam informação;
  • Elementos de dados: são elementos que contêm a informação a ser usada e transformada; e
  • Elementos de conexão: são elementos que ligam elementos de qualquer tipo entre si.


Já a organização dita as relações entre os elementos arquiteturais. Essas relações possuem propriedades e restringem como os elementos devem interagir de forma a satisfazer os objetivos do sistema. Adicionalmente, essas relações devem ser ponderadas de modo a indicar sua importância no processo de seleção de alternativas. As relações vão desde as interfaces tecnológicas necessárias para comunicar dois sistemas distintos até os processos (inclusive humanos) necessários para manter os estados desejados das informações dentro do ciclo de negócio.


Decisões arquiteturais


Ok, vimos até aqui que arquitetura é a arte de tomar decisões inteligentes de acordo com um contexto (lembrando que contexto é igual a “Elementos” e “Organização”). As decisões arquiteturais têm, basicamente, três características que devem ser consideradas: descrição, objetivos e fundamentação.

Por descrição devemos entender que se trata do que foi decidido para o sistema, podendo ser: descrição de um elemento, módulo, classe, ou serviço que existirá na arquitetura, a descrição da comunicação de um elemento da arquitetura com outro, a descrição da agregação de diversos elementos diferentes da arquitetura para formar um serviço, ou a descrição de um princípio ou mais princípios que conduzirão a evolução do sistema.

É sabido que toda decisão é feita com um ou mais objetivos. Isso posto, a segunda característica trata de explicitar qual o objetivo de dada decisão, normalmente, permitindo ou restringido um conjunto de atributos de qualidade do sistema.

Finalmente, uma decisão arquitetural só pode ter sido alcançada em meio a alternativas com algum embasamento ou fundamentação. Por esse motivo, cabe ao arquiteto explicitar por que tal decisão foi tomada, seja por conhecimento prévio de como satisfazer os objetivos em questão ou pela atual decisão ter mostrado os melhores resultados em meio a uma avaliação prévia das alternativas.


Lembre-se sempre do contexto


É comum e cômodo adotarmos  as chamadas “boas práticas” como uma verdade incondicional. Afinal, boas práticas refletem ações, técnicas e processos utilizados com sucesso para resolver determinado problema.

Contudo, como vimos, toda a tomada de decisão requer, dentre outros fatores, embasamento e fundamentação. Por esse fato, só podemos considerar uma prática como boa se ela for avaliada dentro de um contexto bem conhecido e claro, onde obtemos com a aplicação dessa prática um retorno tangível e eficaz. Do contrário, aplicar uma boa prática - apenas por ser um padrão de mercado - não garantirá nada a não ser mais complexidade acrescida a solução.

Ora, se estamos falando de contexto, é possível pensar em decidir algo sem levar em conta a organização (empresa, por exemplo)? Pense bem, até mesmo a aplicação de um patch de segurança no servidor de produção não é uma decisão meramente técnica, pois se existe um risco do patch afetar algum building block arquitetural, isso deve ser levado em conta.


Para reflexão


Tenho visto por aí muita confusão a respeito das atribuições e competências de um arquiteto, seja um arquiteto de sistema, arquiteto de solução, arquiteto corporativo ou qualquer outro que exista ou inventem (já que ser arquiteto está na moda, não é verdade?). Gostaria de propor que o título desse post fosse um auto-questionamento para você, arquiteto.

Arquitetura ,



Comentários (2) -

14/01/2012 11:50:53 #

Giovanni Bassi

Vou além. Muito frequentemente vejo arquitetos tomando decisões técnicas, fundamentadas, etc, mas esquecendo aspectos do projeto que dizem respeito a outras áreas que não são técnicas. O payback do projeto, por exemplo. O arquiteto, buscando entregar excelência técnica, esquece a solução às vezes mais simples, que atenderá o projeto nesse momento, ainda que depois ela gere retrabalho. Essa decisão, normalmente mais difícil de defender, pode acabar sendo a correta dependendo do momento do projeto. Retrabalho é visto pelos arquitetos como um pecado que merece a morte. São visões restritas, mas muito comuns.

Giovanni Bassi | Reply

15/01/2012 03:11:41 #

ldaniel

Perfeito, Giovanni! Talvez a definição rápida que mais se adeque a isso seja:

"O arquiteto é o responsável por alinhar estratégia a execução."

Abraços!

Leandro Daniel

ldaniel | Reply

Comentar

biuquote
  • Comentário
  • Pré-visualização
Loading