Software Engineering in der Praxis

Werbung
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Software Engineering in der Praxis
Praktische Übungen
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Software-Metriken
Dirk Wischermann
Marc Spisländer
Lehrstuhl für Software Engineering
Friedrich-Alexander-Universität Erlangen-Nürnberg
11. 12. 2006
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Inhalt
Nachlese
Objektorientiertes Design
Software-Metriken
Definition
Allgemeine Betrachtungen zum Messen
Software-Metriken mit Together
Lines of Code
Halstead-Metrik
McCabe-Metrik
Messen mit Together
Zusatz: Findbugs als Codeanalyse-Werkzeug
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Objektorientiertes Design
Objektorientiertes Design
I
Modellieren, wie Probleme gelöst werden
I
Nah an der Implementierung
Modellierungssprache UML:
I
I
I
I
I
I
Komponentendiagramm
Klassendiagramm
Objektdiagramm
Sequenzdiagramm
Zustandsautomat
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Objektorientiertes Design
Ab heute betrachten wir eine tiefere Abstraktionsstufe:
Code bzw. Implementierung
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Definition
Software-Metriken
Definition
»Eine Softwarequalitätsmetrik ist 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.«
(IEEE Standard 1061, 1992)
Zweck
Software messen, um sie vergleichbar zu machen, um:
I
Qualität zu erhöhen
I
Aufwand/Kosten abzuschätzen
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Definition
Software-Metriken
Definition
»Eine Softwarequalitätsmetrik ist 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.«
(IEEE Standard 1061, 1992)
Zweck
Software messen, um sie vergleichbar zu machen, um:
I
Qualität zu erhöhen
I
Aufwand/Kosten abzuschätzen
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Allgemeine Betrachtungen zum Messen
Kontext: Reale Welt
I
Menge von Objekten
I
Jedes Objekt verfügt über gewisse Attribute
Zum Beispiel:
I
I
I
I
I
Menge von Menschen mit Attributsfunktion »Alter«
Menge von Software mit Attributsfunktion »Lines of Code«
Menge von Software mit Attributsfunktion »Qualität«
Menge von Software mit Attributsfunktion »Komplexität«
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Allgemeine Betrachtungen zum Messen
Kontext: Reale Welt
I
Menge von Objekten
I
Jedes Objekt verfügt über gewisse Attribute
Zum Beispiel:
I
I
I
I
I
Menge von Menschen mit Attributsfunktion »Alter«
Menge von Software mit Attributsfunktion »Lines of Code«
Menge von Software mit Attributsfunktion »Qualität«
Menge von Software mit Attributsfunktion »Komplexität«
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Allgemeine Betrachtungen zum Messen
Kontext: Reale Welt
I
Menge von Objekten
I
Jedes Objekt verfügt über gewisse Attribute
Zum Beispiel:
I
I
I
I
I
Menge von Menschen mit Attributsfunktion »Alter«
Menge von Software mit Attributsfunktion »Lines of Code«
Menge von Software mit Attributsfunktion »Qualität«
Menge von Software mit Attributsfunktion »Komplexität«
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Messen
Messen bedeutet die experimentelle Bestimmung von
Attributwerten.
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Modell der realen Welt
Zur systematischen, wissenschaftlichen Untersuchung:
Abbildung der realen Objekte auf mathematische Objekte
(Mengen, Funktionen, Relationen, . . . ).
Kontext: Mathematische Welt
I
Menge M von Objekten
I
Attributsfunktion A : M → WA
I
Messfunktion mA : M → WA (Modelliert das Messverfahren
und die Messergebnisse)
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Korrekte Messung
Frage
I
Wird das Richtige gemessen, d. h. ist die Messung korrekt?
I
Bzw. gilt A = mA ?
I
Oder abgeschwächter: Korrelieren A und mA ?
Schwierigkeit
I
Oft kein Konsens über die Definition der Attributsfunktion
I
Beispiele: Qualität oder Komplexität von Software,
Intelligenzquotient, . . .
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Korrekte Messung
Frage
I
Wird das Richtige gemessen, d. h. ist die Messung korrekt?
I
Bzw. gilt A = mA ?
I
Oder abgeschwächter: Korrelieren A und mA ?
Schwierigkeit
I
Oft kein Konsens über die Definition der Attributsfunktion
I
Beispiele: Qualität oder Komplexität von Software,
Intelligenzquotient, . . .
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Korrekte Messung
Frage
I
Wird das Richtige gemessen, d. h. ist die Messung korrekt?
I
Bzw. gilt A = mA ?
I
Oder abgeschwächter: Korrelieren A und mA ?
Schwierigkeit
I
Oft kein Konsens über die Definition der Attributsfunktion
I
Beispiele: Qualität oder Komplexität von Software,
Intelligenzquotient, . . .
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Korrekte Messung
Frage
I
Wird das Richtige gemessen, d. h. ist die Messung korrekt?
I
Bzw. gilt A = mA ?
I
Oder abgeschwächter: Korrelieren A und mA ?
Schwierigkeit
I
Oft kein Konsens über die Definition der Attributsfunktion
I
Beispiele: Qualität oder Komplexität von Software,
Intelligenzquotient, . . .
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Korrekte Messung
Frage
I
Wird das Richtige gemessen, d. h. ist die Messung korrekt?
I
Bzw. gilt A = mA ?
I
Oder abgeschwächter: Korrelieren A und mA ?
Schwierigkeit
I
Oft kein Konsens über die Definition der Attributsfunktion
I
Beispiele: Qualität oder Komplexität von Software,
Intelligenzquotient, . . .
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Definition von Attributsfunktionen
Mögliche Auswege
I
Definiere Attributsfunktion A durch Messfunktion mA :
A := mA
I
Korrektheit der Messung per Definition gegeben
Postuliere Korrelation zwischen A und mA :
I
I
I
Unterstelle jedem Menschen eine intuitive Vorstellung von A
Definiere mA
Prüfe durch statistischen Tests, ob mA und die »intuitive
Funktion« A korrelieren
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Definition von Attributsfunktionen
Mögliche Auswege
I
Definiere Attributsfunktion A durch Messfunktion mA :
A := mA
I
Korrektheit der Messung per Definition gegeben
Postuliere Korrelation zwischen A und mA :
I
I
I
Unterstelle jedem Menschen eine intuitive Vorstellung von A
Definiere mA
Prüfe durch statistischen Tests, ob mA und die »intuitive
Funktion« A korrelieren
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Beispiel Lines of Code
Definition der Attributsfunktion
Für alle Programme p:
A(p ) := »Anzahl der Zeilen von p«
Definition der Messfunktion
Definition der Messfunktion mA durch Algorithmus:
I
Eingabe: Programm p
I
Berechnung: Zählen der Zeilenendmarkierungen in p
I
Ausgabe: Anzahl der Zeilen in p
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Beispiel Lines of Code
Definition der Attributsfunktion
Für alle Programme p:
A(p ) := »Anzahl der Zeilen von p«
Definition der Messfunktion
Definition der Messfunktion mA durch Algorithmus:
I
Eingabe: Programm p
I
Berechnung: Zählen der Zeilenendmarkierungen in p
I
Ausgabe: Anzahl der Zeilen in p
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Allgemeine Betrachtungen zum Messen
Beispiel Lines of Code
Korrektheit der Messung
Durch mathematischen Beweis folgerbar:
A = ma
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Beispiel Software-Komplexität
Problem
Keine allgemein anerkannte, genaue Definition der
Attributsfunktion Software-Komplexität.
Hoffnung
I
Intuitive Vorstellung der Attributsfunktion SoftwareKomplexität korreliert mit einer Messfunktion (z. B. Lines of
Code)
I
Nur durch statistischen Tests (Experiment) feststellbar
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Beispiel Software-Komplexität
Problem
Keine allgemein anerkannte, genaue Definition der
Attributsfunktion Software-Komplexität.
Hoffnung
I
Intuitive Vorstellung der Attributsfunktion SoftwareKomplexität korreliert mit einer Messfunktion (z. B. Lines of
Code)
I
Nur durch statistischen Tests (Experiment) feststellbar
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Allgemeine Betrachtungen zum Messen
Beispiel Software-Komplexität
Problem
Keine allgemein anerkannte, genaue Definition der
Attributsfunktion Software-Komplexität.
Hoffnung
I
Intuitive Vorstellung der Attributsfunktion SoftwareKomplexität korreliert mit einer Messfunktion (z. B. Lines of
Code)
I
Nur durch statistischen Tests (Experiment) feststellbar
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Software-Metriken mit Together
Das Werkzeug Together bietet verschiedene Metriken an, um
Software zu messen. Für das Praktikum wichtig:
I
Lines of Code (LOC)
I
Halstead Program Length (HPLen)
I
Halstead Program Volume (HPVol)
I
Cyclomatic Complexity nach McCabe (CC)
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Lines of Code
LOC
LOC = Anzahl der Code-Zeilen
Vorteile
I
Einfach zu berechnen
I
Einfach nachzuvollziehen
Nachteile
I
Keine hohe Aussagekraft
I
Abhängig vom Programmierstil
Wischermann, Spisländer:
Software-Metriken
Software-Metriken mit Together
Findbugs
Inhalt
Nachlese
Software-Metriken
Lines of Code
LOC
LOC = Anzahl der Code-Zeilen
Vorteile
I
Einfach zu berechnen
I
Einfach nachzuvollziehen
Nachteile
I
Keine hohe Aussagekraft
I
Abhängig vom Programmierstil
Wischermann, Spisländer:
Software-Metriken
Software-Metriken mit Together
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Halstead-Metrik
Halstead-Metrik
I
Betrache Programm als Wort über zwei disjunkte
Alphabete:
Σ1 Operatoren-Alphabet (Schlüsselwörter, +, −,
Funktionenbezeichner, . . . )
Σ2 Operanden-Alphabet (Variablen, Literale)
I
Definiere dann:
N1
N2
N
n
V
:=
:=
:=
:=
:=
Wischermann, Spisländer:
Software-Metriken
»Gesamtanzahl der vorkommenden Operatoren«
»Gesamtanzahl der vorkommenden Operanden«
N1 + N2 (Programmlänge HPLen)
|Σ1 | + |Σ2 | (Programmwortschatz HPVoc)
N log n (Programmvolumen HPVol)
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
Halstead-Metrik
Halstead-Metrik
I
Betrache Programm als Wort über zwei disjunkte
Alphabete:
Σ1 Operatoren-Alphabet (Schlüsselwörter, +, −,
Funktionenbezeichner, . . . )
Σ2 Operanden-Alphabet (Variablen, Literale)
I
Definiere dann:
N1
N2
N
n
V
:=
:=
:=
:=
:=
Wischermann, Spisländer:
Software-Metriken
»Gesamtanzahl der vorkommenden Operatoren«
»Gesamtanzahl der vorkommenden Operanden«
N1 + N2 (Programmlänge HPLen)
|Σ1 | + |Σ2 | (Programmwortschatz HPVoc)
N log n (Programmvolumen HPVol)
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Halstead-Metrik
Halstead-Metrik (Fortsetzung)
Vorteile
I
Einfach zu berechnen
I
Indikator für Fehleranfälligkeit und Wartungsaufwand
I
Robust in der Wahl der Programmiersprache
Nachteile
I
Nur auf vollständigen Code anwendbar
I
Weiterführende Halstead-Metriken, wie Mentaler Aufwand
fragwürdig
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Halstead-Metrik
Halstead-Metrik (Fortsetzung)
Vorteile
I
Einfach zu berechnen
I
Indikator für Fehleranfälligkeit und Wartungsaufwand
I
Robust in der Wahl der Programmiersprache
Nachteile
I
Nur auf vollständigen Code anwendbar
I
Weiterführende Halstead-Metriken, wie Mentaler Aufwand
fragwürdig
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik
I
I
Annahme: Programm hat genau einen Eintritts- und genau
einen Austrittspunkt (erfüllt beim strukturellen
Programmieren)
Aufbau des Kontrollflussgraphen G
I
I
I
Anzahl der Kanten: e
Anzahl der Knoten: n
Zyklomatische Komplexität:
ν [G ] = e − n + 2
Wischermann, Spisländer:
Software-Metriken
(CC)
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik
I
I
Annahme: Programm hat genau einen Eintritts- und genau
einen Austrittspunkt (erfüllt beim strukturellen
Programmieren)
Aufbau des Kontrollflussgraphen G
I
I
I
Anzahl der Kanten: e
Anzahl der Knoten: n
Zyklomatische Komplexität:
ν [G ] = e − n + 2
Wischermann, Spisländer:
Software-Metriken
(CC)
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik
I
I
Annahme: Programm hat genau einen Eintritts- und genau
einen Austrittspunkt (erfüllt beim strukturellen
Programmieren)
Aufbau des Kontrollflussgraphen G
I
I
I
Anzahl der Kanten: e
Anzahl der Knoten: n
Zyklomatische Komplexität:
ν [G ] = e − n + 2
Wischermann, Spisländer:
Software-Metriken
(CC)
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik (Fortsetzung)
Eigenschaften
I
I
ν[G ] ist die maximale Anzahl linear unabhängiger Zyklen
im erweiterten Kontrollflussgraphen (= Kontrollflussgraph +
Kante vom Austrittspunkt zum Eintrittspunkt).
Verfeinfachung unter folgender Annahme:
I
I
Nur vier Klassen von Knoten im Kontrollflussgraphen:
z Funktionsknoten Knoten, die Berechnung ausführen
y Sammelknoten Knoten, die Verzweigung
zusammenführen
z Prädikatenknoten Knoten mit 2 Ausgangskanten
2 Zusatzknoten Eingangs- bzw. Ausgangsknoten
Dann gilt:
ν[G ] = e − n + 2 = (1 + x + y + 2z ) − (x + y + z + 2) + 2 = z + 1
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik (Fortsetzung)
Eigenschaften
I
I
ν[G ] ist die maximale Anzahl linear unabhängiger Zyklen
im erweiterten Kontrollflussgraphen (= Kontrollflussgraph +
Kante vom Austrittspunkt zum Eintrittspunkt).
Verfeinfachung unter folgender Annahme:
I
I
Nur vier Klassen von Knoten im Kontrollflussgraphen:
z Funktionsknoten Knoten, die Berechnung ausführen
y Sammelknoten Knoten, die Verzweigung
zusammenführen
z Prädikatenknoten Knoten mit 2 Ausgangskanten
2 Zusatzknoten Eingangs- bzw. Ausgangsknoten
Dann gilt:
ν[G ] = e − n + 2 = (1 + x + y + 2z ) − (x + y + z + 2) + 2 = z + 1
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik (Fortsetzung)
Eigenschaften
I
I
ν[G ] ist die maximale Anzahl linear unabhängiger Zyklen
im erweiterten Kontrollflussgraphen (= Kontrollflussgraph +
Kante vom Austrittspunkt zum Eintrittspunkt).
Verfeinfachung unter folgender Annahme:
I
I
Nur vier Klassen von Knoten im Kontrollflussgraphen:
z Funktionsknoten Knoten, die Berechnung ausführen
y Sammelknoten Knoten, die Verzweigung
zusammenführen
z Prädikatenknoten Knoten mit 2 Ausgangskanten
2 Zusatzknoten Eingangs- bzw. Ausgangsknoten
Dann gilt:
ν[G ] = e − n + 2 = (1 + x + y + 2z ) − (x + y + z + 2) + 2 = z + 1
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik (Fortsetzung)
Vorteile
I
Indikator für Wartungsaufwand
I
Anhaltspunkt für die Zahl benötigter unabhängiger Testfälle
für Kontrollflussabdeckung
I
Früh in der Entwicklung einsetzbar
Nachteile
I
Keine Datenkomplexität
I
Gleiche Gewichtung geschachtelter wie ungeschachtelter
Schleifen
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs
McCabe-Metrik
McCabe-Metrik (Fortsetzung)
Vorteile
I
Indikator für Wartungsaufwand
I
Anhaltspunkt für die Zahl benötigter unabhängiger Testfälle
für Kontrollflussabdeckung
I
Früh in der Entwicklung einsetzbar
Nachteile
I
Keine Datenkomplexität
I
Gleiche Gewichtung geschachtelter wie ungeschachtelter
Schleifen
Wischermann, Spisländer:
Software-Metriken
Inhalt
Nachlese
Software-Metriken
Messen mit Together
Auswertungsmöglichkeiten
Zunächst eine Tabelle...
Wischermann, Spisländer:
Software-Metriken
Software-Metriken mit Together
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Messen mit Together
Auswertungsmöglichkeiten (Fortsetzung)
I
Farbliche Kennzeichnung der Ergebnisse:
I
I
I
I
Aggregation der Werte
I
I
I
blau: Wert liegt unter einer gegebenen unteren Schranke
rot: Wert liegt über einer gegebenen oberen Schranke
schwarz: Wert liegt zwischen den Schranken
Zur Klasse
Zum Package
Kiviat-Diagramme
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Messen mit Together
Kiviat-Diagramme
Mehrere Werte werden sternförmig aufgetragen:
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Messen mit Together
Kiviat-Diagramme (Fortsetzung)
I
Richtwerte bestimmen
I
I
I
I
I
Vom Tool vorgeschlagen
Einstellbar
Maximum und Minimum
Maßzahlen normieren
Im Graphen eintragen
I
I
I
Richtwerte als Kreise
Metriken als Strahlen
Werte des Betrachteten Moduls als Polygon
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Software-Metriken
Software-Metriken mit Together
Findbugs als Codeanalyse-Werkzeug
I
Zusätzlich zu herkömmlichen Metriken erlaubt das
Werkzeug Findbugs die Suche nach Bugpattern
I
Nützlich, um nach bestimmen Kriterien die Qualität des
Codes zu erhöhen
I
Zum Beispiel: Einhalten von Codingstandards, Streams
nach dem Öffnen schließen, . . .
Wischermann, Spisländer:
Software-Metriken
Findbugs
Inhalt
Nachlese
Viel Spaß!
Wischermann, Spisländer:
Software-Metriken
Software-Metriken
Software-Metriken mit Together
Findbugs
Herunterladen