Dokumentation in der Softwareentwicklung - Effizienter Einsatz von Entwicklerdokumentation


Diplomarbeit, 2002

100 Seiten, Note: 1,0


Leseprobe


Inhaltsverzeichnis

Abkürzungsverzeichnis

Abbildungsverzeichnis

1 Einleitung
1.1 Problemstellung
1.2 Einordnung und Ziel der Arbeit
1.3 Vorgehensweise
1.4 Erläuterung verwendeter Begriffe

2 Entwicklerdokumentation
2.1 Gegenstände der Entwicklerdokumentation
2.2 Gründe für Entwicklerdokumentation
2.2.1 Wissenskonservierung
2.2.2 Wissenstransfer
2.2.3 Koordination
2.2.4 Kommunikation
2.2.5 Softwareerstellungs-Vertrag
2.2.6 Organisatorische Politik und Macht
2.2.7 Strukturierung der Implementierung
2.2.8 Durchdringung inhaltlicher Konzepte
2.2.9 Geforderte Qualitätsstandards
2.2.10 Dokumentationsvorgaben
2.3 Nachteile von Entwicklerdokumentation
2.3.1 Aktualität
2.3.2 Aktualisierungsaufwand
2.3.3 Verständlichkeit
2.3.4 Informationsfindung
2.3.5 Zusätzlicher Ressourcenbedarf
2.3.6 Motivationsproblem

3 Effizienzsteigerung des Einsatzes von Entwicklerdokumentation
3.1 Effizienz von Entwicklerdokumentation
3.2 Maßnahmen zur Effizienzsteigerung
3.2.1 Grundkonzepte und Qualitätsanforderungen
3.2.2 Quantitative Aspekte
3.2.3 Alternativen zu traditionellen Ansätzen der Dokumentation
3.3 Kritische Beleuchtung weiterer und genannter Vorschläge
3.3.1 Zeitpunkt von Dokumentation
3.3.2 Technische Hilfsmittel
3.3.3 Video- und Audioaufnahmen als Dokumentation
3.3.4 Kompletter Dokumentationsverzicht
3.3.5 Positive Aspekte von Redundanzen
3.3.6 Unnötigkeit richtiger und aktueller Dokumentation
3.3.7 Teamgröße und angemessene direkte Kommunikation
3.3.8 Öffentliche Präsentation und Prozessdokumentation

4 Einflussfaktoren auf Entwicklerdokumentation
4.1 Organisatorische Einflussfaktoren
4.1.1 Ablauforganisation
4.1.2 Aufbauorganisation
4.1.3 Umfang eines Projekts
4.1.4 Zeitraum der Erstellung eines Projektes
4.1.5 Fluktuation
4.1.6 Arbeitsteilung
4.1.7 Planung und Kontrolle
4.1.8 Entscheidungsdelegation
4.1.9 Vorauskoordination
4.1.10 Formalisierung
4.2 Softwarespezifische Einflussfaktoren
4.2.1 Art der Auslösung
4.2.2 Unklarheit der Entwicklungsaufgabe
4.2.3 Dynamik der Anforderungen
4.2.4 Neuartigkeit der Technologie
4.2.5 Intensität der Kunden-/Marktkommunikation
4.2.6 Sicherheitsanforderungen der Software
4.2.7 Lebensdauer von Entwicklerdokumentation und Software
4.2.8 Vorgehensmodelle
4.3 Weitere Einflussfaktoren
4.3.1 Verhalten der Mitarbeiter
4.3.2 Ausbildung und Wissen der Mitarbeiter
4.3.3 Technische Unterstützung der Entwicklung
4.3.4 Wirtschaftlicher Druck auf Software-Firmen

5 Schlussbetrachtung

6 Literaturverzeichnis

7 Anhang A: Literatur zu Formatierungsvorschlägen von Code und Kommentaren

Zusammenfassung

Dokumentation ist ein „Übel“ der Softwareentwicklung. Durch eine Effizienzsteigerung von Entwicklersoftware wird dazu beigetragen, den Erstellungsprozess von Software effizienter zu gestalten.

Entwicklerdokumentation wird für verschiedene Gegenstände der Softwareentwicklung angefertigt. Dazu zählen beispielsweise Anforderungen, Architekturen, Quellcode, Schnittstellen, Modelle und Testfälle. Es gibt einige Gründe, warum Entwicklerdoku-mentation erstellt werden sollte, beispielsweise Wissenstransfer, Wissenskonservierung, Kommunikation oder die Erstellung als Grundlage eines Vertrages. Entwicklerdoku-mentation bringt aber auch Probleme mit sich. Hier ist beispielsweise der Aktualisie-rungsaufwand, eine mangelnde Verständlichkeit und geringe Aktualität hervorzuheben.

Es sind seit einiger Zeit Maßnahmen bekannt, durch die die Effizienz einer Dokumenta-tion verbessert werden kann. Unter diese Maßnahmen fallen dokumentationsbezogene (z.B. integrierte Dokumentation, hohe Lesbarkeit), organisationsbezogene (z.B. die Ge-staltung der Teamgröße) und technikbezogene Konzepte zur Steigerung der Effizienz. Großen Einfluss auf die Effizienz einer Entwicklerdokumentation hat der angestrebte bzw. erstellte Umfang der schriftlichen Dokumentation. Diese kann einerseits durch

eine geschickte Bestimmung der zu dokumentierenden Gegenstände, andererseits durch die Festlegung angemessener Umfänge einzelner Dokumentationen erreicht werden. Entwicklerdokumentation kann aber auch auf alternativen Wegen effizienter gestaltet werden. In der Arbeit werden dazu sieben Maßnahmen vorgestellt. Darunter fallen beispielsweise ‚Pair Programming’, ‚direkte Kommunikation’, ‚kontinuierliche Integration’ und ‚öffentliche Präsentation’.

Alle vorgestellten Maßnahmen eigenen sich jedoch nicht immer alle für jedes Software-entwicklungsprojekt. Vielmehr werden diese von verschiedenen Faktoren, die in der Softwareentwicklung auftreten können, beeinflusst und teilweise sogar determiniert. Beispielsweise kann bei hoher Dynamik von Anforderungen verstärkt ‚direkte Kommu nikation’, ‚umfassende Partizipation’ und ‚öffentliche Präsentation’ zur Effizienzsteige-rung eingesetzt werden. Diese Maßnahmen decken dann die Gründe ab, aus denen schriftliche Dokumentation erstellt worden wäre. Eine determinierende Wirkung ist beispielsweise bei hohen Sicherheitsanforderungen an Software gegeben. In diesem Fall kann nicht ohne weiteres auf schriftliche Dokumentation verzichtet werden. Verschie-dene Faktoren können dabei Einflüsse auf (1) die Entwicklerdokumentation selber, auf (2) vorgestellt Maßnahmen zur Effizienzsteigerung der Dokumentation und auf (3) die Wirkung verschiedener Maßnahmen haben.

Zusammenfassend lässt sich feststellen, dass Entwicklerdokumentation effizienter ges-taltet werden kann. Man muss jedoch bei einer Gestaltung die Umwelt und Situation, in der die Softwareentwicklung und das Anwendungsgebiet der Software eingebettet sind, beachten.

Kai Oey

Diplomarbeit

im Fach Management der Softwareentwicklung

Dokumentation in der Softwareentwicklung

Effizienter Einsatz von Entwicklerdokumentation

Vorgelegt in der Diplomprüfung im Studiengang Wirtschaftsinformatik der Wirtschafts- und Sozialwissenschaftlichen Fakultät der Universität zu Köln.

Köln, im September 2002

Dokumentation ist nicht Teil der Lösung, sondern Teil des Problems.

Tom DeMarco ( „ Wien wartet auf Dich “ , S. 130)

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Abbildungsverzeichnis

Abb. 1-1: Schematische Darstellung der Vorgehensweise

Abb. 3-1: Effektivität von Kommunikationsalternativen

1 Einleitung

Dokumentation ist in der Softwareentwicklung ein geläufiges Stichwort. Sie ist Bestandteil jeder Software.1 Zu den Aufgaben eines Programmierers gehört es Entwicklerdokumentation2 zu erstellen.3 Sie „ (...) dient der Aufzeichnung von Informationen über die Prozesse und Produkte der Entwicklung.“4

