LCOM4 y la falta de cohesión en las clases

LCOM4 es otra métrica que utiliza Sonar y en la cual el concepto también es independiente de la existencia del producto.

Esta métrica mide la falta de cohesión de una determinada clase (forma parte de un conjunto de métricas que cogen su nombre de las iniciales de Lack of Cohesion of Methods). Antes de entrar a analizar cómo funciona esta métrica, es de interés mencionar aunque sea en líneas generales, qué es la cohesión y para qué sirve.

La cohesión mide la especialización (o la proximidad al principio de responsabilidad única) de una determinada clase o lo que es lo mismo cómo de relacionados están los distintos elementos (atributos y métodos) que la componen. Se entiende que clases más especializadas son más mantenibles. Esto es fácil de apreciar cuando por ejemplo miramos el código de una clase cohesionada y el código de una clase Tutti Frutti, en el primer caso veremos que la clase describe un objeto y su comportamiento, considerando dicho objeto como algo “atómico”, en el segundo caso nos podremos encontrar (exagerando mucho) clases que plancharán la ropa, jugarán al fútbol, te hacen un Cola Cao y son capaces de mantener una charla contigo sobre metafísica. Evidentemente, por muy complejo que sea el primer tipo de clases, probablemente el comportamiento, inteligibilidad, mantenibilidad, etc… de la segunda se vea afectado en sentido negativo.

Existen distintos grados de cohesión, según la forma en qué estén relacionados sus elementos. En el párrafo anterior me centré en la de carácter funcional, que es la que me parece más interesante.

¿Cómo funciona LCOM4? Cálcula un valor para una determinada clase, si ese valor es mayor que uno, la clase es sospechosa de falta de cohesión (cuento mayor sea dicho valor, menos cohesión tendrá). Lo que hace Sonar es indicarte el porcentaje de clases respecto al total que tienen un LCOM4 mayor que uno, así como calcularte el LCOM4 medio. Como en el resto de métricas de Sonar, la clave está en definir umbrales, es decir, qué porcentaje de clases con LCOM4 mayor que uno se considera aceptable y cuál es el máximo valor de LCOM4 admisible para las clases. Puede haber casos donde se pueda justificar superar dichos umbrales (suponiendo que dichos umbrales se hayan depurado con la experiencia), en ese caso, el equipo de desarrollo deberá explicar los motivos y ser coherentes si quiere que se le acepte la entrega.

Para el cálculo del LCOM4 de una clase básicamente lo que hace es medir el número de relaciones diferentes que se establecen entre métodos, teniendo en cuenta que un método se considera relacionado con otro si acceden a un atributo común de la clase o si uno llama a otro. Para el cálculo hay métodos que no se tienen en cuenta como por ejemplo los constructores. Tampoco se tienen en cuenta los accesores.

A través de este enlace podréis acceder a un ejemplo bastante bueno para comprender cómo se calcula esta métrica.

Por tanto, la cohesión es un factor a tener en cuenta junto al acoplamiento (entre otros factores) ya que condiciona la mantenibilidad y deuda técnica de los proyectos de desarrollo de software.

About these ads
9 comentarios
  1. Francisco dijo:

    Excelente articulo.

    Tienes idea de que umbrales son logicos y cuales no? Existen excepciones como por ejemplo elementos comunes o del framework?

    Saludos y nuevamente se agradece.-…..

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 3.200 seguidores

%d personas les gusta esto: