Kommentare

SonarJ
SonarJ ist ein Produkt des deutschen Herstellers hello2morrow, der in Berg am Starnberger See angesiedelt ist. Es besteht aus dem Stand-alone-Programm SonarJ Architect, dem Eclipse-Plug-in Sonar­clipse

SonarJ

SonarJ ist ein Produkt des deutschen Herstellers hello2morrow, der in Berg am Starnberger See angesiedelt ist. Es besteht aus dem Stand-alone-Programm SonarJ Architect, dem Eclipse-Plug-in Sonar­clipse und einem Ant-Task für einen Build-Server. SonarJ Architect und Sonarclipse verfügen über dieselbe Funktionalität, sodass der Anwender wählen kann, ob er mit einem Stand-alone-Programm oder innerhalb von Eclipse arbeiten möchte. In der Architektenversion können logische Architekturmodelle definiert werden, in der Entwicklerversion können die Modelle, Abhängigkeiten, Metriken und Regelverstöße nur betrachtet werden.

Das Eclipse-Plug-in bezieht sich immer auf ein Eclipse-Projekt und holt seine Definition der Quellen und Bibliotheken aus der Projektdefinition in Eclipse. SonarJ arbeitet auf dem Bytecode einer Anwendung, vorhandener Sourcecode kann kontextsensitiv angezeigt werden.

Ein logisches Architekturmodell wird in einer eigenen Datei gespeichert und kann dadurch leicht auf verschiedene Projekte angewendet werden. Umgekehrt können verschiedene logische Modelle verschiedene Fragestellungen an ein einzelnes Projekt herantragen. Eine der Stärken von SonarJ ist sein mächtiges Metamodell einer logischen Architektur. Dieses besteht aus technischen Schichten und dazu orthogonalen fachlichen Schnitten. Subsysteme sind Mengen von Packages, die zwingend innerhalb einer Schicht und optional innerhalb eines Schnittes liegen. Ein Package ist eindeutig einem Subsystem zugeordnet. Der Verzeichnispfad eines Packages oder die Jar-Datei, die es enthält, haben keine logische Bedeutung. Subsysteme können nicht ineinander geschachtelt sein, aber sie können fachliche Schnittstellen definieren. Dies sind Teilmengen von öffentlichen Typen eines Subsystems, die für die Verwendung des Subsystems benutzt werden sollen. Über die Definition von „benutzt“-Beziehungen zwischen Schichten und unabhängig davon zwischen Schnitten werden Architekturregeln geschaffen. Eine Klasse muss den „benutzt“-Beziehungen der Schicht und des Schnittes, innerhalb dessen sie liegt, folgen. Die Menge der erlaubten Beziehungen zwischen Subsystemen kann noch weiter eingeschränkt werden.

In der täglichen Arbeit mit SonarJ zeigt sich sehr schnell, dass dieses einfache und doch mächtige Metamodell die klare Trennung von technischen und fachlichen Aspekten sehr gut unterstützt. Jeder Regelverstoß gegen das Architekturmodell wird innerhalb von Sekunden detailliert angezeigt. Im Fall der Verwendung von Sonarclipse können alle Entwickler die Definition des Modells in ihr Eclipse-Projekt einbinden und bekommen jeden Regelverstoß in der Problems View angezeigt, noch bevor es zum Einchecken in das Repository kommen kann.

Weitere Views in Sonarclipse bzw. weitere Dialoge im SonarJ Architect zeigen eventuell vorhandene zyklische Abhängigkeiten an. Für eine lange Reihe von Metriken kann der Architekt Schwellwerte, die nicht überschritten werden sollen, definieren. Bei Überschreitung werden diese ebenfalls als Architekturregelverletzungen angezeigt.

Das Refactoring einer Anwendung unterstützt SonarJ, indem Abhängigkeiten zwischen Typen virtuell aufgelöst oder auch definiert werden können, ohne den Quellcode dabei zu verändern. Auf diese Weise kann die Auswirkung von Maßnahmen simuliert werden. Eine Klasse kann im SonarJ Architect via Drag & Drop verschoben werden, die Auswirkungen auf die Architekturregeln werden neu berechnet, und zusätzlich wird dieses Refactoring als Eintrag in eine Arbeitsliste aufgenommen, in der es mit einer Priorität einem Entwickler zugewiesen werden kann. Ein HTML-Bericht über die Regelverletzungen und Metriken kann über einen Ant-Task generiert werden.

