© Kellie L. Folkerts/Shutterstock.com
Dokumentation als wichtiger Faktor für langfristigen Erfolg von Software

Pflicht und Kür


In den letzten Monaten hatte ich Beratungsengagements in mehreren Projekten, bei denen es um die Analyse bestehender Softwarelösungen ging. Ein Projekt war eine Cloud-basierte SaaS-Lösung, ein zweites stand am Beginn der Transformation in Richtung SaaS und ein drittes war eine klassische Individualsoftware für den Betrieb im eigenen Rechenzentrum. In allen Fällen war es meine Aufgabe, die bestehenden Softwaresysteme hinsichtlich ihrer Architektur zu analysieren und Aussagen über Stärken, Schwächen und dringend notwendige Investitionen zu machen.

Auch wenn die Softwaresysteme aus komplett unterschiedlichen Domänen kamen, hatten meine Analyseergebnisse etwas gemeinsam: den Hinweis auf klaffende Lücken im Bereich Dokumentation. Ich fühlte mich am Ende der Projekte zugegebenermaßen nicht ganz wohl, da ich normalerweise alles andere als ein Dokumentationsfanatiker bin. Getreu dem Agilen Manifest [1] werte ich funktionierende Software höher als umfassende Dokumentation. In Codereviews bin ich der Letzte, der auf Kennzahlen wie Anzahl der Kommentarzeilen im Verhältnis zu Lines of Code herumreitet. Seit Jahren predige ich, dass das Wasserfallmodell und Big Design Up Front sehr schlecht funktionieren und fast immer ineffizient sind. Trotzdem verwendete ich in den erwähnten Reviewprojekten einen großen Teil meiner Zeit darauf, die Wichtigkeit von Architektur-, Design- und Codedokumentation zu unterstreichen. In diesem Artikel möchte ich erklären, warum.

Detaildokumentation

Ein Team, das guten Code schreibt, sollte meiner Meinung nach nicht viel Zeit damit verbringen, zu dokumentieren, wie eine Software im Detail funktioniert. Wenn

  • Namen von Modulen, Klassen, Funktionen, Variablen etc. gut gewählt sind,
  • der Code gut strukturiert ist,
  • Unit-Tests die Anforderungen implizit festhalten und sogar automatisch prüfen,
  • DevOps-Prozesse automatisiert sind
  • und eine moderne Plattform für Quellcodeverwaltung mit integriertem Anforderungsmanagement (z. B. GitHub, Visual Studio Team Services) genutzt wird,

können die Details, wie eine Softwarelösung funktioniert, auch trotz ganz wenig Dokumentation herausgefunden werden. Hinweise sind nur dort notwendig, wo besonders trickreiche oder nicht offensichtliche Lösungswege gegangen wurden. Falls in einem Projekt eklatante Schwächen bei einem der oben genannten Punkte festgestellt werden, investiert man Zeit und Geld besser darin, diese Schwächen auszumerzen, als darin, den schlechten Code zu dokumentieren.

Den Wald vor lauter Bäumen n...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang