Softwaredokumentation#
Eine gute Dokumentation ist genauso wichtig wie der Code selbst – sie ermöglicht Wartung, Erweiterung und Übergabe von Software an andere Entwickler oder Anwender.
Arten der Dokumentation#
Softwaredokumentation
│
┌────────────┼────────────┐
▼ ▼ ▼
Entwickler- Anwender- Technische
dokumentation dokumentation Dokumentation
(intern) (extern) (Architektur)Entwicklerdokumentation (interne Dokumentation)#
Richtet sich an Entwickler, die den Code warten, erweitern oder debuggen müssen.
Code-Kommentare#
# Einzeiliger Kommentar – kurze Erklärung einer Zeile
x = x + 1 # Zähler erhöhen
"""
Mehrzeiliger Kommentar (Docstring):
Beschreibt eine Funktion oder Klasse ausführlich.
"""
def berechne_mehrwertsteuer(netto: float, steuersatz: float = 0.19) -> float:
"""
Berechnet den Bruttobetrag inkl. Mehrwertsteuer.
Parameter:
netto (float): Nettobetrag in Euro
steuersatz (float): MwSt-Satz als Dezimalzahl (Standard: 0.19 = 19%)
Rückgabe:
float: Bruttobetrag in Euro
Beispiel:
>>> berechne_mehrwertsteuer(100)
119.0
"""
return netto * (1 + steuersatz)Was gehört in einen guten Kommentar?#
| Sinnvoll | Überflüssig |
|---|---|
| Warum etwas so gemacht wird | Was offensichtlich im Code steht |
| Erklärung komplexer Algorithmen | x = x + 1 # x wird um 1 erhöht |
| Dokumentation von Parametern/Rückgaben | Jede einzelne Zeile kommentieren |
| Bekannte Einschränkungen / TODO | Veraltete Kommentare (schlimmer als keine!) |
Changelog / Versionierung#
Dokumentiert was wann von wem geändert wurde:
# Changelog
## Version 2.1.0 – 2026-03-15
### Hinzugefügt
- Exportfunktion für CSV-Dateien
### Geändert
- Datenbankverbindung auf PostgreSQL umgestellt
### Behoben
- Fehler bei Leerzeichen in Benutzernamen (#42)
## Version 2.0.0 – 2026-01-10
### Hinzugefügt
- Benutzerrollen: Admin, Editor, ViewerAnwenderdokumentation (externe Dokumentation)#
Richtet sich an Endanwender – ohne Programmierkenntnisse verständlich.
Inhalte#
| Bestandteil | Beschreibung |
|---|---|
| Einleitung | Was ist das Programm? Wofür wird es verwendet? |
| Systemvoraussetzungen | Betriebssystem, Hardware, Installationsvoraussetzungen |
| Installation | Schritt-für-Schritt-Anleitung |
| Erste Schritte | Schnelleinstieg, typische Anwendungsszenarien |
| Funktionsbeschreibung | Alle Menüs, Buttons, Optionen erklärt |
| Fehlermeldungen & Lösungen | Häufige Probleme und Abhilfe (FAQ) |
| Glossar | Erklärung von Fachbegriffen |
| Kontakt / Support | An wen wende ich mich bei Problemen? |
Sprache & Stil#
- Einfache Sprache – keine Fachbegriffe ohne Erklärung
- Aktiv formulieren: „Klicken Sie auf…" statt „Es wird geklickt…"
- Screenshots zur Veranschaulichung
- Schritt-für-Schritt statt Fließtext
- Aus Nutzersicht schreiben (Was will der Nutzer erreichen?)
Technische Dokumentation (Systemdokumentation)#
Richtet sich an Systemadministratoren und Architekten.
Inhalte#
| Bestandteil | Beschreibung |
|---|---|
| Systemarchitektur | Übersicht aller Komponenten, Schnittstellen, Abhängigkeiten |
| Datenbankschema | ERM, Relationenschema, Tabellenstruktur |
| API-Dokumentation | Endpunkte, Parameter, Rückgabewerte, Authentifizierung |
| Deployment | Wie wird das System installiert/betrieben? |
| Sicherheitskonzept | Zugriffsrechte, Verschlüsselung, Backup |
| Netzwerkplan | Wie ist das System eingebunden? |
Vergleich der Dokumentationstypen#
| Entwicklerdokumentation | Anwenderdokumentation | Technische Doku | |
|---|---|---|---|
| Zielgruppe | Entwickler | Endanwender | Admins / Architekten |
| Sprache | Technisch | Einfach | Technisch |
| Fokus | Code, Logik, Algorithmen | Bedienung, Funktionen | System, Infrastruktur |
| Format | Kommentare, README, Docstrings | Handbuch, PDF, Wiki | Diagramme, Spezifikationen |
| Wann | Während der Entwicklung | Nach Fertigstellung | Projekt- und Betriebsphase |
README – Die wichtigste Entwicklerdoku#
Eine README.md ist das erste, was ein neuer Entwickler liest:
# Projektname
Kurze Beschreibung: Was macht das Projekt?
## Voraussetzungen
- Python 3.10+
- PostgreSQL 14+
## Installation
1. Repository klonen: `git clone https://github.com/...`
2. Abhängigkeiten installieren: `pip install -r requirements.txt`
3. Konfiguration anpassen: `.env.example` → `.env`
4. Starten: `python main.py`
## Verwendung
Kurze Beispiele zur Nutzung...
## Struktur
projekt/
├── main.py # Einstiegspunkt
├── db/ # Datenbankmodule
└── tests/ # Unittests
## Lizenz
MIT LicenseDokumentationswerkzeuge#
| Tool | Typ | Beschreibung |
|---|---|---|
| Markdown (.md) | Textformat | Einfach, gut lesbar, für README/Wikis |
| Javadoc / Docstring | Code-Kommentare | Automatisch aus Quellcode generiert |
| Confluence | Wiki | Unternehmens-Wiki für Team-Dokumentation |
| Swagger / OpenAPI | API-Doku | Standardformat für REST-API-Dokumentation |
| draw.io / Visio | Diagramme | Architektur- und Ablaufdiagramme |
Prüfungsbeispiele#
„Was ist der Unterschied zwischen Anwenderdokumentation und Entwicklerdokumentation?"
→ Anwenderdokumentation richtet sich an Endnutzer ohne Programmierkenntnisse – erklärt die Bedienung der Software. Entwicklerdokumentation richtet sich an Programmierer – erklärt Code, Logik, Schnittstellen und interne Abläufe.
„Warum sind Kommentare im Quellcode wichtig?"
→ Sie ermöglichen anderen Entwicklern (und dem Autor selbst nach Wochen), den Code schnell zu verstehen, zu warten und zu erweitern – ohne den gesamten Algorithmus neu durchdenken zu müssen.
„Ein Kollege übernimmt dein Projekt. Welche Dokumentation ist am wichtigsten?"
→ Eine gute README.md mit Installationsanleitung, Projektstruktur und Kurzbeschreibung – ergänzt durch Code-Kommentare für komplexe Stellen und ein Datenbankschema falls eine Datenbank genutzt wird.
Siehe auch#
- uml — UML-Diagramme als Teil der technischen Dokumentation (Aktivitätsdiagramme, Klassendiagramme)
- datenformate — Swagger/OpenAPI nutzt JSON/YAML zur API-Dokumentation
- [[../08_datenbanken/erm]] — Datenbankschema als Bestandteil der technischen Dokumentation
- [[../09_projektmanagement/agile_methoden]] — Dokumentation in agilen Projekten (Definition of Done)
- [[../10_recht/lizenzen]] — Lizenzen im README-Abschnitt (MIT, GPL, etc.)
Ressourcen#
- Wikipedia: Softwaredokumentation
- Wikipedia: Swagger (OpenAPI)
- Studyflix: Softwaredokumentation einfach erklärt
- SimpleClub: Entwicklerdokumentation und Kommentare auf YouTube suchen