Entwicklerdokumentation wird verschieden gehandhabt und bewertet. Einerseits wird sie in der Softwareentwicklung als absolut notwendig erachtet und sogar postuliert, je mehr in einem Softwareentwicklungsprojekt dokumentiert wird, desto „besser“ ist dies für ein Projekt.5 Diesem Verständnis liegen zum Beispiel Vorgehensmodelle, wie das CMM, das V-Modell oder auch die ISO 9000, zugrunde.6

Andererseits wird Entwicklerdokumentation in den Hintergrund gestellt, als hinderlich für ein erfolgreiches Softwareprojekt angesehen und soweit wie möglich reduziert.7 In der Praxis kann häufig beobachtet werden, dass Entwicklerdokumentation, selbst bei erfolgreichen Softwareentwicklungen, als lästig angesehen und vernachlässigt oder teilweise weggelassen wird.8 Von Dokumentationsvorgaben wird häufig abgewichen und erstellte Entwicklerdokumentation wird als mangelhaft bewertet.9

Entwicklerdokumentation hat sich jedoch für Beteiligte an einem Entwicklungsprojekt als hilfreiches Mittel zur Arbeitsunterstützung herausgestellt.10 Aus diesem Grund wird die Entwicklerdokumentation auch als ein „notwendiges Übel“11 bezeichnet.

Es existieren verschiedene Ansätzen zur Softwareentwicklung, mit jeweils verschieden stark ausgeprägten Anweisungen und Gestaltungsvorgaben zur Erstellung von Entwicklerdokumentation.12 Daraus lässt sich schließen, dass verschiedene Aspekte bei der Bestimmung eines effizienten Grades der eingesetzten Entwicklerdokumentation von Bedeutung sind. Deshalb lassen sich unterschiedliche Gestaltungsalternativen in Bezug auf die Erstellung von Entwicklerdokumentation finden.

Die Softwarebranche ist ein stark umkämpfter Markt. Um Wettbewerbsvorteile erreichen zu können ist es wichtig, die Softwareentwicklung so effizient wie möglich zu ges-talten und Software auf hohem qualitativem Niveau zu erstellen. Doch die eine „silber-ne Kugel“13, welche die Softwarekosten zur Erstellung qualitativ guter Software redu-ziert, ist nicht in Sicht.14 Aus diesem Grund kann sich nur in kleinen Schritten einer ef-fizienten Softwareentwicklung genähert werden.15 Entwicklerdokumentation ist ein ‚Ü-bel’ der Softwareentwicklung und deren Effizienzsteigerung einer der kleinen Schritte, die angegangen werden müssen, um Software effizienter zu erstellen.16

1.1 Problemstellung

In der Theorie ist die Bedeutung der Entwicklerdokumentation unter verschiedenen Ausprägungen von Softwareprojekten noch nicht vollständig erfasst und die Meinungen über den Umfang notwendiger Entwicklerdokumentation gehen auseinander. Erschwert wird die Situation durch einen schwierigen Effizienzvergleich aufgrund der Uneinheitlichkeit von Softwareprojekten sowie einer schwierigen Kosten-/Nutzenanalyse von Entwicklerdokumentation.17

Wie es für verschiedene Softwareprojekte nicht den einen ‚besten’ Prozess gibt,18 existiert für verschiedene Softwareprojekte, teilweise für verschiedene Module innerhalb eines Projektes, nicht die eine ‚beste’ Dokumentationsvorgehensweise. Vielmehr existieren in der Praxis verschiedenartige Ausprägungen von Dokumentationsvorgaben und Entwicklerdokumentationen.19

Die Frage nach der Effizienz der erstellten oder vorgeschlagenen Entwicklerdokumenta-tion wird in der Literatur nicht gestellt. Beispielsweise wird oft versucht, das Problem ineffizienter und auch oft ineffektiver Entwicklerdokumentation durch eine Technisie-rung, und somit einer effizienteren Verwaltung, zu beheben.20 Ein Dokumentationsdefi-zit wird in der Literatur auch erkannt. So schreibt Gluchowski beispielsweise: „Zu be-klagen bleibt an dieser Stelle, dass viele Erkenntnisse, die während der Systemgestal-tung gewonnen werden, sich nur im implementierten System wiederspiegeln, nicht je-doch als dokumentiertes Wissen (...) vorliegen.“21 Im folgenden geht Gluchowski davon aus, dass möglichst alles dokumentiert werden sollte und versucht eine Referenzarchi-tektur für eine solche Entwicklerdokumentation herzuleiten. Die Effizienz der erstellten Entwicklerdokumentation betrachtet aber auch Gluchowski nicht.

1.2 Einordnung und Ziel der Arbeit

Die geringe theoretische Durchdringung im Bezug auf die Effizienz von Entwicklerdokumentation in Softwareentwicklungsprojekten soll als Anlass für die Arbeit genommen werden. Die Arbeit soll dazu beitragen, dieses Defizit zu verringern.

Ziel der Arbeit ist es, Maßnahmen aufzuzeigen, die zu einer Effizienzsteigerung der Entwicklerdokumentation führen und darzulegen, welchen Einflüssen Entwicklerdoku-mentation unterliegt. Vor dem Hintergrund der erläuterten Problematik verfolgt die Arbeit drei Unterziele. Erstens sollen Anforderungen an eine effiziente Dokumentation aufgezeigt werden. Zweitens wird hergeleitet, unter welchen Umständen und unter Zu-hilfenahme welcher Maßnahmen eine angemessene Entwicklerdokumentation erstellt werden kann. Drittens werden Einflussfaktoren mit ihrer Wirkung auf Entwicklerdoku-mentation vorgestellt. Die Diplomarbeit soll damit zum einen der Theorie die Grundla-ge zur Diskussion über Vorschläge zur Entwicklerdokumentation liefern und zum ande-ren der Praxis Hinweise zu einer effizienteren Entwicklerdokumentation geben.

Fokus der Arbeit ist die Art von Dokumentation, die den Entwicklern, während der (Weiter-)Entwicklung einer Software, Informationen liefert. Nicht betrachtet werden in der Arbeit alle Arten von Prozess-22 und Programmdokumentation23, die Ausprägungen syntaktischer Gestaltung von Dokumentation24, die physische Speicherung von Dokumentation25 und Dokumentationsmanagement26.

1.3 Vorgehensweise

Die Arbeit ist das Ergebnis eines Literaturstudiums. Im ersten Teil der Arbeit, den Kapiteln 2 und 3, wird der Fokus auf die Softwareentwicklung gelegt. Die Arbeit geht dabei im ersten Kapitel auf die Gegenstände, die Gründe für und die Nachteile von Entwicklerdokumentation ein. Als nächstes wird die Effizienz von Entwicklerdokumentation beleuchtet. Dazu wird in Kapitel 3 hinterfragt, was unter der Effizienz einer Entwicklerdokumentation verstanden werden kann und es werden Maßnahmen vorgestellt, die die Entwicklerdokumentation effizienter gestalten können.

Im nächsten Teil der Arbeit, dem Kapitel 4, wird die Umwelt, in der sich eine Software-entwicklung befinden kann, betrachtet. Dabei wird ein kontingenztheoretischer Ansatz27 verfolgt. Da Softwareprojekte in unterschiedliche Umfelder eingebettet sind, lassen sich Faktoren finden, die zum ersten auf die Entwicklerdokumentation, zum zweiten auf die Maßnahmen zur Effizienzsteigerung der Entwicklerdokumentation und zum dritten auf die Wirkung dieser Maßnahmen Einfluss haben. Die Arbeit versucht abzuleiten, wie sich die Entwicklerdokumentation unter dem Einfluss erkannter Faktoren gestaltet28 und welche Maßnahmen unter sinnvoll zur Effizienzsteigerung eingesetzt werden können.29

In Abb. 1-1 ist das Vorgehen mit Hinweis auf das jeweilige Kapitel schematisch darge-stellt.

Abbildung in dieser Leseprobe nicht enthalten

Abb. 1-1: Schematische Darstellung der Vorgehensweise

1.4 Erläuterung verwendeter Begriffe

In diesem Kapitel werden Begriffe erläutert, die für das Verständnis der Arbeit wichtig sind, unterschiedlich aufgefasst werden könnten und dadurch zu einem ungenauen Verständnis der Arbeit führen würden.

