Kurz & Gut: Software-Metriken von Dipl.-Ing.(BA) Henning Sievert Kurz & Gut Software Metriken von Dipl.-Ing.(BA) Henning Sievert In diesem Flyer werden nur die Produkt-Metriken vorgestellt, da die Nutzung der Software-Metriken Einführung für die objektorientierte Analyse dargestellt wird. In diesem Flyer wird erläutert, was Software- Diese kann sich nur auf eine bereits erstellte Metriken sind und wie sie im Rahmen der Software bzw. auf einen erstellten Entwurf Software-Entwicklung zur Beurteilung im Rahmen beziehen. der objektorientierten Analyse eines SoftwareDie Produkt-Metriken lassen sich wiederum in Entwurfs genutzt werden können. zwei Gruppen aufteilen: • Größenmetriken, die sich direkt auf den implementierten Code beziehen und • Strukturmetriken, mit denen Werte anhand von Ablaufdiagrammen oder der Klassenstruktur einer Software erzeugt werden. Größenmetriken Zu den Größenmetriken zählen beispielsweise die wichtigen Metriken „Lines Of Code“ (LOC) und die Metriken von Halstead. Hauptteil Lines Of Code Die LOC sind ein scheinbar einfaches Maß. Für diese Metrik wird die Anzahl der implementierten Code-Zeilen eines gesamten Programms, einer Klasse oder ein Funktion bestimmt. Es muss jedoch festgelegt werden, in welcher Weise diese Zeilen gezählt werden sollen: Alle Zeilen, nur Eine Metrik im Allgemeinen ist der zahlenmäßige Zeilen mit ausführbarem Code, Zeilen mit Code Abstand einer Eigenschaft und „Messen“ ist der und Zeile mit Kommentaren, etc. Prozess, der Objekteigenschaften der realen Welt Soll mit Hilfe der LOC Software verglichen Zahlen oder Zeichen zuordnet. werden, die in unterschiedlichen Software-Metriken werden genutzt, um eine Programmiersprachen entwickelt worden ist, so objektive und kompakte Beschreibung einer ist es zusätzlich nötig, eine normierte Einheit Software erstellen zu können. Damit wird eine einzuführen, welche die Komplexität der Beurteilung der Software hinsichtlich jeweiligen Sprache berücksichtigt. verschiedener Kriterien, wie z.B. Qualität oder Wartbarkeit, ermöglicht. Eine Software-Metrik ist nach IEEE Standard 1061 „eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet. Dieser berechnete Wert ist interpretierbar als der Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit.“ Halstead-Metriken Software-Metriken lassen sich in zwei Arten Die Halstead-Metriken zählen die verwendeten klassifizieren: Operatoren und Operanden und bilden daraus • Prozessmetriken, die dazu dienen, verschiedene Maße. Diese Maße können zum Aussagen über den Erstellungsprozess Beispiel das Programmvolumen oder die Fehlerwahrscheinlichkeit für einen Code-Teil einer Software treffen zu können und sein. • Produkt-Metriken, mit denen die fertig Der Vorteil der Halstead-Metriken gegenüber den erstellte Software beurteilt werden kann. LOC ist die Berücksichtigung der Komplexität der http://www.se.uni-hannover.de Stand: 04.02.2005 Kurz & Gut: Software-Metriken von Dipl.-Ing.(BA) Henning Sievert im Programm enthaltenen Ausdrücke und Anzahl Die Metriken nach Abreu beziehen sich auf der genutzten Variablen. Der Nachteil liegt darin, gesamte Projekte. Zu ihnen gehören: dass sie keine Ablaufstrukturen berücksichtigen. • Method Hiding Factor (MHF), • Attribute Hiding Factor (AHF), • Method Inheritance Factor (MIF), Strukturmetriken • Attribute Inheritance Factor (AIF), Die „Cyclomatic-Complexity“ von McCabe und die • Polymorphism Factor (PF) und objektorientierten Metriken sind Strukturmetriken. • Coupling Factor (CF). Cyclomatic Complexity Die Cyclomatic Complexity basiert auf dem Kontrollflussgraphen eines Programms oder einer Funktion. Sie bestimmt daraus das Fehlerrisiko. Der Vorteil dieser Metrik liegt darin, dass sie einfach berechnet werden kann und die Ablaufkomplexität gemessen wird. Die Komplexität der einzelnen Module innerhalb des Kontrollflussgraphen wird hingegen nicht berücksichtigt. Tools zum Messen der Metriken Folgende Schritte sind zur Durchführung einer Messung nötig: 1. Definition der Maße, 2. Sammeln der Messwerte und 3. Analyse und Interpretation der Messwerte. Tools zum Messen sind zum Beispiel die kostenlosen Programme JMT und cccc. JMT JMT kann unter anderem alle im Flyer vorgestellten Metriken berechnen. Es unterstützt die Sprache JAVA und bietet eine graphische Benutzeroberfläche. Oberfläche von JMT Kontrollflussgraph eines Programms Objektorientierte Metriken Die objektorientierten Metriken bilden Maße anhand der Klassenstruktur einer Software. Sie können somit bereits auf den objektorientierten Entwurf einer Software angewendet werden. Die OO-Metriken beziehen sich entweder auf einzelne Klassen oder auf gesamte Projekte. Zu den Metriken, die sich auf Klassen beziehen, gehören die Metriken nach Chidamber und Kemerer: • Weighted Methods per Class (WMC), • Depth in Inheritance Tree (DIT), • Number Of Children (NOC), • Coupling Between Objects (CBO), • Response For a Class (RFC) und • Lack of Cohesion On Methods (LCOM). http://www.se.uni-hannover.de cccc Mit cccc können ebenfalls alle vorgestellten Metriken berechnet werden. Es unterstützt neben JAVA auch C++. cccc ist kommandozeilenbasiert und generiert eine Ausgabe im HTML/XMLFormat. Es ist zur automatisierten Messung der Metriken geeignet. Literatur: • Dumke, R. / Ebert, C.: Software-Metriken in der Praxis. Springer-Verlag, Berlin, 1996 • Thaller, G. E.: Software-Metriken einsetzen, bewerten, messen. 2. Auflage, Verlag Technik, Berlin, 2000 Stand: 04.02.2005