CBO (Coupling Between Object Classes)

CBO es otra métrica de las propuestas por Chidamber y Kemerer y se utiliza para medir el acoplamiento entre clases.

Originalmente, el cálculo del CBO para una clase, según las especificaciones de sus autores, se realizaba teniendo en cuenta las dependencias hacia dentro de la clase y las dependencias de la clase respecto a otras. Esto era por la propia definición que se realizó para acoplamiento entre dos clases, ya que se decía que dos clases estaban acopladas cuando una utiliza/accede a métodos y atributos de otra (por tanto se establecía una relación bidireccional). En este cálculo sólo se contaba cada ocurrencia una sóla vez, es decir, si una clase utilizaba dos métodos de otra, sólo contaba una vez. Además tampoco se tenían en cuenta las relaciones de herencia entre clases.

Posteriormente diversos autores reinterpretaron el concepto, lo que ha dado lugar a que en la actualidad en el cálculo del CBO en la mayoría de los casos solo se tengan en cuenta las dependencias hacia fuera de una clase (Fan Out). También existen interpretaciones de esta métrica donde se tienen en cuenta las relaciones de herencia.

La existencia de diferentes interpretaciones de la métrica provoca que en ocasiones la lectura de bibliografía sobre la misma no especifique con claridad si se cuenta solo las dependencias salientes o si hay que contar (como originalmente) las dependencias entrantes y salientes. Por ese motivo, si tomais la decisión de buscar más información sobre la materia tened en cuenta que podéis encontraros con definiciones y métodos de cálculo diferentes en función de la fuente que consultéis.

En cualquier caso e independientemente de la interpretación de la forma de cálculo, tal y como comenté anteriormente y tal y como el mismo nombre de la métrica indica, lo que pretende medir es el acoplamiento o lo que es lo mismo el grado de impredecibilidad del comportamiento y funcionamiento de una clase por la dependencia que tiene de otras y si se toma la definición original de Chidamber y Kemerer además el grado de responsabilidad o influencia de esta clase respecto de otras, es decir, el grado en el que modificaciones de la clase puede afectar al funcionamiento o compartamiento de otras.

Como sucede en el caso de otras métricas que miden acoplamiento, como por ejemplo RFC o DIT, es una medida de la complejidad de una determinada clase y por tanto, valores de CBO altos sugieren que puede ser una clase candidata a ser tratada mediante pruebas unitarias (aunque como bien sabemos las pruebas unitarias no entran en aspectos funcionales) y a estar en cuarentena en las tareas de mantenimiento por posibles efectos colaterales provocados por la modificación de clases con las que tiene dependencia hacia afuera.

Responder

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

A %d blogueros les gusta esto: