Arquitetura prescritiva, descritiva, deterioração e “Pequenas mer*#$&s fazem grandes cag$%!% …”

Publicado em 15/09/2011

4


Olá pessoal, tudo certo?!

Você já parou para pensar nos motivos que levaram aquele “super projeto”, que começou certinho, a total deterioração? Você procurou culpados? Espero que não.

No post de hoje, falo sobre a deterioração arquitetônica que encontramos em diversos projetos. Aproveito para mostrar um pouco mais de conceitos fundamentais de arquitetura.

Como tudo começa – arquitetura prescritiva

Quando começamos a trabalhar em um software, alguém, de alguma forma, já tomou uma série de decisões importantes. Assumindo que:

A arquitetura de um software corresponde ao conjunto das principais decisões relacionadas a este.

Então, podemos dizer que

quando começamos um software, já temos uma arquitetura.

Obviamente, a medida que o desenvolvimento avança, essas decisões vão sendo aprimoradas e refinadas. Assim,

sabemos que a arquitetura do software vai sendo refinada e aprimorada.

Essa arquitetura, que representa o “desejo ou sonho” de alguém (o arquiteto?!), é conhecida como arquitetura prescritiva.

A arquitetura prescritiva corresponde ao que “planejado” ou “concebido”. Ela “existe” em todos os momentos do projeto.

A arquitetura prescritiva não precisa estar documentada, necessariamente. Ela pode estar “viva na cabeça” dos arquitetos. De forma alternativa, ela pode estar representada em alguma forma de documentação através de alguma “linguagem de descrição arquitetônica”.

E que resultados obtemos – arquitetura descritiva

Sempre importante lembrar:

Na teoria, teoria e prática são iguais. Na prática, são diferentes.

O processo de desenvolvimento de um software implica na “realização” das principais decisões (arquitetura). Os artefatos resultantes desse processo são a expressão dessas decisões, sua descrição.

A arquitetura descritiva corresponde à forma como o software foi efetivamente “implementado”, ou ainda “realizado”. Todos os dias, quando novos artefatos são gerados, temos uma nova arquitetura descritiva.

Quando os problemas começam – degradação

Durante todo o ciclo-de-vida de um software, um grande número de revisões para a arquitetura prescritiva e descritiva são realizadas. Em um cenário ideal, essas arquiteturas deveriam ser idênticas. Em outras palavras,

.. a arquitetura descritiva deveria representar, sempre, a realização exata da arquitetura prescritiva. Entretanto, isso raramente ocorre.

O conjunto de diferenças entre as arquiteturas prescritivas e descritivas é conhecido como “degradação arquitetural”.

Mudar, nem sempre é ruim! Really!?

A experiência de desenvolvimento de um software conduz a descobertas que podem implicar, de alguma, em algum tipo de disparidade entre as arquiteturas prescritivas ou descritivas.

Há dois tipos fundamentais de degradação arquitetural:

  1. Architectural drift
  2. Architectural erosion 

Vamos as definições. Comecemos pela primeira:

Architectural drifts são todas as decisões presentes na arquitetura descritiva que não estão incluídas, embasadas, ou explicitadas na arquitetura prescritiva. Entretanto, não violam qualquer decisão presente nessa.

Por outro lado,

Architectural erosions são todas as decisões incluídas na arquitetura descritiva que violam a arquitetura prescritiva.

Claramente, erosions representam algo bem mais sério do que drifts. Você não acha? Depende…

O começo do fim…

Em um dado momento do projeto, decisões vão sendo tomadas (geralmente, sem seguir uma estratégia [padrão coerente para tomada de decisões]). Um após outro, drifts vão sendo aceitos (de novo e outra vez). Lembre-se:

Uma deterioração pode ser “desfeita” através do (re)alinhamento da arquitetura prescritiva com a arquitetura descritiva.

Mas… Quem disse que é importante “revisitar” a arquitetura? Não é mesmo!? .. então .. drifts se acumulam. E como ..

Pequenas mer*#$&s fazem grandes cag$%!% …

Muitos drifts acabam “disfarçando” uma erosion … E como …

Grandes  cag$%!% formam montes de bo$%#"!

O projeto se vai..

Como evitar a tragédia?

A arquitetura descritiva precisa ser idêntica a arquitetura prescritiva. Para isso:

  1. Precisamos delinear e explicitar claramente a arquitetura prescritiva (quanto mais claro, melhor!)
  2. Precisamos ponderar cuidadosamente qualquer degradação;
  3. Qualquer drift ou erosion precisam ser eliminados através da revisão da arquitetura prescritiva.

Com esperança, um pouco de sorte e muita fé …

Por hoje era isso.

Smiley piscando

Etiquetado:
Publicado em: Sem categoria