LCOM (lack of cohesion in methods)

Zur Messung von Softwareprodukten werden sogenannte Software-Metriken verwendet, die unterschiedliche Eigenschaften von Softwareprodukten und -prozessen quantifizieren. Eine objektorientierte Metrik berücksichtigt bei der Messung von Software die Zusammenfassung von Datenstrukturen und der darauf anwendbaren Methoden zu einem Objekt, dessen Beziehungen zu anderen Objekten sowie die generellen Strukturmerkmale objektorientierter Programmierung.


Die Metrik nach Lack of Cohesion in Methods (LCOM) ist ein Maß für die Kohäsion - d.h. den Zusammenhalt - von Methoden in der betrachteten Klasse. Weitere objektorientierte Software-Metriken sind Weighted Methods for Class (WMC), Response for a Class (RFC), Coupling Between Objects (CBO), Depth of Inheritance Tree (DIT) und Number of Children (NOC).

LCOM-Definition: LCOM ist gleich der Paare von Methoden ohne gm. Instv. Abzüglich der Paare von Methoden mit gm. Instv. gm. Instv. ist die gemeinsame Instanzvariable.

Wichtig bei dieser Methode ist es, darauf zu achten, dass jeweils Paare von Methoden betrachtet werden. Da ein negativer Wert von LCOM unsinnig ist, wird LCOM=0 gesetzt, wenn die Subtraktion einen negativen Wert ergibt.

Klasse mit Methoden und Instanzvariablen

Klasse mit Methoden und Instanzvariablen

Gemäß anliegender Darstellung ist eine Klasse A mit 3 Methoden m1(), m2() und m3() gegeben, die jeweils auf bestimmten Instanzvariablen operieren.

Beispiel Klasse mit Methoden und Instanz-variablen:

Paare: m1/m3, m1/m2, m2/m3, mit m1/m2 als gemeinsame Instanzvariable c.

Paare von Methoden ohne gm. Instv. = 1+0+1, Paare von Methoden mit gm. Instv. = 0+1+0

LCOM(A) = 2-1 = 1.

Anwendung: Ansatz zur Überprüfung der Kapselung einer Klasse. Dies aus der Überlegung heraus, dass ein hoher Wert von LCOM auf eine schlechte Kapselung hindeutet, da offensichtlich viele Methoden auf disjunkten Attributmengen operieren.

Informationen zum Artikel
Deutsch:
Englisch: lack of cohesion in methods - LCOM
Veröffentlicht: 05.02.2014
Wörter: 260
Tags: #Analyse
Links: CBO (coupling between objects), Datenkapselung, DIT (depth of inheritance tree), Instanzvariable, Klasse