Klassisch ist Dokumentation das schriftliche Festhalten von Informationen zu einem be-stimmten Gegenstand sowie das resultierende Ergebnis dieses Vorgangs.30 Dokumentation wird mit dem Ziel betrieben, relevante Informationen über den dokumentierten Gegenstand31 zu späteren Zeitpunkten verfügbar zu machen, um Aktionen auf oder mit dem dokumentierten Gegenstand ausführen zu können. Dieses Ziel kann jedoch auch durch nicht schriftliche Methoden erreicht werden.32 Aus diesem Grund werden in dieser Arbeit unter dem Begriff Dokumentation alle vorgestellten Möglichkeiten, die Ziele klassischer Dokumentation zu erreichen, zusammengefasst.33

In der Softwareentwicklung werden unter dem Begriff der Dokumentation im Allgemeinen Programmdokumentation34, Prozessdokumentation und Entwicklerdokumentation subsummiert.35

Unter der Programmdokumentation wird der Teil einer Softwaredokumentation verstanden, der die Installation, Bedienung und Administration einer Software erklärt und als Teilprodukt mit in das endgültige Softwareprodukt einfließt.36

Die Prozessdokumentation besteht aus Informationen, die den Entwicklungsprozess der Software betreffen, diesen steuern und gestalten.37 Die Prozessdokumentation kann beiBedienungsanleitungen, ein Beispiel von Dokumentation zur Informationssuche im Alltag sind Beipackzettel zu Arzneimitteln. spielsweise den Ressourceneinsatz zur Entwicklung, eine Meilensteinplanung, Versionsmanagement, Ablaufplanung und Konfigurationsmanagement umfassen.38

Entwicklerdokumentation ist die Dokumentation, die den Entwicklern einer Software zur Unterstützung ihrer Tätigkeiten zur Verfügung steht und die zum großen Teil durch Entwickler erstellt wird.39 Entwicklerdokumentation ist der Teil der Dokumentation, der sich beispielsweise auf den Quellcode oder auf die Architektur/Struktur der entwickel-ten Software bezieht.40 Die Entwicklerdokumentation kann dabei einerseits eine deter-minierende41, andererseits eine deskriptive Funktion erfüllen.42 Determinierende Ent-wicklerdokumentation gibt Vorgaben für Programmierer, wie die Software umgesetzt werden soll.43 Beispielsweise übernehmen Entwicklerdokumentationen eine determinie-rende Funktion, indem Modelle (Klassendiagramme, Datendiagramme), Architektur-oder Designpläne Vorgaben zur Erstellung der Software enthalten.44 Deskriptive Ent-wicklerdokumentation ist Information, die sich auf Teile des Quellcodes bezieht, dar-legt, was die Aufgabe eines bestimmten Codeabschnitts ist, und detaillierter erklären kann, wie das Ziel im Code umgesetzt ist. Deskriptive Entwicklerdokumentation kann sich beispielsweise auf Module, Datenbankfelder, Funktionen45 oder auch wenige Zei-len Quellcode beziehen.46 Oft wird sie in direkter Nähe oder im dokumentierten Gegenstand der Software (beispielsweise bei Quellcode) festgehalten.47 Entwicklerdokumentation mit erklärendem Charakter unterstützt somit die Softwareentwickler bei der Erstellung, Fehlerbeseitigung und Wartung einer Software.

Die Arbeit beschränkt sich auf die Betrachtung von Entwicklerdokumentation. Eine Ef-fizienzbetrachtung dieser ist für die Entwickler einer Software am interessantesten. An-forderungen an die Programmdokumentation sind gut erkannt und verstanden48 und die Einbeziehung der Prozessdokumentation hätte den Umfang der Arbeit um Weiten über-schritten.49 Da sich die Arbeit auf Entwicklerdokumentation bezieht, wird die Bezeich-nung ‚Dokumentation’ im Folgenden synonym zur ‚Entwicklerdokumentation’ verwen-det. Nur, wo es einer besseren Abgrenzung oder Verständlichkeit dient, wird explizit ‚Entwicklerdokumentation’ geschrieben.

Unter der Lebensdauer einer Dokumentation wird die Zeitspanne verstanden, in der eine Dokumentation aktiv, erstellend oder nachfragend, genutzt wird.50

Einige Begriffe, die mit Bezug zu Dokumentation genannt werden, wie beispielsweise Lastenheft, Systemdefinition oder Grobkonzept, sind nur schwer einzugrenzen und werden unterschiedlich in der Literatur benutzt.51 Auf eine Eingrenzung der Begriffe wird hier verzichtet. Wichtig ist, dass die Inhalte eines Dokumentes abgegrenzt sind. Wie ein entsprechendes Dokument in einem Projekt genannt wird und ob verschiedene Gegenstände der Dokumentation darin zusammengefasst werden, sei jedem Projektteam überlassen.

2 Entwicklerdokumentation

Entwicklerdokumentation wird in verschiedenen Softwareentwicklungsprojekten und innerhalb eines solchen Projektes von verschiedenen Beteiligten unterschiedlich eingesetzt. Grundlagen zur Erstellung von Entwicklerdokumentation, also die Gegenstände, Gründe und Nachteil, werden in diesem Kapitel hinterfragt.

Zuerst werden verschiedene Gegenstände der Softwareentwicklung betrachtet, die do-kumentiert werden können und die dadurch auch ausschlaggebend für den Umfang ei-ner projektweiten Dokumentation sind. Hier stellt sich also die Frage, was dokumentiert werden kann (Kapitel 2.1). Des weiteren können sich unterschiedliche Dokumentati-onsvorgaben aus der unterschiedlichen Wichtigkeit von Gründen zur Dokumentation herleiten lassen. Es stellt sich folglich die Frage, welche Gründe es für Dokumentation gibt (Kapitel 2.2). Und im Anschluss wird untersuchte, welche Gründe gegen Dokumentation in der Softwareentwicklung sprechen können (Kapitel 2.3).

2.1 Gegenstände der Entwicklerdokumentation

Ein Entwickler, der ein Programm warten muss, das nicht von ihm selbst erstellt wurde, benötigt einen Großteil seiner Zeit, um dieses Programm zu verstehen.52 Zum Verstehen eines Programms ist eine effiziente Entwicklerdokumentation über verschiedene Gegenstände des Programms hilfreich.

Nach David gibt es eine Vielzahl von Gegenständen in der Softwareentwicklung deren Dokumentation notwendig ist:53 beispielsweise Anforderungen, Analysen, Feinentwür-fe, User-Interfaces, Schnittstellen, Datenmodelle, Architekturen, Testfälle und Quellco-de.

Im Folgenden werden typische Gegenstände vorgestellt, die bei der Erstellung von Software vorhanden sein können und deren Dokumentation zu einem besseren Verständnis einer Software beitragen kann. Dabei werden die verschiedenen möglichen Gegenstände teilweise auf einem hohem Level zusammengefasst.

- Anforderungen

Anforderungen stellen den Grundbaustein einer Software dar.54 Sie beschreiben, was eine Software leisten soll. Ohne die Anforderungen zumindest ansatzweise zu kennen, kann kein Programmierer Software erstellen.

- Spezifikationen

Spezifikationen sind detailliertere Ausformulierungen von Anforderungen und zur Koordination der Arbeit eines Programmierers notwendig. Aus diesem Grund wird häufig gefordert, Anforderungen und/oder Spezifikationen schriftlich zu dokumen-tieren.55

- Architektur

Bei der hohen Komplexität heutiger Software ist eine stabile Architektur56 ein guter Ausgangspunkt zur Erstellung von guter Software und bietet einen Überblick über verwendete fachliche und technische Konzepte. Allerdings ist die Architektur, gerade bei langlebiger Software, nicht statisch.57

- Quellcode

Quellcode, bzw. Quellcode-Blöcke, wie beispielsweise Funktionen, Module oder Klassen sind die einzelnen Anweisungen, die Aktionen einer Software erzeugen. Quellcode ist in der Regel sehr umfangreich und komplex. Dokumentiert werden kann Quellcode beispielsweise durch Kommentare direkt im Programmtext.58

- Schnittstellen

