© Ekaphon maneechot/Shutterstock.com
Evolution, Änderung und Wartung - aber richtig!

Software systematisch verbessern


Die Informatikausbildung fokussiert auf die Neuentwicklung von Software – den Alltag vieler Softwerker prägen jedoch meist Pflege, Änderung oder Erweiterung von Systemen. In diesem Artikel stelle ich Ihnen aim42 vor, ein systematisches Vorgehen zur Verbesserung von Software. aim42 ist frei verfügbar und systematisiert Praktiken und Patterns rund um Evolution, Änderung und Wartung von IT-Systemen.

In Entwicklung und Betrieb von Software wünschen wir uns über die gesamte Lebensdauer unserer Systeme möglichst niedrige Änderungs- und Betriebskosten, bei gleichzeitig hoher Änderbarkeit und Verständlichkeit (Abb. 1).

starke_aim42_1.tif_fmt1.jpgAbb. 1: Wunschsituation kommerzieller Software

Bei mittleren bis großen Systemen tritt diese ideale Situation in der Realität nur selten ein. Zeitdruck, Konstruktions- und Managementfehler sowie kurzfristig orientierte Entwurfsentscheidungen sorgen dafür, dass ziemlich genau das Gegenteil geschieht: Obwohl anfänglich alles sauber entwickelt und entworfen war, degenerieren Systeme über die Zeit – das Phänomen der „verfaulenden Software“ schlägt zu. Änderungen werden schwieriger, riskanter und dauern immer länger. In Entwicklung und Betrieb treten vermehrt Probleme auf, deren Behebung mehr und mehr Zeit und Ressourcen in Anspruch nimmt. Damit einher steigen Änderungs- und Betriebskosten.

starke_aim42_2.tif_fmt1.jpgAbb. 2: Istsituation kommerzieller Software

Ganz unterschiedliche Gründe verursachen diese missliche Situation – einige verbreitete Beispiele:

  • Mangelnde konzeptionelle Integrität: identische Probleme werden innerhalb eines Systems unterschiedlich gelöst, es gibt mehrere unterschiedliche, teils widersprüchliche Lösungsansätze.

  • Übermäßige strukturelle Komplexität, umständliche Konzepte oder Abläufe innerhalb des Systems.

  • Zum fachlichen Problem unpassende Wahl von Technologien, Frameworks oder sonstiger Infrastruktur („mit Kanonen auf Spatzen schießen“).

  • Schlechter Quellcode, der beispielsweise Grundlagen des Clean Code [1] verletzt, unter zu hoher Kopplung oder niedriger Kohäsion leidet, gegen Coding-Konventionen verstößt, Redundanzen enthält oder schlicht unverständlich ist.

Diese Liste könnte ich nahezu beliebig weiterführen – und jeder neue Eintrag würde mich dabei an eine reale Situation meines bisherigen Berufslebens erinnern.

Wege in den Abgrund

Zu Beginn vieler Entwicklungsprojekte sieht Software doch recht ordentlich aus: Motivierte Teams erarbeiten stimmige Konzepte und setzen diese dann handwerklich sauber um. Konzepte und Technologien passen zum Problem, ebenso die Algorithmen und Datenstrukturen.

Im Laufe der Zeit jedoch beginnt das Drama: Die ursprüngliche Ordnung weicht einem ständig steigenden Chaos. Ausnahmen werden zur Regel, Code wird immer schwerer verständlich, das Entwicklungsteam beginnt von „hysterisch gewachsen“ zu sprechen – weil kaum jemand nachvollziehen kann, wie es zu dieser kontinuierlichen Verschlechterung kommen konnte.Warum kommt es dazu? Verlernen Teams über die Zeit das vernünftige und saubere Arbeiten? Nein – vielmehr zwingen oftmals äußere Einflüsse zu Kompromissen, die dann langfristig zu den oben genannten Problemen führen [2]. Neudeutsch nennen Manager dieses Phänomen „technische Schulden“ – Softwareentwickler bezeichnen diese als Quick and Dirty, Hotfix oder Workaround – und wissen, dass sich dahinter meistens ein weiterer Schritt in Richtung „degenerierter Systeme“ (rotten-software) verbirgt.

Innere Werte werden vernachlässigt

Ursächlich resultieren diese Probleme aus einem mangelnden Bewusstsein für den Wert der inneren Qualität von Software. Auftraggeber interessieren sich primär für neue Features, Erweiterungen oder schnellstmögliche Fehlerbehebung, weniger für den Erhalt konzeptioneller Integrität, verständlichen Quellcode oder stimmige Anwendung von Konzepten oder Technologien. Aber gerade diese innere Qualität von Systemen stellt sicher, Ziele wie niedrige Änderungskosten, schnelle Fehlerbehebung, hohe Anpassbarkeit zu erreichen. Leider ignorieren immer noch zu viele IT-Manager diesen kausalen Zusammenhang.

Systematisch verbessern

Der Weg zu besserer Software führt in der kommerziellen Realität immer über mehrere, meist kleine Schritte zum Ziel. Praktisch niemals können wir den Lauf der Welt für einige Monate anhalten, um in dieser Zeit die Qualität unserer Software zu verbessern. Vielmehr müssen wir Verbesserungen in die regulären Wartungsarbeiten (etwa: Erweiterun...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang