Matheus Castiglioni

Aviso

A partir de 10/02/2022 o blog foi descontinuado em favor ao meu canal no youtube, ou seja, não haverá novas publicações.

Irei dedicar e focar exclusivamente no meu canal para criação e compartilhamento de conteúdo, se você tem interesse em continuar me acompanhando peço por favor que se inscreva no canal.

Medindo e Entendendo Acoplamento

Algo muito falado quando estamos construindo um sistema é o tal de “acoplamento”, mas afinal, o que isso significa e como podemos medí-lo? Acoplamento é a medida do nível de interdependência entre os módulos, ou seja, são as dependências entre os códigos.

Existem alguns tipos de acoplamento:

Todos esses tipos de acoplamentos possuem seus trade-off, ou seja, às vezes vamos ter mais de um tipo e menos de outro (dependendo da situação e contexto).

Além dos tipos de acoplamento também existem duas categorias de acoplamento:

Medindo acoplamento

Uma das formas de medir o acoplamento é através do Acoplamento Aferente (Afferent Coupling) e Acoplamento Eferente (Efferent Coupling) ou Incoming Coupling ou Outgoing Coupling.

Medindo abstrações

Abstrações é a proporção de artefatos abstratos para artefatos concetros, ela representa uma medida entra abstrações e implementações.

A equação que define tal métrica pode ser representada da seguinte forma:

Representação da equação de abstração

Nessa equação ma representa elementos abstratos (interfaces ou classes abstratas) com o módulo e mc representa elementos concretos (classes não abstratas).

Exemplo: Imagine uma aplicação com 5.000 linhas de código, todas em uma única função main, o numerador de abstração é 1 enquanto o denominador é 5000.

Medindo instabilidade

Instabilidade é uma métrica derivada, definida como a proporção de acoplamento eferente à soma de ambos (aferente e eferente). Ela determina a volatilidade da base de código, uma base de código que possuí um alto nível de instabilidade quebra mais facilmente quando mudada por causa do alto acoplamento.

A equação que define tal métrica pode ser representada da seguinte forma:

Representação da equação de instabilidade

Na equação ce representa acoplamento (coupling) eferente (efferent) (ou que sai (outgoing)) e ca representa acoplamento (coupling) aferente (afferent) (ou que entra (incoming)).

Distância da sequência principal

A métrica de distância imagina um realcionamento ideal entre abstrações e instabilidades.

A equação que define tal métrica pode ser representada da seguinte forma:

Representação da equação de distância

Nessa equação A representa o resultado da equação de abstrações e I representa o resultado da equação de instabilidade.

Ambos abstrações e instabilidade são frações do qual o resultado irá sempre ficar entre 0 e 1. Então quando formamos um gráfico podemos ver:

Representação do gráfico de distância

Ao aplicar tais métricas para uma classe particular, isso nos permite calcular a distância da classe da sequência principal:

Calculando sequência principal para uma classe

Olhando para a linha, conseguimos extrais mais informações, por exemplo:

Zone de inutilidade com zona de dor

Onde:

Conclusão

Nesse post vimos e entendemos um pouco sobre acoplamentos (tipos e categorias) e sobre algumas métricas que podemos tirar referente à tal aspecto de arquitetura dos nossos sistemas.

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