(Fe de erratas)
Cap. 4. Medición en la Orientación a Objetos
Página 79:
AHF es simétrica a MHF, por lo que algunas M (método) deberían de ser A(atributos):
donde:
Página 82:
El sumatorio es desde i = 1 en vez de 0.
Página 89:
LCOM no esta adecuadamente definido, por lo que se extiende la explicación
Definición:
Considérese una clase
con n métodos
.
Sea
= el conjunto de variables instancias por el método
.
Hay n conjuntos tales que
;
Sea
,
y
.
Si todos los conjuntos n,
son
,
entonces sea .
Ejemplo: Considérese la clase C
con 3 métodos
.
Sean
LCOM es el numero de intersecciones vacías menos el numero de intersecciones no vacías, por lo que en este caso es 1.
Guías y comentarios: LCOM establece en qué medida los métodos hacen referencia a atributos. LCOM es una medida de la cohesión de una clase, midiendo el número de atributos comunes usados por diferentes métodos e indicando la calidad de la abstracción hecha en la clase.
La cohesión entre métodos dentro de una clase es deseable, ya que favorece la encapsulación. Alta cohesión en los métodos dentro de una clase supone que ésta no puede ser dividida, fomentando la encapsulación.
Un valor alto de LCOM implica falta de cohesión, es decir, escasa similitud de los métodos. Esto puede indicar que la clase está compuesta de elementos no relacionados, incrementando la complejidad y la probabilidad de errores durante el desarrollo. La escasa cohesión puede indicar que la clase debería de ser dividida en varias subclases.
LCOM tal como ha sido propuesta por Chidamber y Kemerer, ha tenido varias criticas. A la ya comentada por [Henderson-Sellers, 94] comentada en capítulo, se añade la de [Hitz and Montazeri, 95] [Hitz and Montazeri, 96]:
Definición: [Hitz and Montazeri, 95] [Hitz and Montazeri, 96]
Sea X una clase; Ix el conjunto atributos
(variables) de la clase X; y Mx el conjunto de métodos.
Además, se considera el grafo
no
dirigido donde:
Eso significa que los vértices que están conectados en el grafo tienen al menos un atributo común.
Entonces definimos LCOM(X) como el numero de componentes conectados de Gx, que es el numero de clusters que operan en conjuntos disjuntos de atributos.
Cohesión secuencial: Cada
método tiene un conjunto de atributos comunes con otros dos
métodos. Este caso corresponde al diseño de una clase
con mínima cohesividad. LCOM = 1. La cardinalidad de E para
este caso es:
Figura 1. Cohesión secuencial
Máxima cohesión: Todos los métodos acceden al mismo conjunto de atributos. La cardinalidad de E es:
Figura 2. Máxima cohesión
Por tanto, podemos romper muchos de los enlaces que dan lugar a LCOM = 1. Cuantos más nodos haya en el grafo, mayor será la cohesión en la clase. Por conveniencia se asocia a ¦E¦ en el intervalo [0,1]:
Guías y comentarios: Para clases con mas de 2 métodos, C puede ser usado para discriminar entre casos con LCOM=1, ya que C nos da una medida de la desviación de un grafo de mínima cohesividad.
Referencias
[Henderson-Sellers, 1996] Henderson-Sellers, B. Object-Oriented Metrics Measures of Complexity. Upper Saddle River, NJ: Prentice Hall, 1996.
[Hitz y Montazeri, 95] Hitz M. y Montazeri B. Measure Coupling and Cohesion in Object-Oriented Systems. Proceedings of International Symposium on Applied Corporate Computing (ISAAC'95), Octubre 1995.
[Hitz y Montazeri, 96] Hitz M. and Montazeri B. Chidamber and Kemerer's Metrics Suite; A Measurement Theory Perspective. IEEE Transactions on Software Engineering, vol. 22, no. 4, pp. 267-271, Abril 1996.