Die Büchse der Pandora
Als Entwickler sammeln und verarbeiten wir täglich Informationen. Wir speichern diese in Dokumenten und verarbeiten sie im Quellcode.
Leider sind viele dieser Informationen nicht sehr stabil. Die Rahmenbedingungen oder Anforderungen ändern sich nach einer Besprechung. Der Kunde ist mit der Performance von bestimmten Funktionen nicht zufrieden. All diese Faktoren führen dazu, dass wir viel Zeit damit verbringen die Informationen neu zu ordnen und neu auszuarbeiten. Wir passen Spezifikationen, Tests und Programme an. Das Ganze kann man unter einem Begriff zusammenfassen, Wartung.
Wartung beginnt nicht erst mit der Fertigstellung einer Software. Wartung ist ein fortlaufender Prozess, er beginnt mit der ersten Zeile der Spezifikation, der ersten Zeile des Quellcodes, der ersten Zeile in den Tests. An all diesen Stellen sind Informationen hinterlegt. Das Problem dabei ist, dass diese Informationen sehr leicht dupliziert werden. Wenn wir nun dieses Duplizieren auch im Quellcode fortsetzen, öffnen wir damit die Büchse der Pandora, und dies lange vor der Auslieferung einer Software.
Die Ziele bei der Entwicklung von stabiler und wartungsfreundlicher Software müssen also immer sein:
- Vermeidung von redundantem Wissen und doppeltem Quellcode.
- Jeder Algorithmus darf nur ein einziges Mal im Quellcode vorkommen.
Das Prinzip lautet also:
DRY – Don’t repeat yourself (dt. Wiederhole Dich nicht)
Ist dir was aufgefallen? … ich habe mich gerade wiederholt. “Vermeidung von redundantem Wissen und doppeltem Quellcode” und “Jeder Algorithmus darf nur ein einziges Mal im Quellcode vorkommen” ist eigentlich das gleiche, es sieht nur anders aus. … Und da ist es auch schon passiert, ein Schreibfehler in einem der Sätze und ich kommt ihn an zwei Stelle korrigieren.
Das oben beschriebene Prinzip ist eigentlich jedem Softwareentwickler bekannt und trotzdem entstehen immer wieder solche gefährlichen Wiederholungen.
In den nächsten Beiträgen werde ich einige der kuriosesten Wiederholungen vorstellen und Anregungen geben wie sich diese vermeiden lassen.
Wie ist es eigentlich bei Dir, kennst Du Beispiele für solche Wiederholungen, begegnen Dir immer wieder die gleichen Codestellen? Poste Sie einfach in den Comments, dann werde ich sie vielleicht in einem der nächsten Beiträge einbauen.
Dein Feedback ist mir wichtig! Beitrag kommentieren...
Comments
In der Softwaretechnik bezeichnet der Begriff Wartung Maßnahmen und Dienstleistungen zum Erhalt der Verwendbarkeit und Betriebssicherheit einer Software. Ich habe den Begriff hier ganz bewusst gewählt, da ich der Meinung bin, dass der Grundstein für eine gute Wartbarkeit bereits bei der initialen Entwicklung der Software gelegt wird. Für mich fällt unter den Begriff Wartung nicht nur das Beseitigen von Fehlern, sondern auch die Anpassung an aktuelle Gegebenheiten. Wenn z.B. wiedermal eine neue Version eines Browsers auf den Markt kommt, dann kann dies unter Umständen die Anpassung oder Erweiterung einer Website nach sich ziehen. Dabei ist es, meiner Meinung nach, unerheblich ob diese Anpassung bei der initialen Entwicklung oder später durchgeführt wird. Auch die Begriffe “Erweiterung” oder “Anpassung” beschreiben ebenfalls solche Tätigkeiten, ich könnte Sie hier also synonym verwenden (der Begriff Wartbarkeit klingt etwas schöner als Erweiterbarkeit oder Anpassbarkeit).
Ich werde in einem der nächsten Postings genauer auf dieses Thema eingehen und auch einen Vergleich zu materiellen Dingen ziehen.

Ich würde im Zusammenhang mit Software nicht unbedingt von “Wartung” sprechen. Gemäß DIN 31051 werden als Wartung “Maßnahmen zur Verzögerung des Abbaus des vorhandenen Abnutzungsvorrates der Betrachtungseinheit verstanden.”
Da Software sich nicht abnutzt, sondern in der erstellten Form unverändert weiterexistiert, kann man hier genaugenommen nicht von Wartung sprechen. Leider werden unter dem Begriff Wartungsarbeiten bei Sofwtare oft Dinge verstanden, die nur deshalb notwendig sind, weil die Software schlecht oder in minderwertiger Qualität entwickelt wurde oder notwendige Automatismen nicht umgesetzt wurden (z. B. Überarbeitungen schlechter Datenmodelle, Datenbereingungen etc.).
Meiner Meinung noch bezeichnet man den Vorgang auf den Du in Deinem Posting eingehst besser als “Erweiterung” oder “Anpassung” der Software aufgrund neuer oder veränderter Anforderungen; also als Weiterentwicklung.