Softwarequalitätsmessung

Berechnung von Kennzahlen zur Abschätzung der Softwarequalität von Java-Programmen

Kennzahlen für die Softwarequalität
Das System soll Java-Programme analysieren und Kennzahlen über die Komplexität der Programme berechnen. Hierzu gehören die Anzahl der Klassen und Schnittstellen, die Anzahl der Methoden und Datenfelder, die Vererbungstiefen, der Umfang der Methodenrümpfe, die Anzahl der einfachen Operationen, der Methodenaufrufe, die Anzahl der Schleifen, Verzweigungen und Ausnahmenbehandler, der GOTOs, BREAKs, RETURNs und THROWs, Länge des Quellcodes in Zeilen und Kommentarlänge. Diese Kennzahlen sollen anschließend in Beziehung gesetzt werden: mittlere Anzahl von Methoden pro Klasse, mittlere Methodenrumpfgröße, ...

Die Kennzahlen sollen für ein gesamtes Paket, aber auch für jede einzelne Klasse eines Paketes und für jede Methode einer Klasse abrufbar sein. Es soll also möglich sein, von einer Projektübersicht ausgehend gezielt detailierte Information abzurufen.

Im einem zweiten Schritt sollen zwei Projekte (die die gleiche Aufgabe lösen) miteinander verglichen werden und die Kennzahlen zueinander in Beziehung gesetzt werden, so dass Rückschlüsse auf die Qualität der Lösungen gemacht werden können.

Die Ausgabe soll in Form eines HTML-Dokumentenbaums erfolgen.

Programmiersprachen und Werkzeuge
1. Ansatz
Analyse von class-Dateien: Die meisten gesuchten Kennzahlen können aus den JVM class-Dateien extrahiert werden. Hierzu kann einmal die Reflection-Schnittstelle verwendet werden, aber auch eine Schnittstelle zum Analysieren den JVM-Instruktionen. Der Vorteil in diesem Ansatz liegt darin, dass kein Java-Parser benötigt wird, der Nachteil darin, dass quellcodespezifische Kennzahlen nicht mehr berechnet werden können.
2. Ansatz
Analyse von Java-Quellen mittels eines Java-Parsers. Hierzu ist eine Java-Grammatik und ein parsererzeugendes System, zum Beispiel JLex und CUP, notwendig. Grammatiken für Java stehen im Web zur Verfügung. Man kann hier eine einfachere Grammatik verwenden als ein Java-Comiler sie benötigt, da man von fehlerfrei übersetzbaren Java-Programmen ausgehen kann.
Umgebung
Java 1.2