Software-Engineering Lösung für Praktikum I Software-Engineering Software-Metriken Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I Zyklomatische Zahl (CCN) Wird pro Methode berechnet Darstellung der Programms als Kontrollflussgraph V(G) = e – n + 2 e = Anzahl der Kanten n = Anzahl der Knoten Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I Zyklomatische Zahl Faustregeln für die zyklomatische Komplexität V(G): V(G) Risiko 1 – 10 Einfaches Programm, geringes Risiko 11 – 20 komplexeres Programm, erträgliches Risiko 21 – 50 komplexes Programm, hohes Risiko > 50 untestbares Programm, extrem hohes Risiko oder einfacher: Wenn eine Umstrukturierung ansteht, dann beginne mit der Komponente, die die h¨ochste zyklomatische Komplexit¨at hat! Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I Coupling between Objects Zählt die Referenztypen, die in • Attributdeklarationen, • formalen Parametern, • Rückgabewerttypen, • "Throws"-Deklarationen und • lokalen Variablen verwendet werden, sowie • Typen, mit denen die Auswahl von Attributen und Methoden getroffen wird. • Primitive Typen, Typen des Pakets java.lang und Supertypen werden nicht gezählt. Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I Coupling between Objects Der Messwert für eine Klasse A gibt die Anzahl von Klassen an, die A benutzt. • Besitzen Klassen einen hohen CBO, sind sie aufgrund zahlreicher Abhängigkeiten mit anderen Klassen schwer einzeln wiederverwendbar und verstehbar. • Außerdem sorgt die hohe Verflochentenheit dafür, dass bei Änderungen einer einzelnen Klasse, viele weitere Systemteile in Mitleidenschaft gezogen werden. Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I Response for a Class Bei der Berechnung dieses Maßes werden Klassen als nachrichtenempfangende Einheiten angesehen und die Frage gestellt: Welche Methoden können ausgeführt werden, wenn eine beliebige Nachricht an eine Instanz dieser Klasse gesendet wird? Zu diesem "reponse set" gehören 1. alle Methoden der Klasse selbst und 2. alle weiteren Methoden anderer Klassen, welche durch die Methoden in (1.) direkt aufgerufen werden. Das Maß liefert daher ein Indiz für die Interaktionskopplung der betreffenden Klasse. Die Autoren argumentieren, dass Klassen mit einer großen Antwortmenge ein größeres Maß an Verständnis erfordern und daher zu mehr Aufwand beim Debuggen und Testen führen. Also: Je größer RFC, desto höher ist die Fehlerwahrscheinlichkeit Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I ACD-Metrik Die ACD ist die mittlere Anzahl von Abhängigkeiten einer Komponente zu anderen Komponenten. ACD=10/5=2 Prof. Dr. Bernd Hafenrichter
Lösung für Praktikum I NCSS-Metrik NCSS = Non-Commenting-Source-Statement Setzt sich wie folgt zusammen Alle Deklarationen Alle Statements Keine Kommentare Keine leeren Anweisungen Grundansatz: Zähle alle ";" und alle " {„ Klassen mit mehr als 1000 Zeilen Code werden als zu groß erachtet Prof. Dr. Bernd Hafenrichter