(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.