Zur Interaktion zwischen den einzelnen Komponenten einer Software werden klar definierte Schnittstellen benötigt.59 Gerade durch moderne objektorientierte Pro-grammierparadigmen, bei der eine hohe Kapselung und Modularisierung in der Systementwicklung vorliegt, ist dies elementar. Schnittstellen müssen dokumentiert sein, damit jeder Programmierer weiß, wie ein Modul zu nutzen ist.60

- Modelle und Analysen

Modelle, beispielsweise Objekt- und Prozessmodelle, stellen unterschiedliche Sich-ten oder Perspektiven eines Systems dar. Analysen betrachten ein System unter be-stimmten Aspekten und in unterschiedlichem Detaillierungsgrad. Beides sind eine Abstraktion bestimmter Bereiche des späteren Systems.61 Um zu einem Verständnis über ein Modell oder eine Analyse zu gelangen kann es sinnvoll sein, eine schriftli-che Dokumentation von Entwurfsentscheidungen und Designalternativen (die ver-worfen wurden) zu erstellen.62

Dem Ansatz deskriptiver Dokumentation folgend,63 können Modelle auch Dokumentation sein, wie beispielsweise Modelle von Datenbanken oder Architekturen. Sie entstehen dabei vor dem Implementieren einer Software64 und sind zum Verständnis und der Implementierung einer Software notwendig.65

- Testfälle

Testfälle beinhalten mindestens detaillierte Vorgehensanweisungen, was und wie ein Gegenstand getestet werden soll und welches Ergebnis erwartet wird. Testfälle sind notwendig,66 da jedes Softwaresystem getestet werden muss.67 In der Regel gibt es eine sehr große Menge von Testfällen, da sichergestellt werden soll, dass mög-lichst viele Anwendungsszenarien auch wirklich funktionieren.68 Um den Überblick über die Testfälle nicht zu verlieren, sollten diese dokumentiert werden.

- Richtlinien & Styleguides

Richtlinien und Styleguides, beispielsweise Standards, Konventionen, Muster, Checklisten oder Vorlagen,69 müssen selber wenig dokumentiert werden, stellen jedoch eine schriftliche Dokumentation von zu nutzenden Formulierungen und Formatierungen, etwa von Variablennamen, Schleifen und Blöcken, in Projekten dar. Richtlinien und Styleguides können durchaus Projekt-/Produktübergreifend (z.B. unternehmenseinheitlich) gültig sein.

2.2 Gründe für Entwicklerdokumentation

In der geläufigen Literatur werden zwei Argumente, die für Entwicklerdokumentationen sprechen, immer wieder hervorgehoben.70 Zum einen wird betont, dass die Einarbeitung neu zum Projekt stoßender Mitarbeiter in kürzerer Zeit und unter weniger Entwick-lungskosten geschieht. Unter diesem Aspekt wird Dokumentation zur Konservierung von Wissen, um es zu einem späteren Zeitpunkt verfügbar zu haben, genutzt. Zum ande-ren wird argumentiert, dass bei fehlender Dokumentation die Gefahr besteht, Anforde-rungen wegen fehlendem Hintergrundwissens aus fachlicher und technischer Sicht falsch zu implementieren. Der Transfer von Wissen, um nicht von falschen Annahmen auszugehen, wird hier unterstützt.

Diese beiden sind jedoch nicht die einzigen Gründe, aus denen Entwicklerdokumentati-on erstellt werden soll. Im Folgenden sind diese und weitere Gründe für Entwicklerdo-kumentation, die in heutigen Softwareentwicklungsprojekten bestehen können, erläu-tert.

2.2.1 Wissenskonservierung

Schriftliche Dokumentation dient der Konservierung von Informationen und Wissen und soll so dem Risiko des Informations- und Wissensverlusts durch Fluktuation71, Vergessen72 oder Stellenwechsel73 vorbeugen. Schriftliche Dokumentation soll auch dafür sorgen, dass bei einem eventuell notwendigen Re-Engineering oder bei Wartungsarbeiten relevante Informationen vorliegen.74 Eine bessere Dokumentationsqualität kann spätere Änderungen vereinfachen.75 Dies resultiert daraus, dass spezifisches Implementierungswissen des Programmierers, der einen bestimmten Quellcode erstellt hat, nachlesbar ist und sich eine Erweiterung und Wartung durch andere Programmierer leichter gestalten kann.76 David behauptet sogar, dass „eine gute Dokumentation (...) Voraussetzung für eine generelle Austauschbarkeit von Personal“77 ist.

In der Softwareentwicklung gibt es zwei Gründe, bei denen eine zuverlässige Dokumentation zur Informationskonservierung wirklich notwendig ist. Zum einen betrifft dies die Generierung von Testfällen.78 Zum anderen den Fall, dass klare und eindeutige Vorgaben bezüglich Spezifikationen und zu entwickelnder Features bestehen.79

2.2.2 Wissenstransfer

Wissensaufbau über den zu lösenden Problembereich und über die programmierte Software ist eine wichtige Aufgabe eines Programmierers.80 Der Satz „Wissen ist besser als Vermutung“81 trifft in der Softwareentwicklung, durch den hohen Grad der Komplexität und Interdependenz einzelner Softwareteile, in besonderem Maße zu.

Das Ziel von Dokumentation ist es, implizites Wissen82 eines Individuums in explizites Wissen der Organisation („Externalization“83 ) zu transformieren,84 um zu einem späteren Zeitpunkt das so erzeugte explizite Wissen der Organisation wieder in implizites Wissen eines Individuums („Internalization“85 ) zu transformieren.86

Schriftliche Dokumentation ist somit ein Vermittler zwischen Informationserzeuger und Informationsbenutzer.87 Sie ist ein hilfreiches Instrument, das zum Wissenstransfer genutzt werden kann.88

2.2.3 Koordination

Softwareentwicklung ist ein komplexer Prozess und bedarf der Koordination89.90 Dies trifft vor allem bei hoher Prozess- und Wissenskomplexität91 und bei umfangreichen Projekten zu.92 Dokumentation zur Koordination ist demnach primär zur Prozesssteue-rung und -kontrolle wichtig. Da sich Entwicklungsaufgaben aber beispielsweise anhand der Komponenten, Spezifikationen, Modellen oder der Architektur einer Software auf-teilen lassen,93 kann Entwicklerdokumentation als Basis zur Koordination von Entwick-lungsaufgaben genutzt werden.

Eine Koordination mit den Projektauftraggebern ist zur Abstimmung des Arbeitsauftrages immer notwendig und kann beispielsweise über Spezifikationen, Schnittstellendefinitionen zu externen Komponenten oder Modelle erreicht werden.94

2.2.4 Kommunikation

Schriftliche Dokumentation kann als Kommunikationsersatz oder -ergänzung (direkter Kommunikation) während der Softwareentwicklung genutzt werden.95 Genutzt werden kann dies beispielsweise bei Softwareentwicklungsteams, die örtlich weit auseinander liegen oder bei denen Verständigungsschwierigkeiten bestehen.96 In der Softwareent-wicklung wird oft behauptet, dass es wichtig ist, projektweite direkte Kommunikation zu verringern, da direkte Kommunikation zu geringerer Produktivität führt.97 Dies führ-te im Laufe der Zeit zu einer Substitution direkter Kommunikation durch schriftliche Dokumentation. Heutzutage wird direkte Kommunikation und Zusammenarbeit wieder vermehrt als nützlich eingestuft.98 Brooks ging 1975 schon explizit darauf ein, dass di-rekte Kommunikation erst dann schädlich für ein Projekt werden könnte, wenn zu viele Personen beteiligt sind.99

2.2.5 Softwareerstellungs-Vertrag

Bei der Erstellung einer Individualsoftware, die einem Softwareherstellungs-Vertrag100 unterliegt, ist eine Dokumentation oft schon implizit im Vertrag gegeben, da der Vertrag schriftliche Vereinbarung (Aufträge) über Eigenschaften des zu entwickelnden Systems enthält.101 Eine fachliche Dokumentation ist dann unerlässlich, wenn Vorgaben bezüglich Spezifikationen und zu entwickelnder Features bestehen.102

Ein besonderer Fall der Forderung nach umfassender Entwicklerdokumentation kann dann gegeben sein, wenn ein Auftraggeber die Entwicklung einer Software outgesourced hat, und den extern entwickelten Code verstehen (z.B. aus Sicherheitsgründen) oder erweitern/modifizieren will.103

