Warum lassen sich Web-Anwendungen kaum noch weiterentwickeln?
Viele Web-Projekte starten unter hohem Zeitdruck, um schnell live zu gehen. Das anfangs überschaubare System wächst durch viele, schnelle Erweiterungen. Aber irgendwann ist es ein undurchsichtiges Monster, das niemand mehr versteht.
Es ist ein schleichender Prozess. Und in der Regel gibt es nicht die eine falsche Entscheidung. Aber: Was bei kleineren Systemen noch funktioniert, führt bei steigender Komplexität in die Krise.
In der IT sprechen wir von einem Legacy-System: Extrem wichtig fürs Business – aber mit vernünftigem Aufwand fast nicht mehr zu beherrschen.
Nur wer die Ursachen versteht, kann den Engpass auflösen!
Warum scheitern Software-Projekte?
Bei der Software-Entwicklung liegt der Fokus meist auf den funktionalen Anforderungen, also etwa den fachlichen Prozessen und Daten.
Erfahrungsgemäß scheitern IT-Systeme jedoch eher an den qualitativen Anforderungen – oft auch nicht-funktionale Anforderungen genannt. Einige Beispiele:
-
Eine kurze Time-to-Market ist anfangs – völlig zu Recht – eine qualitative Anforderung, mit der die Entwicklung umgehen muss.
-
Laufen die Betriebskosten aus dem Ruder, wurden Maßnahmen zur Kosteneffizienz nicht rechtzeitig getroffen.
-
Wird die Anwendung zu langsam oder kann die wachsenden Datenmengen nicht bewältigen, wurde die Skalierbarkeit nicht ausreichend bedacht.
-
Kommen die Nutzer mit der Anwendung nicht zurecht, wurde Usability als Qualität wohl nicht ausreichend gewürdigt.
-
Stockt die Feature-Entwicklung oder gibt es zu viele Bugs, wurden qualitative Anforderungen langlebiger IT-Systeme vernachlässigt.
Werden die qualitativen Anforderungen vernachlässigt, führt das zu ernsthaften Schwierigkeiten. Um die erforderlichen Qualitäten nachträglich einzubauen, müssen zur Vorbereitung häufig erst mal komplexere Teile der Software umstrukturiert werden.
Tragisch: Eine kurze Time-to-Market und nachhaltige Weiterentwicklung schließen sich überhaupt nicht aus.
Schlimmer jedoch: Je länger man diesen schleichenden Prozess laufen lässt und notwendige Hygienemaßnahmen aufschiebt, desto aufwändiger wird es.
Qualität kostet nichts. Aber sie wird einem nicht geschenkt. – Es ist fehlende Qualität, die Geld kostet.
Warum ist Software-Architektur entscheidend für den Erfolg?
Es ist Aufgabe der Software-Architektur, sowohl aktuelle als auch bereits absehbare qualitative Anforderungen im Blick zu behalten.
Es ist ein Unterschied, ob eine Anwendung für zahlreiche Nutzer, große Datenmengen und niedrige Betriebskosten optimiert werden muss; oder ob sie strengen regulatorischen Vorgaben folgen und höchste Datensicherheit bieten soll.
Für einen schnellen Markteintritt kann man sicher nicht sofort alle benötigten Qualitäten umsetzen; auch ohne Zeitdruck wäre das nicht sinnvoll.
Aber: Mit einer passenden Software-Architektur stellt man die Weichen für die Zukunft. Werden die qualitativen Anforderungen von Beginn an mitgedacht, ist das System – ohne wesentlichen Mehraufwand – für später notwendige Anpassungen vorbereitet.
Bei den meisten Legacy-Systemen entwickelte sich die Software-Architektur nicht mit den Anforderungen. Hinzu kommt: Häufig wurde die Architektur überhaupt nicht bewusst definiert oder erschöpft sich in Technologiefragen – ohne die projektspezifischen Qualitätsanforderungen ernsthaft zu adressieren.
Die daraus resultierenden Probleme sind euch vermutlich hinlänglich bekannt.
Für die Modernisierung der Architektur muss man (um im Bild zu bleiben) nachträglich die notwendigen Weichen einbauen.
Hier auch gleich die gute Nachricht: Software ist soft; sie kann also wieder gezielt auf Kurs gebracht werden.
Was könnt ihr von erfolgreichen Teams lernen?
High-performing Teams bauen erfolgreich selbst komplexeste Systeme und liefern in kurzen Zyklen neue Features. Diese Teams sind nicht nur produktiv, sondern auch motiviert! (Positiver Nebeneffekt: Neue Entwickler zu finden, ist so natürlich viel einfacher.)
Diese Teams wissen, wie wichtig die qualitativen Anforderungen sind – und dass das IT-System mit sich ändernden Anforderungen mitgehen muss:
-
Eine maßgeschneiderte Architektur und Modularisierung ermöglichen es, selbst komplexe fachliche und qualitative Anforderungen zuverlässig und effizient umzusetzen.
-
Die Teams setzen exzessiv auf automatisierte Prozesse zur Qualitätssicherung und für andere wiederkehrende Aufgaben. So vermeiden sie Fehler und können sich aufs Wesentliche konzentrieren.
-
Niemand ist perfekt. Aber durch kontinuierliche Verbesserung entwickeln diese Teams sowohl die Anwendung als auch sich und ihre Prozesse stetig weiter.
Mit System zur erfolgreichen Software-Entwicklung
Mit diesen drei Säulen – Software-Architektur & Modularisierung, Automatisierung und kontinuierliche Verbesserung – konnte ich bereits mit verschiedenen Teams deren Legacy-Projekte schrittweise modernisieren und die Entwicklung wieder deutlich beschleunigen.
Wie auch ihr wieder handlungsfähig werdet und eure Software mit meiner Hilfe zuverlässig modernisiert, lest ihr im Artikel Vom Engpass zum Innovationstreiber.