Gründe, die Softwareprojekte viel Geld kosten

Gründe, die Softwareprojekte viel Geld kosten

Die neuste Technologie ausgereifter Technologie bevorzugen

Die IT ist schnelllebig. Während Programmiersprachen über Jahrzehnte hinweg existieren und weitestgehend abwärtskompatibel bleiben, unterliegen viele Softwarekomponenten einem radikalen Wandel.

Es hat sich bewährt, ausgereifte weit verbreitete Softwarekomponenten den neusten Softwarekomponenten zu bevorzugen, da die neusten Softwarekomponenten das davon abhängige Softwareprojekt zwingt mit den Änderungen Schritt zu halten (sich denen anzupassen).

Auch kommt es häufig vor, dass die Softwarekomponenten nicht mehr weitergepflegt werden. Dies zwingt das Softwareprojekt dazu, die Komponenten entweder auf eigene Kosten weiter zu pflegen oder durch alternative Komponenten - sofern vorhanden und wirtschaftlich - machbar zu ersetzen.

Nicht die Kundensituation in die Technologiewahl mit einbeziehen

Ein Kunde mit einer Geschäftsidee hat eine ganz andere Anforderung als ein Kunde mit einer ausgereiften Altsoftware.

Der Kunde mit der Geschäftsidee muss auf schnellstmögliche Weise seine Idee umgesetzt bekommen. Die Software muss zunächst noch nicht korrekt funktionieren. Alles was sie muss ist zu testen, ob die Geschäftsidee umsetzbar ist. Handelt es sich zum Beispiel um ein Produkt, so reicht zunächst die Produktpräsentation ohne tatsächliche Zahlmöglichkeit. Anstatt der Zahlmöglichkeit wird die Kaufabsicht protokoliert und dem Kunden für sein Interesse gedankt mit dem Hinweis das man es ihm gerne auf anderem Wege verkauft.

Das komplette Gegenteil dazu ist der Kunde der eine fertige Anwendung hat, die modernisiert werden soll mit dem Ziel, die nächsten 10 Jahre unter geringem Wartungsaufwand zuverlässig hoch-performant ihre Arbeit zu verrichten. In diesem Fall wird kein Framework eingesetzt, weil Frameworks Änderungen unterliegen. Es werden die Prinzipien Nachhaltiger Softwareentwicklung angewandt. Es sind umfangreiche Regressionstests vorhanden.

Sich nicht ausreichend fachlich mit dem Kunden auseinandersetzen

Es kann zu Missverständnissen kommen, wenn innerhalb der Software andere Begriffe genutzt werden als sie der Kunde benutzt.

Wird das Geschäft des Kunden durch den Entwickler nicht ausreichend verstanden, kann es zu weiteren Missverständnissen kommen, durch die u.U. die Fachlichkeit falsch umgesetzt wird.

Das führt zu hohen Anpassungskosten. Oft werden die Anpassungen nur oberflächlich durchgeführt. Es findet eine reine Symptombehandlung statt, da die vollständige Korrektur finanziell nicht tragbar ist. Die nicht beseitigte Ursache und die darauf gelegte Anpassungsschicht erhöhen jedoch die Komplexität der Anwendung deutlich und sorgen für regelmäßige Missverständnisse und zusätzliche Aufwände.

Nicht an die Entwickler denken, die die Software in Zukunft pflegen und weiterentwickeln dürfen / „Nach mir die Sintflut“-Prinzip

Eine Person kann sich an ca. 30.000 Zeilen Quelltext erinnern. Da die meiste Software jedoch viel mehr Zeilen Quelltext enthält und darüber hinaus während Softwareprojekten Entwickler kommen und gehen, wird von Entwicklern viel Zeit verbracht, die Arbeit ihrer Vorgänger zu verstehen. Daher wird Quelltext viel öfter gelesen als geschrieben.

Ist der Quelltext schlecht geschrieben führt dies dazu, dass der Quelltext in der Regel nur noch ungerne gelesen und überarbeitet und entsprechend schlecht gepflegt wird. Die Quelltext-Qualität nimmt immer weiter ab. Es häufen sich immer mehr Redundanzen im System, bis die Software von den Entwicklern nicht mehr vollständig verstanden wird. Dadurch treten immer mehr Fehler auf und selbst die kleinsten Änderungen benötigen extrem viel Zeit.

Irgendwann steckt die Entwicklung derart fest das es einer Lösung bedarf. Die Entwickler schlagen vor, das System neu zu schreiben. Das Neuschreiben des Systems verursacht enorme Kosten. Diese werden i.d.R. immer unterschätzt.

Gibt es vom Altsystem keine hohe Abdeckung durch Regressionstests wird das Neusystem mit sehr hoher Wahrscheinlichkeit unerwartet anderes Verhalten aufweisen. Dies kann für Ärger sorgen.

Da die Entwickler bereits das Altsystem verkommen haben lassen – indem sie dort nie aufgeräumt haben – so ist es nur eine Frage der Zeit bis das neue System auch vermüllt ist.

Daher empfiehlt es sich sehr stark anstatt einer Neuentwicklung die alte Software aufzuräumen durch sog. „Refactoring“.

Damit die Aufräumarbeiten stattfinden können, benötigt es eine ausreichend hohe Abdeckung an automatisch ablaufenden Tests. Die automatisch ablaufenden Tests haben hierbei die Aufgabe sicher zu stellen, dass die Software sich konstant gleich verhält und keine neuen Bugs entstehen.

Maintenance-Aufwand bei der Planung der Software nicht berücksichtigen

Oft wird der Initiale Entwicklungsaufwand als teuer angesehen und die Wartungskosten gering. Tatsächlich übersteigt der Wartungsaufwand den Entwicklungsaufwand meist bei weitem.

Dies liegt daran, dass Softwares meist so geschrieben werden, dass sie schnell funktionieren.

Die Wartbarkeit der Software steht dabei leider selten im Fokus. Denn um die Wartbarkeit zu erreichen, würde der initiale Aufwand ein klein wenig steigen. Die Entwickler müssen sich nicht nur Gedanken machen, dass die Software funktioniert, sondern auch das die nachfolgenden Entwickler, bzw. sie selbst in ein paar Jahren die Software (noch) verstehen.

Auch müssten die Entwickler für wartbare Software oft andere Entscheidungen treffen was die Wahl der zugrundeliegende Systeme und Bibliotheken betrifft. Es werden oft brandneue Systeme und Bibliotheken verwendet. Ein Teil davon wird bereits nach wenigen Jahren nicht mehr aktiv gepflegt und oder diese System und Bibliotheken wandeln sich sehr stark. Beides hat zur Folge das die Wartung der Software hohe Kosten verursacht.

Keinen offenen Kommunikationsfluss zwischen Entwicklern und Kunden forcieren

Entwickler müssen einen direkten Kontakt zum Kunden haben, damit sie dessen Motivation hinter Entscheidungen verstehen und den Kunden beraten können. Können die Entwickler nur über eine dritte Person mit dem Kunden kommunizieren, entstehen hohe (vermeidbare) Kosten.

Geschrieben von Herbert Walde am 14.12.2019

Zurück