2.2.6 Organisatorische Politik und Macht

Bei der Entwicklung von Software sind mehrere Interessensgruppen beteiligt,104 die verschiedene Gründe und Anforderungen an Dokumentation haben können.105 Die In-teressensgruppen, z.B. Programmierer, Nutzer und Projektverantwortliche, lassen sich vereinfachend in zwei Gruppen aufteilen: diejenigen, die die Software benutzen und diejenigen, die Einfluss auf die Softwareerstellung haben. Diese Arbeit beschränkt sich hier auf Interessensgruppen, die auf die Entwicklung direkt Einfluss nehmen können.

So kann beispielsweise das Management oder ein Projektleiter Dokumente fordern um das Gefühl der Kontrolle zu haben,106 die Unternehmensleitung fordert durch Dokumen-tation eine „Perfektionierung des Managements“107. Beteiligte Personen können Doku-mente zur Daseinsbegründung anfordern bzw. erstellen.108 Dokumente können auch zur Befriedigung des Bedürfnis, etwas ‚abhaken’ zu können, verlangt werden.109 Beispiels-weise kann ein Projektleiter detaillierte Anforderungs- und Architekturdokumentation fordern um seinen Arbeitsinhalt, das Managen der Entwicklung, explizit bestätigt zu se-hen und um die daraus resultierenden Arbeiten genehmigen zu können.

2.2.7 Strukturierung der Implementierung

Da Software komplex110 und die Erstellung von Software ein kreativer Prozess ist,111 wird Dokumentation von Programmierern zur Erhöhung der Übersichtlichkeit und der Verständlichkeit des Quellcodes genutzt.

Schon vor dem Schreiben der ersten Zeile Quellcode kann durch Dokumentation (Inline-Kommentare) eine Verdeutlichung und Strukturierung der nächsten Arbeitsschritte erreicht werden.112 Beispielsweise kann eine Aufstellung der nächsten Implementierungsaufgaben, ein Entwurf benötigter Funktionalitäten oder einfach eine knappe Übersicht über den Ablauf der weiteren Befehle aufgeschrieben werden.113

Eine solche Strukturierung dient auch der Erkennung von Problemen, die in der Imple-mentierung auftreten können und über die man sich durch das Aufschreiben rechtzeitig und umfassend Gedanken macht.114 Dies bietet den Vorteil, dass ‚frisch’ an ein Problem herangegangen wird und nicht, durch eine zu frühe Entscheidung auf einen Lösungs-weg, spätere Probleme selber erzeugt und Alternativen übersehen werden.115

2.2.8 Durchdringung inhaltlicher Konzepte

Wenn Entwickler Software erstellen, erweitern, wiederverwenden oder von Fehlern bereinigen sollen, ist die Durchdringung inhaltlicher Konzepte und Wissen über interne Abläufe einer Software, die übersichtlich und verständlich durch Modelle und Pläne gegeben werden können, Voraussetzung.116 Gerade in den heutzutage vielfach verwendeten objektorientierten Vorgehensweisen ist die Durchdringung modellierter inhaltlicher Konzepte zum Verständnis des objektorientierten Systems eine fundamentale Voraussetzung, um ein System korrekt implementieren zu können.117

Die Erstellung von Dokumentation kann auch helfen Fehler aufzudecken. Denn „(...) beim Schreiben werden Lücken offensichtlich“118, die vorher nicht aufgefallen sind oder die nicht bedacht wurden. Die Praktik des Extreme Programming, dass vor der Implementierung eines Codestückes zuerst die Testfälle dieses Abschnittes erstellt werden sollen,119 zielt beispielsweise darauf ab.

2.2.9 Geforderte Qualitätsstandards

Sobald von einer Software eine hohe Zuverlässigkeit und Sicherheit erwartet wird, kann man beobachten, dass Dokumentation detaillierter und umfangreicher erstellt wird. Dies liegt zum großen Teil an einer Ursache-Wirkungs-Beziehung, der die Software dann un-terliegt.120 Die Ursache der hohen Qualitätsanforderung hat zwei Wirkungen. Erstens wird erschöpfend getestet und die Tests werden festgehalten. Zweitens strebt man an, Systeme leicht wartbar zu gestalten (nach weit verbreiteter Meinung also viel zu doku-mentieren), um bei Fehlfunktionen schnell und richtig eingreifen zu können.

2.2.10 Dokumentationsvorgaben

In einem Softwareentwicklungsprojekt kann es verschiedene Gründe für Dokumentati-onsvorgaben geben. Das jeweils angewendete Vorgehensmodell bzw. Softwareentwick-lungsmethode, nach dem eine Software entwickelt wird, kann bestimmte Elemente der Entwicklerdokumentation verlangen.121 Einige Modelle unterliegen beispielsweise einer inkrementellen oder evolutionären Vorgehensweise, bei denen davon ausgegangen wird, dass zu einem späteren Zeitpunkt eine Wartung der Software notwendig wird. Dann ist eine fachliche Dokumentation, z.B. Daten- oder Objektmodelle, unerlässlich.122 Auch können CASE-Tools die Erzeugung verschiedener Dokumente im Entwicklungsprozess vorschreiben.

2.3 Nachteile von Entwicklerdokumentation

Softwareentwicklung bedarf schon seit jeher die Abstimmung zueinander im Gegensatz und teilweise interdependenter stehender Ziele.123 Ein Ziel, die Qualität der Software, kann durch Dokumentation verbessert werden.124 Auf die anderen Ziele, Entwicklungs-kosten und -dauer, hat Entwicklerdokumentation allerdings einen negativen Einfluss.

Die Nutzung von Dokumentation in der Softwareentwicklung beinhaltet also ein gewis-ses Risiko,125 das auf wenige Gründe zurückgeführt werden kann. Alle Nachteile der Erstellung einer Entwicklerdokumentation können im Endeffekt auf die zwei negativ korrelierenden Ziele verdichtet werden: zum einen auf einen Kostenaspekt (‚Dokumen-tation ist zu teuer’) und zum anderen auf einen Zeiteffekt (‚Dokumentation ist zu zeit-aufwändig’).126 Diese vereinfachende Darstellung ist in der Betrachtung dieser Arbeit allerdings wenig hilfreich. Vielmehr wird im Folgenden darauf eingegangen, warum Dokumentation zu viel kosten bzw. zu hohen Zeitaufwand erzeugen, und welche sonstigen Nachteile Dokumentation noch mit sich bringen kann.

2.3.1 Aktualität

Während der Entwicklung einer Software unterliegen die verschiedenen Gegenstände der Dokumentation, insbesondere Quellcode, Schnittstellen, Architektur und Modelle, verschieden stark ausgeprägten Änderungen.127 Auch Anforderungen und Spezifikatio-nen ändern sich in unklaren Softwareentwicklungsprojekten häufig,128 und jede Soft-ware unterliegt nach der Fertigstellung ständig dem Druck, neuen Bedürfnissen angepasst werden zu müssen.129 Durch Änderungen an Gegenständen der Dokumentation müsste auch die Dokumentation des Gegenstandes so geändert werden, dass sie der ak-tuellen Situation des dokumentierten Gegenstandes entspricht.130 In der Praxis wird die Dokumentation einerseits jedoch oft nicht aktualisiert,131 andererseits kann eine schrift-liche Dokumentation nicht alle Feinheiten, wie eine Software funktioniert, erklären.132 Aus diesen Gründen findet sich in der Literatur sogar, häufig zusammen mit der Aussa-ge veraltete Dokumentation sei ‚gefährlich’, der Tipp: „Never trust documentation“133.

2.3.2 Aktualisierungsaufwand

Wie oben gezeigt ändert sich Dokumentation stetig, oder sollte sich zumindest stetig ändern.134 Durch die entstehende Notwendigkeit zur Aktualisierung von Dokumentation kann ein hoher Zeitaufwand entstehen, der in der Praxis kaum investiert wird.135 Dies liegt zum großen Teil daran, dass Softwareprojekte unter einem stark ausgeprägten Termindruck zu leiden haben, und ein zusätzlicher Aufwand für vermeintlich überflüs-sige Aktivitäten, die nur die Projektlaufzeit erhöhen würde, zuerst gestrichen wird.136 Daher kommt auch die Annahme, dass eine schnellere Realisierung von Software-Strukturen u.a. durch Dokumentationserleichterungen erreicht werden kann.137 Auch kann sich der Fall ergeben, dass Termine nicht eingehalten werden können, da bei der Projektplanung der Aufwand für notwendige Dokumentation nicht berücksichtigt wur-de.138

