Code ist detaillierte Spezifikation

In Modellen wie Waterfall (und seit neuerem auch Spec Driven Design) wird die zu entwickelnde Software in einem Dokument definiert, bevor die Implementierung beginnt. Diese Spezifikation dient dazu, Unklarheiten auszurÀumen und alle Entwickler auf einen Stand zu bringen.

Es ist wichtig, anzuerkennen, dass die Spezifikation niemals sĂ€mtliche Rand- und SonderfĂ€lle abdecken kann – zumindest, ohne völlig unĂŒbersichtlich zu werden. Diese Aufgabe hat nĂ€mlich der Code, welcher selber nichts anderes als eine detailliertere Spezifikation ist: Text, welcher nach formellen Anforderungen geschrieben ist und das Verhalten eines Systems eindeutig beschreibt. Ausschlaggebend ist hier das Wort eindeutig: die menschliche Sprache ist hĂ€ufig unterschiedlich interpretierbar, je nach Persönlichkeit. Im Gegensatz dazu haben wir Code entwickelt, um unmissverstĂ€ndlich zu sein, sodass wir das Verhalten eines Systems perfekt formalisieren können[1].

Damit sitzt Code im Sweet-Spot, welcher zwar detailliert genug ist, alle AmbiguitÀten auszurÀumen, aber kompakt genug ist, sich auf das Wesentliche zu fokussieren.

Verweise

Quellen


  1. Interessanterweise gibt es noch Undefined Behavior (UB), z.B. in C++, deren Auswirkungen tatsĂ€chlich vom Compiler abhĂ€ngen. Insofern können (je nach Sprache) auch Compiler ihre “Persönlichkeit” haben, wenngleich in deutlich gerinerem Maße als in menschlicher Kommunikation. ↩

Anmerkungen oder Fragen? Schick mir eine Mail.