|
Dokumentation für den Endanwender |
Kapitel 2 - System-Dokumentation
MotivationDie Wartung von Software nimmt einen immer höheren Stellenwert im Lebenszyklus von Softwaresystemen dar. Dies veranschaulicht auch die Grafik.
Dieser Trend wird noch verstärkt durch objektorientierte Methoden der Softwareentwicklung, da mittels Wiederverwendung eine immer kürzer werdende Entwicklungszeit erreicht werden kann. Dies bedeutet aber auch, daß Entwicklung und Wartung von Softwaresystemen immer mehr miteinander verschmelzen. Die Frage: Wie lassen sich Softwaresysteme durch gute Dokumentation wartbar und wiederverwendbar gestalten? läßt sich mit Methoden der System-Dokumentation lösen. Dieses Kapitel stellt Ansätze und Werkzeuge vor, die eine derartige und durchgängige System-Dokumentation unterstützen. 2.1 Literate Programming
"Programs are written to be executed by computers rather than to be read by humans. Ideally, it should be the other way round. When writing programs, we should not try to instruct the computer what to do, but rather we should try to tell humans what we want the computer to do" [Knuth92] Dieses Zitat von Donald E. Knuth bringt die Idee des Literate Programming zum Ausdruck. Der Ansatz des Literate Programming ist, Programme genauso lesbar wie gewöhnliche Literatur zu gestalten. Hauptziel ist es dabei nicht, ein ausführbares Programm zu erhalten, sondern eine dem Problem und dem Kontext angepaßte Lösung zu dokumentieren. Dies weist Ähnlichkeit mit der Definition eines (Entwurfs-)Musters auf. [Definition eines Musters] Mit der Idee des Literate Programming entwickelte Knuth ebenfalls das WEB System, welches diesen Ansatz unterstützt. WEB Programme bestehen aus einer Serie von Dokumentationsblöcken, die sowohl den Dokumentationstext als auch den Sourcecode enthalten. Jeder Abschnitt behandelt dabei einen bestimmten Teil des Gesamtsystemes und hat Verzweigungen zu anderen damit in Beziehung stehenden Abschnitten. Für die Compilierung wird der Sourcecode automatisch aus diesen Abschnitten extrahiert. Das WEB System wurde für viele Programmiersprachen entwickelt. Darunter für Pascal, C, Modula-2, Lisp und Fortran, aber auch für objektorientierte Sprachen wie C++ und Smalltalk. Der Vorteil liegt in dem positiven Einfluß den eine sofortige Dokumentation des Sourcecodes auf die Korrektheit, Konsistenz und Vollständigkeit der Dokumentation hat.
Leider hat sich Literate Programming nicht durchsetzen können. Doch was sind die Nachteile? Dieses System funktioniert dann hervorragend, wenn während der Entwicklung schon sofort dokumentiert wird. Dies ist jedoch erst dann möglich, wenn die genaue Spezifikation vorliegt, bzw. keine Veränderungen mehr vorzusehen sind. In der Realität steht die Struktur eines Systems in der Regel nicht von Anfang an fest. Vielmehr gibt es mehrere Versuche und Veränderungen. Dieses Szenario kennzeichnet viele Softwareprojekte. Oft muß auf neue und veränderte Kundenanforderungen eingegangen werden. Die Dokumentation muß flexibel werden. Dazu ist wiederum Hypertext ein geeignetes Mittel. 2.2 Werkzeuge zur System-DokumentationUm die System-Dokumentation zu unterstützen und zu motivieren sind verschiedene Werkzeuge auf dem Markt verfügbar. Ich möchte hier nur kurz auf einige wenige eingehen. 2.2.1 Rational Rose & SoDAEin Werkzeug, welches leider nur recht schlechte Unterstützung für die Dokumentation bietet, ist Rational Rose von Rational Corporation. Es erlaubt leider nur kleine Notizen, die bei der Analyse und dem Design von Softwaresystemen an diverse Diagramme wie Use-Case oder Klassendiagrammen eingetragen werden können. Ich gehe deshalb auf Rational Rose ein, weil es einerseits die Anwendung von Entwurfsmustern (hoffentlich bald) untersützen wird, andererseits weil die unter Rational Rose modellierten Use-Case und Klassendiagramme mittels des Dokumentationswerkzeuges "SoDA" aus dem Hause Rational in ein automatisch generiertes und konfigurierbares WORD-Dokument umgesetzt werden können. Dazu werden die Notizen, die bei der Modellierung beispielsweise einer Klasse gemacht wurden, in die Dokumentation dieser Klasse in dem WORD-Dokument übernommen. Bei Rational Rose handelt es sich um ein Werkzeug zur "Visualisierung" von Analyse- und Design Entscheidungen. Die Use-Case Diagramme helfen dabei, ein Softwaresystem in einer bestimmten einheitlichen Notationsform, heute meistens die UML (Unified Modeling Language), zu modellieren. Ein weiteres Feature von Rational Rose ist die Unterstützung des Roundtrip-Engineerings. Dies macht es möglich sowohl Veränderungen in einem Diagramm direkt in eine Zielsprache zu übertragen, als auch (rückwärts) Veränderungen im Sourcecode in die Diagramme übertragen zu lassen. SoDA hingegen, ist ein Add-On für Microsoft Word, welches aus den Dateien, die mit Rational Rose erstellt wurden, entsprechende Dokumentationen unter Microsoft Word automatisch generieren kann. Die unten stehenden Screenshots zeigen ein Use-Case Diagramm von Rational Rose(links), ein Klassendiagramm in UML-Notation von Rational Rose (mitte), sowie ein automatisch generiertes WORD-Dokument unter SoDA (rechts). Wie man in dem Screenshot von SoDA sehen kann, werden die Dokumentationen sämtlicher Attribute einer Klasse automatisch angelegt. Allerdings ist auf dieser Ebene ein Roundtrip-Engineering nicht möglich. Änderungen unter SoDA werden also nicht in die Dokumentation in den Diagrammen übernommen. 2.2.2 Automatisch generierte HTML-Dokumentation mit Javadoc
Im Java Development Kit von Sun Microsystems sind außer dem Java Compiler
Es können jedoch lediglich die mit public gekennzeichneten Klassen auf diese Weise dokumentiert werden. Die von 2.2.3 Entwicklungsbegleitende Dokumentation mit dem Inprise JBuilderMit dem Inprise JBuilder ist eine Entwicklungsumgebung entwickelt worden, die eine System-Dokumentation von Anfang an unterstützt. Obwohl es sich bei dem JBuilder mehr um ein Werkzeug zur Implementierung handelt, können auch frühe Entwurfsentscheidungen sofort dokumentiert werden. So wird beim Anlegen eines neuen Projektes automatisch ein HTML-Dokument angelegt, welches die noch zu erledigenden Aufgaben erfaßt. Siehe dazu Bild 1. Es kann zunächst eine Beschreibung der Softwarekomponente eingetragen werden. Die Dokumentation der einzelnen Klassen geschieht ähnlich wie bei Rational Rose in Notizform am linken unteren Bildschirmrand. Diese Notizen werden dann beim Compilieren in den Quelltext als Kommentare eingesetzt. Bild 2 zeigt dazu ein Beispiel.
Diese Art der Dokumentation ist natürlich nur sehr unvollständig. Sie beschreibt lediglich den Zweck einer Softwarekomponente und hilft bei der Planung ihrer Erstellung. Die beschreibende HTML-Seite wird zwar automatisch generiert, der Anwender wird allerdings nicht explizit aufgefordert, diese auch zu editieren. Oft wird dies auch einfach "vergessen". Es dient eher einer kurzfristigen Projektplanung, damit nichts vergessen wird.
2.3 Warum ist dies wichtig?
In den Kapiteln 1 und 2 wurden bereits 2 wichtige Teilgebiete der Softwaredokumentation behandelt. Wünschenswert wäre allerdings eine durchgängige Dokumentation, wenn möglich auf einer höheren Ebene, die von der Analyse und Design-Phase, über die Implementierung bis hin zur Anwendung(Tutorien siehe Kapitel 1) und Wartung eine durchgängige, also lückenlose, und somit vollständige Dokumentation. Damit wird der Entwicklungsprozeß eines Softwaresystemes auch für andere nachvollziehbar und reproduzierbar.
Angesichts der Zertifizierung der DIN-ISO 9001 zur Qualitätssicherung ist solch eine Dokumentation zwingend erforderlich. Gerade in Bereichen wie bespielsweise der Raumfahrttechnik oder im Straßen- und Luftverkehr ist es mitunter lebenswichtig, daß die eingesetzten Softwaresysteme einwandfrei ihren Dienst verrichten. Ansonsten könnten Menschenleben gefärhdet sein, oder große finanzielle Verluste, zum Beispiel durch den Ausfall eines Satelliten, wie erst kürzlich geschehen, entstehen.
Ein Hilfsmittel zur Qualitätssicherung bietet hier die Projektdokumentation, die nahezu alle Elemente verbindet und eine übergeordnete Dokumentation des Softwaresystemes darstellt. Dieses wird nun in Kapitel 3 - Projektdokumentation behandelt. |
Letzte Änderung von René Eßer am 22.06.98 [Informationen]