[...]


1 Vgl. Boehm u.a. /Characteristics/ S. 2.1-2.2; Ambler /Agile Modeling/ S. 4

2 Vgl. zur Abgrenzung Kapitel 1.4

3 Vgl. Komarnicki /Programmiermethodik/ S. 136

4 Stelzer /Möglichkeiten/ S. 104

5 Vgl. Borchert /Entwicklung/ S. 6-8; Visconti, Cook /Evolution/; Stelzer /Möglichkeiten/ S. 212-214; Block geht zwar nicht explizit davon aus, ihr Artikel Block /Life Cycle/ lässt dies aber vermuten

6 Vgl. Stelzer /Möglichkeiten/ S. 8-9; David /Relevanz/ S. 71; In der Praxis werden die Dokumentations- anforderungen der Vorgehensmodelle oft als Problem bezeichnet, vgl. Stelzer /Möglichkeiten/ S. 280

7 Vgl. Boehm /Agile Methods/ S. 66; Poppendieck /Lean Programming/ S. 3-4; Ambler /Agile Modeling/ S. 17

8 Vgl. David /Relevanz/ S. 18; Andersen u.a. /Systems Developement/ S. 159; Powell, French, Knight /Software Documentation/ S. 201; Brooks /Mythos/ S. 153; Wong /Incomplete Documentation/ S. 68

9 Vgl. Deifel u.a. /Praxis/ S. 31; Borchart /Entwicklung/ S. 6; Didrich, Klein /Aragmatic Approach/ S. 1; Visconti, Cook /Evolution/ S. 223; David /Relevanz/ S. 15-19

10 Vgl. Zokaites /Code/ S. 1-2 ; Cockburn /Development/ S. 176-177; Tempel /Re-Engineering/ S. 223

11 Vgl. Komarnicki /Programmiermethodik/ S. 136; Ambler /Agile Modeling/ S. 144; Brooks und Naur nennen Dokumentation eine „Last“ (“a burden”), vgl. Brooks /Mythos/ S. 153; Naur /Computing/ S. 352

12 Boehm u.a. unterstellen der Softwareentwicklung z.B. einen linearen Prozess, dessen Phasen durch ei- ne strenge Dokumentation abgeschlossen wird, vgl. Boehm u.a. /Characteristics/ 2.1-2.9, wohinge- gen dem Extreme Programming teilweise unterstellt wird, es verbiete Dokumentation außerhalb von Quellcode, vgl. Paulk /Extreme Programming/ S. 22

13 Brooks /Silver Bullet/ S. 10

14 Vgl. Brooks /Silver Bullet/ S. 10

15 Vgl. Yourdon /Programmierkunst/ S. 30

16 Vgl. Smith, Thomas, Tilley /Documentation/ S. 235; David /Relevanz/ S. 1

17 Vgl. David /Relevanz/ S. 18; Boehm /Agile Methods/ S. 68

18 Vgl. Oestereich u.a. /Objektorientierung/ S. 18

19 Vgl. Ambler /Agile Modeling/ S. 166-167

20 Vgl. beispielsweise Powell, French, Knight /Software Documentation/; Zeihsel, Wittern /Dokumentation/ S. 28-30 oder David /Relevanz/

21 Gluchowski /Informationssysteme/ S. 1

22 Vgl. zur Abgrenzung und zu Literaturquellen zur Prozessdokumentation Kapitel 1.4

23 Vgl. zur Abgrenzung und zu Literaturquellen zu Programmdokumentation Kapitel 1.4

24 Zur Syntax verschiedener Dokumente bzw. Modellnotationen vgl. beispielsweise Balzert /Lehrbuch/, Rumbaugh u.a. /Modellieren/, Ferstl, Sinz /Grundlagen/ oder Raasch /Systementwicklung/; vgl. zu allgemeiner Dokumentationssyntax Rupietta /Benutzerdokumentation/

25 Zu Vorschlägen der physischen Speicherung/Ablage von Dokumenten vgl. beispielsweise Gluchowski /Informationssysteme/; Zeihsel /Produktweiterentwicklung/ S. 23-26

26 zum Dokumentationsmanagement in Projekten vgl. Madauss /Projektmanagement/ S. 319-328

27 Vgl. Kieser, Kubicek /Organisation/ S. 45-47; Schreyögg /Organisation/ S. 326-327

28 Es werden demnach deterministische Eigenschaften von Einflussfaktoren auf Entwicklerdokumentati- on aufgezeigt.

29 Dieser Teil der Arbeit basiert auf rein theoretischen Überlegungen und baut in Ihren Gestaltungsalter- nativen auf Kapitel 3 auf. Eine empirische Arbeit, die Einflussfaktoren auf Entwicklerdokumentati- on systematisch untersucht, konnte nicht gefunden werden.

30 Vgl. Rupietta /Benutzerdokumentation/ S. 15-16; Gaus /Dokumentationslehre/ S. 1-2; Klassische Do- kumentationen zu alltäglichen Gegenständen und zur Unterstützung einer Aktion sind beispielsweise

31 Der zu dokumentierende Gegenstand kann ein Produkt oder ein Prozess der Softwareentwicklung sein, vgl. Stelzer /Möglichkeiten/ S. 104

32 Vgl. Kapitel 3.2.3

33 Beispielsweise zählen darunter direkte Kommunikation, umfassende Partizipation, öffentliche Präsen- tation und die (klassische) schriftliche Dokumentation, vgl. für weitere Alternativen Kapitel 3.2. Mit dieser Ansicht wird Kieser und Kubicek gefolgt, die eine synonyme Sichtweise auf Weisungen und Programme vertreten: „Persönliche Weisungen können ebenso mündlich wie schriftlich erteilt wer- den, und Programme können gleichermaßen in Handbüchern wie im Bewusstsein der Organisati- onsmitglieder ‚festgeschrieben’ sein“, Kieser, Kubicek /Organisation/ S. 104

34 Manchmal auch Benutzerdokumentation, (Benutzer-)Handbuch oder Produktdokumentation genannt, vgl. Jamin /Lexikon/ S. 109; Chroust /Modelle/ S. 189; Stelzer /Möglichkeiten/ S. 101, 302

35 Vgl. Oestereich u.a. /Objektorientierung/ S. 213; Savolainen /Perspectives/ S. 111-112; Dumke, Foltin /Softwareentwicklungskomplexität/ S. 84; Krause /Software-Erstellungsvertrag/ S. 5-6; David /Relevanz/ S. 61-62; Stahlknecht, Hasenkamp /Wirtschaftsinformatik/ S. 323-324; Die Benennung der einzelnen Dokumentationsarten ist teilweise unterschiedlich, läuft jedoch semantisch immer auf einer der bzw. die genannten Dokumentationsarten hinaus.

36 Vgl. Balzert /Entwicklung/ S. 49; Sommerville /Software/ S. 230; Rupietta /Benutzerdokumentation/S. 15-16; Dumke /Software Engineering/ S. 102; David /Relevanz/ S. 63-64; zur Vertiefung eignet sich Rupietta /Benutzerdokumentation/; eine Norm findet sich beispielsweise in DIN /DIN 66230/; eine kurze Zusammenfassung findet sich in David /Relevanz/ S. 93-105

37 Vgl. David /Relevanz/ S. 64-65; weiterführend Lehner u.a. /Organisationslehre/ S. 511-522; Dumke /Software Engineering/ S. 183-207; Koreimann /Softwareentwicklung/ S. 249-351; Hopkins, Jernow /Software Development Process/; für spezielle Dokumentation zur Projektkontrolle (die im Kontext dieser Arbeit der Prozessdokumentation entspricht) vgl. Madauss /Projektmanagement/ S. 177-247;

38 Vgl. Lehner u.a. /Organisationslehre/ S. 518; David /Relevanz/ S. 106-115; oder allgemein Vorge- hensmodelle zur Softwareentwicklung.

39 Vgl. Brodbeck /SE-Projekte/ S. 58-59; David /Relevanz/ S. 43-44, 86-89; Stahlknecht, Hasenkamp /Wirtschaftsinformatik/ S. 324

