Made in Germany: SonarJ prüft Softwarequalität

Unverständlich gewordener Software will das Unternehmen hello2morrow mit dem Softwarearchitektur-Werkzeug SonarJ gegensteuern: Es prüft während der Entwicklung, ob Code und Architektur übereinstimmen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 6 Min.
Von
  • Barbara Lange
  • Alexander Neumann
Inhaltsverzeichnis

Während der Softwareentwicklung gehen oft Architektur und Programmcode auseinander. Dadurch erhöht sich der Aufwand für die Pflege und Wartung erheblich, denn kaum jemand kann die nun unverständlich gewordene Software noch nachvollziehen. Mit SonarJ will das Münchener Unternehmen hello2morrow gegensteuern: Das Softwarearchitektur-Werkzeug prüft während der Entwicklung, ob Code und Architektur übereinstimmen.

Mehr Infos

Made in Germany – innovative Softwareentwicklung aus Deutschland

In der "Made in Germany"-Artikelserie stellt heise Developer Unternehmen aus dem deutschsprachigen Raum vor, die mit innovativen Produkten im Bereich Softwareentwicklung oder angrenzenden Gebieten aufwarten. Diese Hidden Champions der IT-Branche brauchen sich international nicht zu verstecken.

"Wer die Softwarequalität kontinuierlich misst, kann seine Produktivität um etwa 20 Prozent steigern", äußert sich Alexander von Zitzewitz, Managing Director bei hellow2morrow gegenüber heise developer. Denn die Realität ist häufig so: Während der Programmierung entfernen sich Architektur und Software im Laufe eines Projekts immer weiter voneinander. Die Software erfüllt zwar die technischen und funktionalen Anforderungen, im Inneren aber ist sie längst nicht mehr nachvollziehbar strukturiert, sodass sie nur noch schwer zu warten oder zu erweitern ist, von einer Wiederverwendbarkeit ganz zu schweigen. Von Zitzewitz nennt das "Erosion" der Architektur.

Der Einsatz von SonarJ soll das verhindern. Projektleiter können mit dem Werkzeug die Architektur der geplanten Software definieren und mit Softwaremetriken Zielgrößen für die technische Softwarequalität festlegen. Die Modellierung der Architektur erfolgt grafisch (SonarJ-Architect) in Form einer Matrix, die sich das Unternehmen mittlerweile hat patentieren lassen. Sie besteht aus technischen Layern (zum Beispiel User Interface, Geschäftslogik oder Datenzugriff) und vertikalen Slices.

Die Visualisierung der Architektur und Abhängigkeitsstruktur eines Systems soll den Überblick erleichtern. Wenn also Entwickler bei der Programmierung von der Architektur abweichen, sehen sie rot: SonarJ markiert die betreffenden Codezeilen und überwacht die Einhaltung der Architekturvorgaben – sowohl bei fertigen Java-Systemen als auch während der Entwicklung.

SonarJ visualisiert die Struktur von Java-Systemen (Abb. 1).

Die Beschäftigung mit dem Thema Softwarequalität geht für von Zitzewitz zurück bis in die 90er-Jahre. 1999 war er an einem Projekt für einen Automobilhersteller beteiligt, das die Softwarequalität mit Guidelines und Metriken messen sollte, um sicherzustellen, dass Programmcode und Architektur sich nicht auseinanderentwickeln.

Auf der Basis der Erfahrungen hat er gemeinsam mit zwei weiteren Programmierern die Software SonarJ entwickelt und im Sommer 2005 das Unternehmen hello2morrow in Berg bei München gegründet – den ersten Kunden konnten sie Ende 2005 gewinnen. Im Gründungsjahr gewann die Firma den Preis der Münchener IT-Messe Systems für die "spannendste Innovation". "Viele Unternehmen haben noch gar nicht das Bewusstsein, ihre Software regelmäßig zu messen. Es ist noch viel Überzeugungsarbeit erforderlich", so von Zitzewitz.

Projektleiter können mit dem Werkzeug die Architektur der geplanten Software definieren und mit Softwaremetriken Zielgrößen für die technische Softwarequalität festlegen (Abb. 2).

SonarJ visualisiert und analysiert den Java-Code und Klassen-Files dahingehend, ob sie mit der im Vorfeld definierten logischen Architektur konform sind, und findet in der Architektur nicht vorgesehene und nicht dokumentierte Abhängigkeiten auf Klassen-, Paket- und Modulebene. Ein "Cycle Visualization and Breakup Tool" schlägt Restrukturierungsmaßnahmen vor. Die Korrekturen des von der Architektur abweichenden Codes können Entwickler zunächst über virtuelle Refactorings simulieren, die die Auswirkungen auf das gesamte System darstellen.

Das Werkzeug benötigt kein Repository, sondern nutzt ausschließlich den Speicher. Laut von Zitzewitz kann SonarJ große Projekte analysieren mit mehreren Millionen Codezeilen. Sie lassen sich in Subprojekte, horizontal und vertikal, unterteilen. Gleichzeitig unterstützt das Softwareachitektur-Werkzeug eine schrittweise Sanierung. In den Build-Prozess integriert, liefert der SonarJ-Server regelmäßige Informationen über die Struktur des Softwaresystems.

Darüber hinaus lässt sich mit dem Werkzeug die technische Qualität von fertiger Software prüfen, zum Beispiel von externen Zulieferern auf der Basis statischer Codeanalysen. SonarJ visualisiert die innere Struktur und wertet die Softwaremetriken aus.

SonarJ misst die Qualität von Software anhand von Metriken (Abb. 3)