Mario Sedlak
Softwareentwicklung
Software
Computer
Hauptthemen
Foto

So könnte eine Uhr aussehen, bei der in der Spezifikation vergessen wurde, dass sich die Zeiger im Uhrzeigersinn bewegen sollen – Manchen Programmierern kann man gar nicht genau genug erklären, was man haben will.

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-Programmierer übernehmen.

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!"

Foto

Plakat der ÖBB

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:

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-Abfrage in weniger Worten als die Abfrage selbst zu erklären). Der Programmierer ist aber nicht gezwungen, genau den Code zu nehmen.

Weiter

Beim Spezifizieren an Änderungen denken

Weblinks

Quellen

[1] .Net-Konferenz 2002 in Wien