40 Vgl. Ambler /Agile Modeling/ S. 143; Dumke /Software Engineering/ S. 3-4

41 Teilweise auch ‚spezifizierend’ genannt, vgl. David /Relevanz/ S. 61-63

42 Vgl. Ambler /Agile Modeling/ S. 143-144; Krause /Software-Erstellungsvertrag/ S. 6; Oestereich u.a. nennen dies externe bzw. interne Sicht der Dokumentation, vgl. Oestereich u.a. /Objektorientierung/

S. 219-220; David /Relevanz/ S. 62-63

43 Vgl. David /Relevanz/ S. 74-75; Ambler /Agile Modeling/ S. 9; Boehm nennt den determinierenden Einsatz von Dokumentation „Vorabdokumentation“ und erstellt diese, „um (...) Ziele und Pläne für künftige Tätigkeiten der Softwareentwicklung zu definieren (...)“, vgl. Boehm /Software- Produktion/ S. 37-38; Müller nennt determinierende Dokumentation explizit „Projektvorgaben“, vgl. Müller /Software-Engineering/ S. 49

44 Vgl. Cockburn /Development/ S. 127-129

45 Der Ausdruck Funktion wird anstelle der in der OO üblichen Bezeichnung Methode verwendet, um den Charakter des Quellcodes hervorzuheben und eine Abgrenzung zu möglichen Methodendoku- mentationen verschiedener Prozessmodelle anzudeuten.

46 Vgl. Oestereich /Objektorientierung/ S. 219

47 Häufig, insbesondere bei Quellcode, wird dann einfach nur von ‚Kommentaren’ geredet, vgl. Kernig- han, Plauger /Elements/ S. 117-128

48 Vgl. beispielsweise DIN /DIN 66230/, Gray, London /Programm-Dokumentation/ oder Rupietta /Benutzerdokumentation/

49 Um einen Eindruck zu bekommen muss man nur die umfangreiche Literatur mit Bezug auf Prozess- modelle der Softwareentwicklung betrachten. Alleine Literatur zu den Themen CMM oder XP ist schon sehr umfangreich.

50 D.h. selbst wenn Dokumentation sogar gänzlich unkorrekt ist, aber noch genutzt wird ist sie noch nicht am Ende der Lebensdauer angekommen. Einige Autoren würden die Bezeichnung ‚Ende des Le- benszyklus einer Dokumentation’ verwenden. Hier wird jedoch die Meinung vertreten, dass es kei- nen typischen Lebenszyklus (wie beispielsweise Erstellen, Nutzen, Warten) einer Software gibt. Hier wird vielmehr die Meinung vertreten, dass Entwicklerdokumentation einer ständigen und gleichzeitigen Erstellung, Nutzung und Wartung unterliegt. Der Begriff ‚Lebensdauer’ ist also präg- nanter, als der Begriff ‚Lebenszyklus’.

51 Vgl. David /Relevanz/ S. 74

52 Vgl. Kuhlmann /Qualitätsmodell/ S. 119; Gray, London /Programm-Dokumentation/ S. 12; Tempel geht von mehr als 50% aus, vgl. Tempel /Re-Engineering/ S. 218-219

53 Vgl. Zum folgenden Absatz David /Relevanz/ 73-92; Für eine weit detailliertere und umfangreicherer Zusammenstellung vgl. Gray, London /Programm-Dokumentation/

54 Vgl. Brooks /Mythos/ S. 54-55

55 Vgl. DeMarco /Projektmanagement/ S. 65-66; Brooks /Mythos/ S. 54-55

56 Vgl. weiterführend Bass, Clements, Kazman /Architecture/ insb. Kapitel 2 “What Is Software Archi- tecture?” oder für eine umfassende Definitionssammlung o.V. /Software Architecture/

57 Vgl. Kazman /Scenario/ S. 6

58 Vgl. Ambler /Agile Modeling/ S. 143

59 Vgl. Oestereich u.a. /Objektorientierung/ S. 23

60 Vgl. Yourdon /Programmierkunst/. S. 186; Ein praxisnahes Negativ-Beispiel hierzu ist der Absturz ei- ner Ariane 5 Trägerrakete am 4.Juni 1996, der durch einen fehlerhaften Prozeduraufruf zustande kam. Vgl. dazu Gleick /Bug/; Lions /Ariane 5/

61 Vgl. Borchart /Entwicklung/ S. 6; Tempel /Re-Engineering/ S. 220

62 Vgl. Oestereich u.a. /Objektorientierung/ S. 220

63 Vgl. Kapitel 1.4

64 Modelle stellen dann determinierende Dokumentation dar, vgl. Kapitel 1.4

65 Vgl. Ambler /Agile Modeling/ S. 143-144

66 Vgl. Beck /Extreme Programming/ S. 45

67 Vgl. Sommerville /Software/ S. 9-10

68 Natürlich sollte angestrebt sein, dass alle Szenarien funktionieren.

69 Vgl. Oestereich u.a. /Objektorientierung/ S. 100

70 Vgl. zum folgenden Absatz David /Relevanz/ S. 18-19

71 Vgl. Yonda /Employees/ S. 1; Oestereich u.a. /Objektorientierung/ S. 90-91; Funke u.a. /Softwareentwicklung/ S. 22; McConnell /Less/ S. 2; Cockburn /Development/ S. 36-37; Locke- mann u.a. /Systemanalyse/ zitiert nach David /Relevanz/ S. 17; Das Problem wird dadurch noch verschärft, da Fluktuation in der Softwarebranche, dem Saratoga Institute nach, höher ist, als in anderen Branchen, zitiert nach Müller /Erfolgsfaktoren/ S. 383

72 Vgl. Lockemann u.a. /Systemanalyse/ zitiert nach David /Relevanz/ S. 17; Boehm /Agile Methods/ S. 66

73 Vgl. Poole, Huisman /Extreme Programming/ S. 43

74 Vgl. Tempel /Re-Engineering/ S. 215; David /Relevanz/ S. 19; Nietsch /Softwareentwicklung/ S. 92-94

75 Vgl. Dumke /Software Engineering/ S. 99

76 Vgl. Borchert /Entwicklung/ S. 7; Gray, London /Programm-Dokumentation/ S. 11-13; Cockburn /Development/ S. 97-99

77 David /Relevanz/ S. 19

78 Vgl. Oestereich u.a. /Objektorientierung/ S. 220

79 Vgl. David /Relevanz/ S.14

80 Vgl. Mellis /Software/ S. 14; Naur /Computing/ S. 38; Naur argumentiert sogar, dass das wichtigste Ziel, noch vor der Erstellung von Quellcode, Dokumentation oder Spezifikationen, die ‚Bildung ei- ner Theorie’ über die Software ist, und dass das Wissen eines Programmierers, dass der Dokumenta- tion übersteigen sollte. (S. 41-42) Dies lässt sich allerdings auch leicht dadurch erklären, dass Ent- wicklerdokumentation nicht jedes Detail einer Software enthalten sollte.

81 Oestereich /Objektorientierung/ S. 93

82 Vgl. Zeihsel /Produktweiterentwicklung/ S. 20; nach Nonaka und Takeuchi ‚tacit’, vgl. Nonaka, Ta- keuchi /Company/ S. 62-64

83 Vgl. Nonaka, Takeuchi /Company/ S. 64-67

84 Vgl. Zeihsel, Wittern /Dokumentation/ S. 26; Nonaka, Takeuchi /Company/ S. 85-86

85 Vgl. Nonaka, Takeuchi /Company/ S. 69-70

86 Vgl. Nonaka, Takeuchi /Company/ S. 14, 69-70

87 Vgl. Gaus /Dokumentationslehre/ S. 7-8

88 Vgl. Ambler /Agile Modeling/ S. 164; Naur /Computing/ S. 38

89 Vgl. Kieser, Kubicek /Organisation/ S. 104-105

90 Vgl. David /Relevanz/ S. 18; Hoch u.a. /Secrets/ S. 96; Dumke, Foltin /Softwareentwicklungskom- plexität/ S. 85

91 Vgl. Zeihsel /Produktweiterentwicklung/ S. 19-22

92 Vgl. Powell, French, Knight /Software Documentation/ S. 201

