Softwareentwicklung – Spezifizieren
Eine Spezifikation soll das gewünschte Verhalten einer Software beschreiben. Wie genau, war mir nicht gleich klar. Inzwischen weiß ich: pedantisch genau. Als ich angefangen hatte, alles so zu beschreiben, als ob ich es einem Computer in natürlicher Sprache erkläre, habe ich von Programmierern und allen anderen das größte Lob für meine Spezifikationen bekommen.
Um so ausführliche Spezifikationen zu schreiben, brauche ich nicht viel weniger Zeit (manchmal sogar mehr) als wenn ich gleich selbst programmiere. Von der Vorstellung, dass mir das Spezifizieren Zeit sparen soll, musste ich mich verabschieden. Ich sehe die Vorteile vom Spezifikationenschreiben nur darin, dass das Wissen dokumentiert ist und nicht an eine einzelne Person gebunden ist.
Es wird behauptet, dass Microsoft den Auftrag zur Entwicklung von DOS bekommen hat, weil IBM ausgerechnet hat, dass sie 500 000 Seiten Spezifikationen schreiben müssten, wenn sie das Betriebssystem selbst entwickeln.[1]
Ein Programmierer soll nicht selbst überlegen müssen, welche Funktionalität die Software sinnvollerweise haben sollte. Diese Entscheidungen obliegen dem Spezifikationsersteller, dessen Tätigkeit daher höher qualifiziert (d. h. i. A. auch besser bezahlt) ist. Aufgabe des Programmierers ist lediglich, wie er die Anforderungen umsetzt – wobei man ihm aber auch da hinsichtlich Programmierstil, Fehlerbehandlung usw. Vorgaben machen sollte, wenn man robuste, modulare, wartbare Software haben will. Das kann der Chef-
Typische Denkweisen
Einer, der Softwarespezifikationen schreibt, geht nicht einfach zum Fahrkartenschalter und verlangt: "Eine Monatskarte bitte!" Stattdessen sagt er: "Bitte eine Monatskarte der Wiener Linien für Februar 2007 für einen Erwachsenen zum Vollpreis für die Kernzone 100, Barzahlung!"
Auf dem Weg zum Fahrkartenschalter sieht er vielleicht ein Plakat der ÖBB: "Sie schätzen Ordnung. Wir auch." Wenn so ein Satz in einer Softwarespezifikation stünde, wären die Fragen:
- Wer ist "Sie"?
- Wer ist "wir"? (Selbst wenn das einen Absatz vorher oder später erklärt wäre. Man muss Informationen überall mit Verweisen einbinden.)
- Was heißt "schätzen"? Kann man das nicht genauer angeben?
- Was passiert dann? Umstand bitte beschreiben.
- ...
Grafische Darstellungen
Ich verwende nicht so gern grafische Darstellungen wie Struktogramme. Ihr Informationsgehalt ist zu gering: Für einfache Sachen komme ich auch ohne sie aus, bei komplizierteren braucht man so viele Struktogramme, dass es meiner Meinung nach erst recht wieder unübersichtlich wird.
Stattdessen verwende ich, wenn nötig, Pseudocode. Manchmal gebe ich sogar einen vollständig lauffähigen Code in die Spezifikation. Das ist nämlich oft die schnellste Methode, ein gewünschtes Verhalten exakt zu spezifizieren (versuch z. B. mal eine SQL-
Weiter
Weblinks
- Transmission Control Protocol (englisch) – 84 Seiten Spezifikation, um ein Zeichen über das Internet zu übertragen!
Quellen
[1] | .Net- |