SourceForge.net Logo
Disable Menu
Motivation der Code Analyse
Ziel der Code Analyse ist es Kennzahlen zu ermitteln die das Design von Softwareprojekten Bewerten. Durch die Kennzahlen sollen typische Schwächen und Fehler in der Architektur erkannt werden um so die Wartbarkeit und die Wiederverwendbarkeit von Packages zu optimieren.
Diese Kennzahlen sollten den Entwicklern von Software während der Entwicklung so früh wie möglich zur Verfügung stehen um Designprobleme wenn möglich gänzlich zu vermeiden
Ziel der Code Analyse
Optimierung der Kapselung:
  • Packages sollen nur lose gekoppelt werden
  • Koppelungen über Interfaces/abstrakte Klassen
  • "konsistente", handliche Packages
Der Weg zu den Kennzahlen
  • Ermittlung der efferenten/afferenten Beziehungen
    • Eingehende/Ausgehende Verbindungen
  • Bewertung der Beziehungen
    • Zu konkreten oder abstrakten Klassen
  • Ermittlung der Abstraktheit/Stabilität
    • Abstraktheit: Verhältnis der abstrakten zu den konkreten Klassen
    • Stabilität: Verhältnis der bewerteten Beziehungen zueinander
  • Bewertung der "Distance" zur optimalen Konstellation
Kennzahlen der Code Analyse

Für die Bewertung von Packages ist es sinnvoll verschiedene Kennzahlen zu ermitteln.

              Anzahl der Konkreten Klassen (CC)
Die Anzahl der konkreten Klassen im Package

                Abstrakte Klassen und Interfaces (AC)
Die Anzahl der abstrakten Klassen und Interfaces

                Afferent Coupelings -"used by" (Ca)
Die Anzahl von 'externen' Packages die ein Package benutz

                Efferent Coupelings - "depends on" (Ce)
Die Zahl repräsentiert die Anzahl der Packages, von denen dieses
Package selbst abhängig ist. Je höher die Zahl ist, desto mehr
Packages müssen zum kompilieren und zur Laufzeit zur Verfügung stehen.

               

Berechnete Werte der Code Analyse

Aus den in ermittelten Kennzahlen können weitere Kennzahlen zur Bewertung des Codes errechnet werden.

              Abstraktheit (A)
Wert zwischen (0-1):
Quotient aus (AC)/(Anzahl aller Klassen)

Je höher der Wert, desto größer ist der Anteil der Interfaces und abstrakten Klassen im Package.

A=0: Keine abstrakten Klassen im Package
A=1: Nur abstrakte Klassen im Package

                Instabilität (I)
Wert zwiachen (0-1)
Formel: (Ce)/(Ce + Ca)

Quotient, der angibt wie hoch das Verhältnis der herausführenden Abhängigkeiten im Verhältnis zu der Summe der Abhängigkeiten ist.

I=0:   Das Package ist komplett stabil.(Es sind keine Abhängigkeiten von anderen Packages vorhanden).
          -> Dieses Packages ist unempfindlich gegen Änderungen an anderen Packages.
I=1:   Das Package ist komplett instabil. Alle Abhängigkeiten sind "used by" Abhängigkeiten.
          -> Dieses Package reagiert sehr empfindlich auf Änderungen  in anderen Packages, da es von vielen Packages abhängig ist.

              Abstand von der Hauptsequenz (D)
Wert zwischen (0-1)
Idealisierte Haupsequenz: A+I=1

Diese Kennzahl gib den Abstand von dieser idealisierten Linie an und damit die Balance zwischen Abstraktheit und Stabilität.
Optimale Packages sind vollständig abstrakt und stabil (A=1; I=0) oder entsprechend konkret und instabil (A=0; I=1).