• 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)

      Untitled

    • In Overview Pyramide hat man die Quotienten (zB CYCLO/LOC)

      Untitled

    • Und die Referenzwerte (average valuers) um zu sehen, ob Quotient gut oder schlecht ist

      Untitled

  • 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