-
Was ist eine Metrik?
- Quantifizierbare Messwerte der Software
-
Welche 2 Arten von Metriken gibt es?
- Projektmetriken - Interessant fuer Projekt Manager. Kosten, Bug Requests, Degree of Code Documentation. High level of abstraction
- Design Metriken - Interessant fuer Software Engineers, die am Projekt arbeiten. Komplexitaet, LOC, Kupplung. low level of abstraction
-
Welche Metriken haben sie kennengelernt?
- Size Metriken
- LOC - lines of code
- NOC - number of classes
- NOM - number of methods
- NOA - number of attributes
- NOS - number of statements
- Complexity Metrics
- CYCLO - cyclomatic complexity (number of linearly independent paths through a program's source code)
- WMC - weighted method count
- Coupling and Cohesion
- FANIN - Number of calling methods
- FANOUT - Number of called methods
- Inheritance
- AHH - average hierarchy height
- DIT - depth of inheritance tree
- ANDC - average number of derived classes
-
Was ist die einfachste Kopplungsmetrik?
- Number of Calling/Called Methods, FANIN/FANOUT
-
Wie kann man die Metriken graphisch darstellen? (#9)
- Mittels der Overview Pyramide
-
Overview Pyramide (Marinescu) mir 3 Bereichen zeichnen und erklaeren.
-
Overview Pyramide besteht aus drei Bereichen: Size and Complexity (LOC, NOM, Anzahl Pfade), Inheritance (Hierarchy Heiht, Derived Classes) and Coupling (FANIN, FANOUT)
-
In Overview Pyramide hat man die Quotienten (zB CYCLO/LOC)
-
Und die Referenzwerte (average valuers) um zu sehen, ob Quotient gut oder schlecht ist
-
Viele Metriken sind schwierig zu interpretieren. Wie kann man das verbessern? Wie erkennt man die Probleme?
- Man kann die Overview Pyramide erstellen, und die Quotienten zwischen Metriken berechnen.
- Probleme erkennt man aus Abweichungen von Referenzwerte.
-
Was sagen die Quotienten in der Pyramide? Was ist der Nachteil?
- Es gibt es Quotient und ein Referenzwert. Wenn Quotient von Referenzwert abweicht, kann man Problem erkennen.
- Nachteil: es wird Mittelwert gebildet, was nicht immer aussagekraftig ist.
-
Zu welchen Problemen fuehrt die Durchschnittsbildung? Wann sieht die Pyramide gut aus obwohl System nicht gut ist?
- Zum Beispiel gibt es ein System, die sehr viele Methoden hat, mit kleinen FANIN Values. Und dann wird eine Gott-Methode mit riesigem FANIN Value erstellt. Durchscnittlich wird man es aber nicht erkennen - Situation viel schlechter geworden, aber in Pyramide hat sich vielleicht eine dritte Nachkommastelle geaendert.
-
In der Realitaet kriegen wir oft ein Stueck Software vorgesetzt, wie koennen wir da die Qualitaet einschaetzen?
- Metriken sind dann aussagekraeftig, wenn man die Referenzwerte hat
- Design analysieren, nach Bad Smells suchen
- Dokumentation analysieren
- Test-Coverage analysieren