93 Vgl. Mellis u.a. /Software/ S. 28-29

94 Vgl. Funke u.a. /Softwareentwicklung/ S. 129; Ambler /Agile Modeling/ S. 9, 70-71

95 Vgl. Gaus /Dokumentationslehre/ S. 22; Gray, London /Programm-Dokumentation/ S. 10; Gray und London argumentieren, dass ein ursprünglicher Gedanke ohne Dokumentation mehr und mehr ent- stellt wird, so das der umgesetzte Gedanke kaum noch Ähnlichkeit mit dem ursprünglichen hat.

96 Vgl. Cockburn /Development/ S. 13 i.V.m. S. 97

97 Vgl. Balzert /Entwicklung/ S. 461-466; Sommerville /Software/ S. 295; Brooks /Mythos/ S. 11-22; Schnupp, Floyd /Software/ S. 209-212

98 Vgl. Pasch /Software-Entwurf/ S. 15-16; David /Relevanz/ S. 19-22; Ambler /Agile Modeling/ S. 84- 85; Cockburn /Development/ S. 148-149, 153-156; Brodbeck /Kommunikation/ S. 11-13; Stelzer /Möglichkeiten/ S. 148-149

99 Vgl. Brooks /Mythos/ S. 16-17; Dies wäre auch ein Grund, warum man sagt, dass Extreme Program- ming nur erfolgreich eingesetzt werden kann, wenn die Teamgröße 20 Personen nicht überschreitet, vgl. Beck /Extreme Programming/ S. 157, und warum bei Microsoft, wo stark auf Kommunikation gesetzt wird, auch kleine Entwicklungsteams vorherrschen, vgl. Cusumano, Selby /Microsoft/ S. 56 i.V.m. 83

100 Für weiterführende Informationen zu Software-Erstellungsverträgen siehe Krause /Software- Erstellungsvertrag/ oder Wagen /Softwareherstellungsvertrag/

101 Vgl. Lockemann /Systemanalyse/ zitiert nach David /Relevanz/ S. 17 102 Vgl. David /Relevanz/ S.14

103 Vgl. Deifel u.a. /Praxis/ S. 33; Beck /Extreme Programming/ S. 156

104 Vgl. Oestereich u.a. /Objektorientierung/ S. 213; Bächle /Qualitätsmanagement/ S. 77-81

105 Vgl. Powell, French, Knight /Software Documentation/ S. 201; Ambler /Documentation/ S. 1

106 Vgl. Ambler /Agile Modeling/ S. 144-145; Cockburn /Development/ S. 168; Beck /Extreme Pro- gramming/ S. 156

107 Madauss /Projektmanagement/ S. 21

108 Vgl. Ambler /Agile Modeling/ S. 146-147

109 Vgl. Lockemann /Systemanalyse/ zitiert nach David /Relevanz/ S. 17

110 Vgl. David /Relevanz/ S. 18; Hoch u.a. /Secrets/ S. 96; Dumke, Foltin /Softwareentwicklungskom- plexität/ S. 85; Otto /Komplexitätseffekt/ S. 27; Brooks /Silver Bullet/ S. 11

111 Vgl. beispielsweise Sommerville /Software/ S. 284; Grams /Denkfallen/ S. 111; Tempel /Re- Engineering/ S. 220; Madauss /Projektmanagement/ S. 21-22; Brooks /Silver Bullet/ S. 18

112 Vgl. Brooks /Mythos/ S. 155; Dijkstra stellt dazu zwei Beispiele vor, in denen er seine ‚Kommentare’ allerdings wieder löscht, Dijkstra /Notes/ S. 27-39, 50-63

113 Vg. Funke u.a. /Softwareentwicklung/ S. 119-120; Ambler /Agile Modeling/ S. 9-10

114 Vgl. Ambler /Agile Modeling/ S. 145-146

115 Vgl. Leeds, Weinberg /Computer/ S. 282

116 Vgl. Koschke, Plödereder /Programmverstehen/ S. 159

117 Vgl. Kuhlmann /Qualitätsmodell/ S. 116

118 Brooks /Mythos/ S. 96

119 Vgl. Beck /Extreme Programming/ S. 115

120 Vgl. zum restlichen Absatz Boehm /Software-Produktion/ S. 497-502, Boehm argumentiert, dass bei hoher geforderter Sicherheitsrate, vorab genauere Spezifikationen und Modelle erstellt werden müs- sen, und dass von Auftraggebern solcher Software (z.B. Militärs, Fahrzeughersteller) umfangreiche- re Dokumentations-Anforderungen bestehen. Madauss deutet darauf hin, dass gerade Systeme mit hohen Sicherheits- und Zuverlässigkeits-Anforderungen äußerst komplexe Systeme sind. Madauss zieht in seinem Buch immer wieder Vergleiche zur Raumfahrt und kommt so auch zu dem Schluss, dass „das Einfrieren der jeweiligen Basisdokumentation (Anforderungen, Spezifikationen u.Ä., Anm. d. Autors) (...) den erfolgreichen Abschluss vorausgehender Überprüfungen voraus(-setzt)“, und erst dann die Entwicklung folgen sollte, vgl. Madauss /Projektmanagement/ S. 153

121 Vgl. beispielsweise Chroust /Modelle/ S. 187-188; Oestereich /Objektorientierung/ S. 21

122 Vgl. David /Relevanz/ S.14

123 Vgl. Boehm /Software-Produktion/ S. 16-18

124 Vgl. Kapitel 2.2.9

125 Vgl. Lehner u.a. /Organisationslehre/ S. 257-260

126 In allgemeiner Literatur zu Betriebwirtschaftslehre und Produktion wird angeführt, das Zeit in der in- dustriellen Produktion durch Kosten (Investitionen) substituiert werden kann. In der Softwareindust- rie jedoch kann ein Zeitmangel nicht ohne weiteres durch einen höheren Ressourceneinsatz, was ei- ner Substitution des Zeitmangels in einen Kostennachteil entspricht, wettgemacht werden, vgl. Brooks /Mythos/ S. 19-22.

127 Vgl. Oestereich u.a. /Objektorientierung/ S. 22; Ameneyro u.a. /System/ S. 29-30; Naur /Computing/ S. 42

128 Vgl. Cusumano, Yoffie /Software Development/ S. 61, 64; Cusumano, Selby /Microsoft/ S. 221-224

129 Vgl. Brooks /Silver Bullet/ S. 12; Weltz, Ortmann /Softwareprojekt/ S. 16

130 Vgl. Nietsch /Softwareentwicklung/ S. 37

131 Vgl. Deifel u.a. /Praxis/ S. 31; Rugaber /Domain Knowledge/ S. 144

132 Vgl. Cusumano, Selby /Microsoft/ S. 117

133 Ambler /Agile Modeling/ S. 166

134 Vgl. Zöllner /Systementwicklung/ S.94-95

135 Vgl. Funke u.a. /Softwareentwicklung/ S. 32; Cusumano, Selby /Microsoft/ S. 117-118; Boehm kommt 1981 zu dem Schluss, dass ein Programmierer ca. 60% des Arbeitsaufwandes für Dokumentation aufgewendet muss, vgl. Boehm /Software-Produktion/ S. 502

136 Vgl. David /Relevanz/ S. 19

137 Vgl. Koreimann /Softwareentwicklung/ S. 224

138 Vgl. Funke u.a. /Softwareentwicklung/ S. 22

Ende der Leseprobe aus 100 Seiten

Details

Titel
Dokumentation in der Softwareentwicklung - Effizienter Einsatz von Entwicklerdokumentation
Hochschule
Universität zu Köln  (Wirtschaftsinformatik, Systementwicklung)
Note
1,0
Autor
Jahr
2002
Seiten
100
Katalognummer
V21755
ISBN (eBook)
9783638252966
Dateigröße
1500 KB
Sprache
Deutsch
Schlagworte
Dokumentation, Softwareentwicklung, Effizienter, Einsatz, Entwicklerdokumentation
Arbeit zitieren
Kai Jan Oey (Autor:in), 2002, Dokumentation in der Softwareentwicklung - Effizienter Einsatz von Entwicklerdokumentation, München, GRIN Verlag, https://www.grin.com/document/21755

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Dokumentation in der Softwareentwicklung - Effizienter Einsatz von Entwicklerdokumentation



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden