Matheus Castiglioni

Big Ball of Mud

Durante o ciclo de desenvolvimento dos nossos softwares podemos e vamos em algum momento nos deparar com desafios, às vezes menos complexos e varias vezes muito complexos.

Um desafio e cenário um tanto quanto famoso é conhecido como Big ball of mud (no literal seria: Grande bola de lama), termo popularizado por Brian Foote e Joseph Yoder’s em 1997.

Big Ball of Mud

Afinal, o que isso que dizer? O que bola de lama tem haver com desenvolvimento de softwares? Normalmente esse problema aparece em arquiteturas onde falta pontos de percepção e são cenários de acoplamento caóticos.

Ou seja, podemos definí-la como:

Uma grande bola de lama (Big ball of mud) é um sistema de software que carece de uma arquitetura perceptível

Dessa forma, podemos classificá-la como um design de software e é mais popular do que parece.

Mas, quando dizemos “arquitetura perceptivel” estamos nos referindo à que? Imagine um sistema do qual faz uso de linguaguens que suportam o paradigma OO (Orientação à objetos) onde temos o seguinte diagrama:

Diagrama de classes

Cada nó nesse diagrama representa uma classe, cada linha representa um acoplamento (tanto para fora quanto para dentro) e o negrito representa uma conexão.

Como podemos perceber esse sistema está altamento acoplado, ou seja, ele possuí um acoplamento muito alto, tanto apropriado quanto inapropriado (assunto para um próximo post). O problema desses fortes e grandes acoplamentos é que nos conduzem a sofrer quando mudanças ocorrem ou precisam ocorrer.

Isso porque cada mudança possuí um ponto de impacto muito alto e desconhecido, a gente precisa caçar e procurar pelo sistema quais são os lugares que irão sofrer com essa mudança. Ou seja, é virtualmente impossível mudar uma parte do sistema sem impactar as outras e é muito fácil a gente esquecer ou não encontrar lugares no sistema que irão sofrer com tal mudança.

Esse tipo de situação é extremamente baixo do ponto de visto de evolucionabilidade, isso porque sistemas que se encontram nessa situação são muito dificil de serem evoluídos.

Normalmente alguns motivos que conduzem um sistema à se encontrar nessa situação são:

Resumindo a big ball of mud é um anti padrão que você deve tentar evitar ao máximo durante o design de suas arquiteturas e sistemas.

Conclusão

Nesse post entendemos o que de fato signifa e quer dizer Big ball of mud, quando nos deparamos com essa situação e o que ela representa.

Abraços, até a próxima.

Matheus Castiglioni

Matheus Castiglioni

Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar todos aqueles que sou capaz.

comments powered by Disqus