Wenn Software neu entwickelt wird, ist sie „nach Aktenlage“, d.h. aus der Perspektive der Architekturentwürfe und der modellierten Konzepte oftmals qualitativ (noch) einwandfrei. Die Probleme beginnen meist erst auf der Detailebene, wenn sie implementiert wird. Wenn die abstrakten Architekturentwürfe und Datenmodelle in konkreten Code umgewandelt werden. Da wird dann schon mal aus den unterschiedlichsten Gründen „von der reinen Lehre“ der modellierten Sachverhalte abgewichen. Was dann zahlreiche Probleme mit der Qualität zur Folge haben kann, die es nach Aktenlage gar nicht geben dürfte. Dadurch erhöht sich später auch der Aufwand für Pflege und Wartung der Software erheblich, denn kaum jemand kann den nun unverständlich gewordenen und von der Spezifikation abweichenden Code noch nachvollziehen.
Aus diesem Grunde gibt es in der produzierenden Industrie zahlreiche Kontrollmöglichkeiten, um über einstellbare Parameter nachvollziehen zu können, ob das, was vom Band läuft oder sich durch die Produktionsstraße bewegt, den Spezifikationen der Prototypen und Datenmodellen für die Fertigungsanlagen entspricht.
Solch ein Instrument hat die Firma hello2morrow nun auch für die Softwareentwicklung geschaffen. Mit ihren Werkzeug „Sonar J“ lässt sich für Java-basierte Entwicklungsprojekte prüfen, ob und in wie weit der Code von der Architektur abweicht.
„Wer die Softwarequalität kontinuierlich misst, kann seine Produktivität um etwa 20 Prozent steigern“, so Alexander von Zitzewitz, Managing Director bei hellow2morrow in einem Interview mit heise developer. Denn die Realität ist die, dass sich während der Programmierung Architektur und Software im Laufe eines Projekts immer weiter voneinander entfernen. Die Software erfüllt zwar die technischen und funktionalen Anforderungen. Ihr Inneres ist aber nicht mehr nachvollziehbar strukturiert, so dass sie nur noch schwer zu warten oder zu erweitern ist. Von einer Wiederverwendbarkeit ganz zu schweigen. Von Zitzewitz nennt dieses Phänomen „Erosion der Architektur“.
Mit Hilfe von Sonar J können Entwickler nun die Architekturvorgaben in der Entwicklungsumgebung hinterlegen und beim Codieren sehen, ob und wo ihr Code davon abweicht. Wer Entwicklungsaufgaben an Dritte auslagert, kann mit Hilfe des Programms basierend auf statischen Codeanalysen prüfen, ob die von ihm gemachten strukturellen Qualitätsvorgaben und Coding-Richtlinien eingehalten wurden. Sonar J visualisiert die innere Struktur und wertet die Softwaremetriken aus. Den Entwicklern geht so im Rahmen der Industrialisierung der Softwareentwicklung erneut ein weiteres Stückchen Freiheit verloren. Dafür aber wird die Umsetzung konzeptioneller Überlegungen im Projekt prüfbar und nachvollziehbar.
Auf Heise Developer findet sich ein ausführlicher Artikel über Sonar J. Das Tool ist als Plugin für Eclipse sowie als eigenständiges Programm erhältlich und kann von Hobbyisten und Kleinprojekte-Entwicklern (bis ca. 20.000 Codezeilen) sogar kostenlos genutzt werden. Zudem werden von hello2morrow ähnliche Produkte auch für ABAP/ABAPObjects, C/C++ oder C#-basierte Entwicklungsprojekte angeboten.