SonarJ hat den Innovationspreis der Systems 2005 erhalten. Eine wichtige Referenz für SonarJ ist das Spring Framework, dessen Entwickler das Tool für die Verwaltung der Architektur verwenden. SonarJ ist für nicht kommerzielle Projekte kostenfrei.

Abb. 2: Die Trendanalyse mit dem Sotograph
Sotograph

Sotograph ist ein Produkt der deutschen Firma Software-Tomography aus Cottbus. Sotograph besteht aus einer Reihe von Werkzeugen, die auf einer gemeinsamen Basis in Form einer Datenbank arbeiten. Bei einer Projektanalyse werden die Abhängigkeiten (und viele Informationen mehr) in einer Datenbank gespeichert. Das logische Architekturmodell des Sotograph ermöglicht die Definition von Schichten, Schnitten und Subsystemen. Für Subsysteme kann eine öffentliche Schnittstelle definiert werden. Zwischen den logischen Komponenten werden die erlaubten Beziehungen definiert. Nach der Abbildung des logischen Modells auf Packages und Klassen kann die Einhaltung des Architekturmodells von Sotograph überprüft werden. Dies kann z.B. im Rahmen eines Assessments einmalig geschehen, für das kontinuierliche Monitoring gibt es auch eine Batch-Schnittstelle.

Sotograph liefert eine Vielzahl weiterer Qualitätsprüfungen, u.a. die Suche nach zyklischen Abhängigkeiten, nach duplizierten Codeblöcken (Copy-Paste-Syndrom), nach Verletzungen von Programmierrichtlinien sowie Metriken zur Code-Komplexität. Eigene Metriken und Regeln können innerhalb von Sotograph definiert werden, externe Werkzeuge wie Checkstyle und PMD können als Plugins integriert werden.

Auch ein virtuelles Reengineering der Architektur ist möglich. Dabei werden physische Komponenten anderen logischen Komponenten zugeordnet, um auf diese Weise die Architektur „aufzuräumen“. Ist man mit dem Ergebnis zufrieden, liefert Sotograph eine Liste von Refactoring-Maßnahmen, die es dann in der Entwicklungsumgebung im realen Quellcode durchzuführen gilt. Da der Sotograph die Ergebnisse jeder Prüfung in einer Datenbank speichert, liegt seine besondere Stärke in der Analyse von Veränderungen über die Zeit. So kann betrachtet werden, an welchen Stellen der Quellcode der Anwendung verändert wurde, welche Probleme und Regelverletzungen zwischen zwei Projektständen hinzugekommen oder weggefallen sind, und welche Trends bei verschiedenen Qualitätskennzahlen des Projekts zu erkennen sind. Die kontinuierliche Beobachtung der Qualitätsdaten erfolgt über eine Webanwendung, mit deren Hilfe die Projektdaten in der Datenbank betrachtet werden können. Dabei kann der Betrachter einen Drilldown von Projekt- bis auf Klassenebene durchführen und sich konkrete Problemstellen auch gleich im Quellcode anzeigen lassen. Eine weitere Komponente des Sotograph ist ein Reportgenerator, mit dem HTML-Berichte generiert und im Intranet zur Verfügung gestellt werden können. Vorlagen für die Berichte werden mitgeliefert, können aber auch selbst erstellt werden.

Die Mächtigkeit dieses Werkzeuges erfordert eine umfangreiche Einarbeitung des Benutzers. Sotograph ist ein ideales Werkzeug, um damit komplexe und hochspezialisierte Fragestellungen an eine Java-Architektur zu untersuchen. Software-Tomography hat dies erkannt und bietet deshalb in Verbindung mit einigen Kooperationspartnern die Untersuchung eines großen Java-Projekts durch einen Sotograph-Experten an.

Abb. 3: Eine Spinnwebgrafik von XRadar
XRadar

