Beim Programmieren an Änderungen denken
Programme sollen nicht nur zum Zeitpunkt ihrer Erstellung gut funktionieren, sondern auch noch möglichst lange danach, ohne dass man sie umschreiben muss oder Fehler auftreten, wenn sich in ihrem Umfeld etwas ändert. Dazu muss man sich beim Programmieren Gedanken darüber machen, wie das Programm auf geänderte Umstände reagieren soll. Solche Gedanken sind manchen vollkommen neu: "Woher soll ich wissen, was in Zukunft sein wird?", fragen sie verständnislos.
In der Tat fällt mir kein Beispiel aus dem Alltag ein, wo dieses Vorausdenken so wichtig wäre. Die Frage "Wen lade ich zu meiner Geburtstagsparty ein?" wirst du dir jedes Jahr neu stellen. Würdest du sie hingegen vollautomatisch von einem Computerprogramm entscheiden lassen wollen, müsstest du allgemeine Kriterien festlegen, etwa "alle Freunde und deren Partner, mit denen ich im letzten Jahr viel Kontakt hatte" usw. Einfach die aktuelle Einladungsliste zu nehmen, wäre ein Fehler. Genau solche Fehler sind mir in der Softwareentwicklung immer wieder begegnet.
Beispiele
- Die HTML-
4.01- ist unter verschiedenen Adressen erreichbar, die auf der Seite aufgezählt sind. Warum wird das so "unnötig kompliziert" gemacht? – Weil man, je nach dem, was man möchte, einen anderen Link braucht:Spezifikation - Will man genau auf dieses Dokument verweisen?
- Oder will man immer auf die aktuellste Version der Spezifikation verweisen? – D. h. man muss sich entscheiden, was passieren soll, wenn es eine neue Version gibt. Das ist das "Denken an Änderungen", das ich meine.
- Wieso wurde in der MIME-
Spezifikation eine Kopfzeile "MIME-Version: 1.0" eingeführt? Es gab ohnehin nur eine Version. – Ja, aber es ist vorauszusehen, dass es später auch andere Versionen geben wird. - In Excel kannst du in jeder einzelnen Zelle entscheiden: Soll sich der Inhalt der Zelle ändern, wenn sich bestimmte andere Zellen ändern (dann brauchst du eine Formel) oder soll der Inhalt fix sein (dann gibst du einen Wert ein)?
- Auch in Word gibt es Beispiele:
- automatische Nummerierung von Kapiteln – definiert, was passieren soll, wenn neue Kapitel dazukommen (Alternative: Word wie Schreibmaschine verwenden)
- bedingte Trennstriche – definieren, was passieren soll, wenn ein Wort ans Zeilenende kommt
Beim Programmieren sind typische Beispiele:
- Wenn ein Kunde eine neue Adresse hat, sollen dann alle alten Rechnungen, wenn sie neu ausgedruckt werden, seine neue Adresse enthalten?
- Sollen Zahlen und Datumsangaben in dem Format angezeigt werden, das in den Systemeinstellungen definiert ist, oder immer in einem Format, das ich festgelegt habe?
- Soll sich mein Programm in C:\Windows installieren oder in dem Verzeichnis, in dem Windows installiert ist? – Windows kann überall installiert sein.
- Wenn du eine Programmbibliothek benutzt: Willst du eine eigene Kopie verwenden (Vorteil: keine unerwarteten Änderungen) oder die neueste am System vorhandene mitbenutzen (vorteilhaft, wenn Fehler in der Bibliothek bereinigt werden)?
Auf meiner Website:
- Wenn ich eine Seite schreibe, verlinke ich manche Worte zu anderen Seiten, auch wenn es diese anderen Seiten noch gar nicht gibt. Sobald es sie gibt, werden die Links sichtbar – ohne weiteren Aufwand für mich.
- Die Seite "Computer-
Sicherheit" ist unter http://sedl.at/Computer/Sicherheit erreichbar – nicht unter http://sedl.at/Sicherheit, weil ich irgendwann vielleicht einmal eine Seite über "Sicherheit allgemein" schreiben werde und sich Webseiten- Adressen niemals ändern sollten.
Wichtig und üblich ist das "Denken an Änderungen" auch bei der Formulierung von Vertragstexten. Hier ein Beispiel aus den Emissionsbedingungen[1] eines Zertifikats:
Die Auszahlung des Betrages erfolgt ausschließlich in Euro bzw. in derjenigen frei konvertierbaren und verfügbaren gesetzlichen Währung, die zum Zeitpunkt der Zahlung gesetzliches Zahlungsmittel der Republik Österreich ist.
Weiter
Siehe auch
- Beim Spezifizieren an Änderungen denken – Wenn die Programmierer nur eine Spezifikation umsetzen, muss man natürlich schon vorher an Änderungen denken
- Redundanzfreies Programmieren – Ergibt Programme, die sich leicht an Änderungen anpassen können
Quellen
[1] | Emissionsbedingungen des Open End Indexzertifikats auf den MSCI World (nicht mehr aufrufbar) |