Software Metriken
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

SoftwareMetriken messen die Qualität von Software (siehe SoftwareQualitätsmerkmale).

Typische Metriken die den Erfolg der Politik messen sind Entwicklung der Arbeitslosigkeit, Wirtschaftswachstum, Neuverschuldung, CO-2 Austoss usw. Wie in der Politik ist es in der Softwareentwicklung gefährlich sich nur an eine einzelne Metrik zu orientieren. Erst die Messung von mehreren Metriken ergeben ein realistisches Bild. Auch lässt sich immer streiten ab welchen Ergebnissen, von Erfolg bzw. Misserfolg reden kann.

Typischen Metriken für objektorientiere Software sind:

Methoden

  1. Anzahl Zeilen pro Methode
  2. Zahl der gesendeten Methoden
  3. Komplexität der Methoden (messbar durch Gewichtung einzelner Ausdrücke)
  4. Prozentzahl kommentierter Methoden
Schlanke Methoden lassen sich eher wiederverwenden als komplexe Methoden. Komplexe Methoden sind schwerer zu testen, und es ist sehr wahrscheinlich, dass sie redundanten Code haben. In Smalltalk sollte eine Methode normalerweise nicht über 10 Zeilen lang sein. ( In C++ und Java sind das sicher höhere Werte).

Klassen

  1. Anzahl (öffentlicher) Methoden pro Klasse (statisch und nicht statisch)
  2. Anzahl Instanzvariablen pro Klasse
  3. Anzahl der Klassenvariablen
  4. Verhältnis öffentlicher zu privaten Methoden
  5. Prozentzahl der kommentierten Klassen
Hat eine Klasse viele Variablen und Methoden, so liegt i.a. liegt zuviel Verantwortung auf dieser Klasse. Es ist zu pruefen ob man diese Klasse nicht in mehreren kleineren Klassen aufspalten sollte.

Vererbung

  1. Wird multiple Vererbung angewendet
  2. Vererbungstiefe
  3. Verhältnis abstrakter Klassen zu nicht abstrakten Klassen
  4. Spezialisierungsindex (für eine Klasse) = Zahl überschriebener Methoden * Vererbungstiefe / Gesamt Anzahl der Methoden
Obwohl Vererbung ein typisches Merkmal der Objektorientiertheit ist, widerspricht die Vererbung der Idee der Kapselung. Eine Änderung der Oberklasse wirkt sich eben auf allen Unterklassen aus. Anfänger wenden i.a. zu häufig die Vererbung an.

Kopplung und Kohäsion

Klassen die in einem Paket zusammengefasst sind, sollten eine hohe Kohäsion und Klassen in verschiedene Paketen eine geringe Kopplung haben.

Eine Änderung einer Schnittstelle einer Klasse; sollte idealerweise nur eine Anpassung der Klassen im selben Paket notwendig machen. Wenn Klassen in verschiedenen Paketen voneinander abhängig sind, dann sollte die Abhängigkeit nur einseitig sein.

Einfache Metriken die Kopplung und Kohäsion messen kenne ich nicht. Für Java gibt es das Tool JDepend Dies misst die Abhängigkeit von packages und warnt insbesondere von gegenseitigen Abhängigkeiten.

In der Praxis werden Metriken selten angewandt. Durch konsequentes Refaktorisieren oder durch TestgetriebeneEntwicklung entsteht i.a. von selbst Code von hoher Qualität. Metriken sind eine grosse Hilfe wenn es darum geht fremden Code zu analysieren. Die Einhaltung von Metriken können auch ein Abnahmekriterium sein[KlausMeucht]

Software

Links

--kg

Spezielle Metriken

Messen kann dein Freund sein, wenn du ein bestimmtes Ziel verfolgst und eine Metrik an der Hand hast, die deinen Arbeitsfortschritt in Bezug auf dieses Ziel misst. Selbst ausgereifte Prozessmodelle a la CMM oder DinIso9001 lassen gewisse Spielräume, was denn nun eigentlich ganz konkret gemessen werden muss.

UrsacheSymptomMetrik
Code ist (zu) komplizierthohe Einarbeitungs- und Wartungskosten Cyclomatic Complexity
Entwickler testen nicht vor dem EincheckenFehler werden verschleppt - Integrationsaufwand steigt Build-Statistik
Planung ohne SchätzmodellMeilenstein wird nicht erreicht Function Point Analysis
DesignfehlerCodeSmell - Spaghetticode - usw.Ableitbar aus WardsWiki:PrinciplesOfObjectOrientedDesign - s. o.: Kopplung und Kohäsion

Diskussion

Ich glaube, es ist nicht ganz korrekt zu sagen, dass SoftwareMetriken Qualität messen - in den meisten Fällen sind es sogar eher quantitative Eigenschaften die gemessen werden, und aus denen dann mehr oder weniger erfolgreich versucht wird, qualitative Aussagen abzuleiten. Deutlichstes Beispiel ist das bekannte LinesOfCode.


KategorieSoftwareQualität


StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 16. Juli 2006 19:36 (diff))
Suchbegriff: gesucht wird
im Titel
im Text