XRadar ist als Werkzeug zum Architektur-Management bei der norwegischen Telekommunikationsfirma Telenor entstanden und als Open-Source-Projekt veröffentlicht worden. XRadar besteht nur als Ant-Task und als Maven-Plug-in. Es ist also zur Einbindung in einen Build-Lauf konzipiert, wobei es einen umfangreichen HTML-Report generiert. XRadar ermöglicht die Definition eines einfachen logischen Architekturmodells aus Subsystemen. Jedes Subsystem ist einer Schicht zugeordnet und besteht aus mindestens einem Package. Ein Package wird komplett einem Subsystem zugeordnet. Erlaubte Abhängigkeiten zwischen den Subsystemen können definiert werden.

XRadar integriert viele weitere Qualitätsmerkmale wie Kennzahlen zur Testabdeckung, Dokumentationsabdeckung, Einhaltung von Programmierrichtlinien, Metriken und Code-Duplizierung. Als Werkzeuge werden dafür bekannte Projekte wie PMD, Checkstyle, JDepend und JavaNCSS eingebunden. XRadar integriert die XML-Reports der einzelnen Werkzeuge durch intensiven Einsatz der XSL. Zur Visualisierung von Kennzahlen werden sehr gute SVG-Grafiken generiert. Neben der statischen Analyse beherrscht XRadar auch die Trendanalyse, indem die Reports mehrerer Analyseläufe integriert werden. Zum reinen Architekturmanagement ist XRadar damit nicht mächtig genug, die gelungene Integration mehrerer Qualitätsmerkmale aber ist beeindruckend.

Tabelle 1: Die Werkzeuge im direkten Vergleich
Aktuelle Version Lattix LDM 2.7.5 SonarJ 3.0 Sotograph 2.4 XRadar 0.99
Hersteller Lattix, Inc. Andover, MA, USA hello2morrow GmbH 82335 Berg Software-Tomography GmbH, 03044 Cottbus Open-Source-Projekt
Lizenzen Kommerziell Kommerziell Kommerziell Open-Source
Analysierbare Sprachen Java, C/C++, .NET, Oracle Java Java, C++, C# Java
Visualisierung der Abhängigkeiten Mächtig Ja Ja Ja
Definition von Architekturregeln Ja, im physischen Modell Mächtig Ja Ja
Logisches Architekturmodell Mächtig Mächtig Ja, aber sehr einfach
Simulation von Refactoring Ja Mächtig Ja
Aufgabenlisten Ja Ja Ja
Metriken Ja Ja Mächtig Ja
Messung weiterer Qualitätsmerkmale Mächtig Mächtig
Trendanalyse Mächtig Ja
Entwicklung eigener Plug-ins Ja, als Dependency-Checker Ja, Metriken, Berichte, externe Checker Ja, Einbindung von Reports
Eclipse-Plug-in Ja, mit voller Funktionalität Ja, mit voller Funktionalität Ja, zur Quellcodeanzeige
Automatisierung Server-Anwendung LDC Server-Modul mit Ant-Task erzeugt XML Server-Anwendung SotoReport Ant-Task, Maven-Plug-in
HTML-Report-Generierung Server-Anwendung LDC Server-Modul mit XSLT Server-Anwendung SotoWeb Ja, mit SVG-Grafiken
Fazit

Jedes Werkzeug hat seine Stärken und seinen Platz. Für die Analyse vollkommen unbekannter umfangreicher Systeme ist die Überschaubarkeit und Navigierbarkeit der Dependency-Matrix von Lattix LDM geeignet. Für die Definition einer logischen Architektur auf hohem Abstraktionsniveau sowie die Verwaltung von Refactoring-Maßnahmen bietet SonarJ die besten Mittel. Für die Beantwortung extrem komplexer Fragestellungen, für die Entwicklung eigener Metriken und die Trendanalyse ist Sotograph durch seine integrierte Datenbank ohne Konkurrenz. Für die Integration und Visualisierung zahlreicher Qualitätsmerkmale ist XRadar hervorragend geeignet.

Olaf Kossak ist freiberuflicher Informatiker und arbeitete als Java Senior Developer in vielen Branchen. Heute führt er bei internationalen Firmen Automatisierung von Build-Prozessen und Qualitätsmanagement für Java-Projekte ein. Kontakt: olaf.kossak[at]hamburg.de.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -