Hierunter wird verstanden, dass sich aus gut lesbarem Quellkode und verwendeten Datenbanken mit Hilfe von speziell darauf ausgerichteten Programmierrichtlinien und Werkzeugen wesentliche Teile der Dokumentation jederzeit aktuell erzeugen lassen. (Design for Reverse Engineering, Softwarevisualisierung)
Alle Aspekte einer Systemdokumentation, die sich im Prinzip aus dem
Quellkode oder einer Datenbankstruktur ableiten lassen,
sollen auch wirklich aus diesen generiert werden.
Anderenfalls entsteht wegen der Duplikation von Information bald das
klassische Problem, dass die Dokumentation bezüglich
des aktuellen Quellkodes lügt
– das Änderungskostenrisiko steigt erheblich.
Allgemeine Werkzeuge zur Quellkodeanalyse bzw.
Softwarevisualisierung und Datenbankstrukturanalyse
können hier bereits zu einem gewissen Grad helfen.
Wichtiger ist jedoch, dass sich mit dedizierten Werkzeugen unterstützt durch
geeignete Richtlinien für Programmierung und Benennung wesentlich
höhere Abstraktionsstufen der Dokumentation erreichen lassen
(bis hin zur graphischen Darstellung auf der Ebene der
Geschäftsobjekte und -abläufe).
Diese Dokumentation ist dann nicht nur für Programmierer lesbar sondern kann
auch von jenen Mitarbeitern beim Nutzer,
die mit der inhaltlichen (Weiter‑)Entwicklung des Systems befasst sind,
auf inhaltliche und konzeptionelle Probleme überprüft werden.
Hierbei kommt der integrierten Darstellung von
Geschäftslogik und Speicherung der Geschäftsobjekte
in Datenbanken besondere Bedeutung zu – insbesondere auch für zukünftige
Integrationsprojekte.
D.h. in der erzeugten Dokumentation sollte die
Navigation zwischen den Strukturen der (gespeicherten) Geschäftsobjekte
und den Teilen der Funktionalität, die diese jeweils nutzen,
einfach und präzise möglich sein.
Grundlage für die Lesbarkeit des Quellkodes ist insbesondere,
dass sich die Entwickler darüber im Klaren sind, dass der
Quellkode in erster Linie für Menschen und nur in zweiter Linie
für eine Maschine geschrieben wird.
Daher ist es erforderlich, über die maschinelle Analysierbarkeit hinaus
einheitliche Richtlinien zur Benennung und Strukturierung
des Quellkodes und der Datenbankobjekte festzulegen.
Bei der heutigen Unterstützung durch Werkzeuge (u.a. in
IDEs) zur Umbenennung von Variablen, Attributen, Methoden, Klassen usw.,
gibt es keine Rechtfertigung mehr für nichtssagende oder gar
irreführende Benennungen.
Auch sollte man dem Quellkode nicht gleich ansehen können,
welche(r) Mitarbeiter(in) eines Entwicklungsteams ihn geschrieben hat
– individuelle Noten sollten sich, wenn unvermeidbar, auf Kommentare beschränken.
Außerdem sollen Entwickler bevor sie einen Kommentar in den Quellkode
schreiben sich immer fragen, ob sie die beabsichtigte Information
nicht auch durch eine bessere Benennung und Strukturierung des Quellkodes
ausdrücken können.
Kommentare als Deodorant für Kode geringer Ausdruckskraft
müssen vermieden werden.
xxxoder
abteilungheißt – für einen anderen Entwickler schon.
Die dort skizzierte Dokumentation ließ sich allein aus dem reinen Quellkode
erzeugen – ohne einen Rückgriff auf Unit-Tests,
die noch weit mehr Informationen liefern können.
Die zentrale Fragestellung in diesem Zusammenhang ist nicht,
wie viel Aufwand die Erzeugung einer solchen Dokumentation erfordert,
sondern mit welchen Richtlinien man diesen
Aufwand minimieren kann.
Diese und die Werkzeuge kann man dann auch in anderen Projekten verwenden.
Die grundlegenden Regeln zur Dokumentation sind:
Von diesen Regeln wird es in der Praxis Abweichungen geben. Die Lesbarkeit des Quellkodes ist jedoch ein wichtiges Qualitätskriterium und die Qualität der Dokumentation bemisst sich neben ihrer Vollständigkeit daran, in welchem Maße Duplikation (auch mit Quellkode und Datenbankstrukturen) vermieden werden konnte.
Die folgenden Referenzen stellen kein Qualitätsurteil dar.
Sie sollen nur einen ersten Einstieg in Aspekte der Materie bieten.
Diese Anforderung stellt eine Kombination aus verschiedenen
Best Practices und Techniken dar, wie Programmierrichtlinien,
Reverse Engineering und Round-Trip-Engineering.
Die konkreten Werkzeuge zur Analyse des eigenen Quellkodes und
der Datenbankobjekte anhand der darin befolgten Richtlinien müssen natürlich
vom Anbieter selbst geschrieben werden.
Sie lassen sich jedoch recht einfach gestalten,
weil er die Richtlinien ja selbst mit dem
Ziel der Analysierbarkeit festlegen kann,
und sie lassen sich dann i.d.R. auch weitgehend
für andere Projekte wiederverwenden.
Ein Ziel dieser Richtlinien ist es demnach, dass sie eine
programmiersprachenunabhängige Analyse des Quellkodes ermöglichen.
Eine sprachenunabhängige reine Textanalyse sollte möglichst
ausreichend sein, um alle gewünschten inhaltlichen und
strukturellen Eigenschaften zu ermitteln.
Diese Richtlinien können sich auf den Quellkode und die
Datenbankobjekte selber und/oder Kommentare
(z.B. Javadoc) und Annotationen (z.B.
XDoclet)
beziehen.
Zur Unterstützung von Analysen, der Softwarevisualisierung
und der Dokumentationsaufbereitung
gibt es unzählige Werkzeuge für die unterschiedlichsten Aufgaben.
Erwähnt sei hier nur
Checkstyle
für die automatische Überprüfung von Richtlinien.
Für die Ausgabe der Datenbankstrukturen und –kommentare als Textdateien
stellen die Datenbanken selbst i.d.R. Werkzeuge oder Schnittstellen bereit.