Budgetierung von Softwareprojekten

Welche Faktoren beeinflussen die Kostenschätzung bei Projekten?

Die Kostenschätzung für Softwareprojekte ist eine komplexe Aufgabe. Viele verschiedene, schwer planbare Faktoren spielen in die Kalkulation mit ein. Welche Faktoren dies sind, erklären die bbv-Experten Urs Enzler und Alain C. Boss.

26.08.2019Text: tnt-graphics0 Kommentare

Kalkulationen der Kosten in einem komplexen Softwareentwicklungsprojekt sind im Vergleich zu anderen Projekten verhältnismässig schwer zu erstellen. Wegen einwirkenden Unsicherheiten, die sich nicht genau planen lassen, müssen oftmals vage Prognosen erstellt werden. Für eine Kostenschätzung müssen verschiedenste Faktoren berücksichtigt werden. So gehören Arbeits- und Personalkosten ebenso dazu wie Kosten für Infrastruktur, inklusive Wartung, Bereitstellung von Entwicklungs- und Testumgebungen, Server etc.

Solche Faktoren sind allesamt abhängig vom Umfang, von der Qualität und der Funktionalität der resultierenden Lösung. Zudem spielt die Zeit eine wichtige Rolle: Gibt es Deadlines, die eingehalten werden müssen? Wie gross soll der Funktionsumfang insgesamt sein? Gibt es ein Minimum an Features, die zwingend integriert werden müssen?

«Die Berechnungen des Aufwandes und der Zeit wirken auf die Kosten ein, doch nicht nur. Nach meiner Erfahrung wird beim Kosten schätzen häufig nur der Aufwand berücksichtigt», sagt Alain C. Boss, Agile Executive Coach bei bbv. Neben der Berechnung des Aufwandes für die eigentliche Entwicklung müssen auch Verwaltungsaufgaben, Projektleitung, Kommunikation, Reisekosten etc. miteinberechnet werden. Auf der anderen Seite steht das vorhandene Budget des Auftraggebers, in dessen Rahmen das Ganze durchgeführt werden soll. Zudem können jederzeit Probleme und Fehler auftreten, die zu Mehrkosten führen. 

Agile Projekte sind schwieriger zu schätzen als beim Wasserfall

Zwar hilft die Erfahrung aus vergangenen Projekten für eine realistische Schätzung eines aktuellen Projekts, doch stellt sich die Situation immer wieder neu. Sind genaue Kostenschätzungen schon bei Wasserfall-Methoden nicht einfach, werden sie bei agilen Projekten nochmals komplexer, weil diese aufgrund der sich ändernden Anforderungen noch schwerer planbar sind. Im agilen Umfeld mit iterativer, inkrementeller Arbeitsweise können die einzelnen Kostenpunkte nicht vor Projektstart im Detail budgetiert werden. Im agilen Umfeld müssen sowohl Auftraggeber als auch Auftragnehmer darauf achten, das Budget sinnvoll und nutzbringend umzusetzen. «Aufwände für Features können nicht geschätzt werden, da sich die Feature-Tiefe» ändern kann. Dennoch kann man Pricetags an Features hängen, mit dem Wissen, dass es eben nur Schätzungen sind», erklärt Boss.

Somit scheint es ein Widerspruch zu sein, konkrete Schätzungen für die Kosten zu machen. Trotzdem sind Budgetierungen möglich. Urs Enzler, Expert Software-Architekt bei bbv, und Alain C. Boss geben Auskunft, welche Faktoren die Kalkulation beeinflussen und worauf man bei der Kostenschätzung achten soll.

Faktoren, die auf eine Kostenschätzung in der Softwareentwicklung einwirken:

1. Komplexität der Projekte:

Müssen mehr Features in die Software eingebaut werden, steigt der Zeitaufwand für die Entwicklung. Doch nehmen der Aufwand und somit die Kosten nicht linear mit der Anzahl der Features zu, sondern exponentiell. Statt Economy of scale gilt eher Diseconomy of scale. «Wenn für das erste Feature 5 Tage benötigt werden und für das zweite 8 Tage, dann resultiert daraus meist nicht die Summe von 13 Entwicklungstagen, sondern mehr», sagt Urs Enzler. Die Zunahme der Kosten durch Komplexität der Software sei jedoch sehr schwierig abzuschätzen und führe oft zu Fehlkalkulationen.

2. Technology Churn:

Oft resultiert während der Entwicklung ein Mehraufwand, weil in schnelllebigen Bereichen gewisse Technologien oder Services nicht mehr unterstützt werden. Stirbt ein Tool eines Drittanbieters oder eine Technologie während der Entwicklungszeit weg, muss auf ein anderes Produkt ausgewichen werden. Dies bedeutet zusätzliche, unvorhergesehene Kosten. «Insbesondere bei Cloud- und Web-Anwendungen gibt es immer wieder den Fall, dass während der Entwicklung oder auch nach Abschluss eines Projekts ein Service eingestellt wird und deshalb Anpassungen gemacht werden müssen», so Urs Enzler. Solche nicht beeinflussbaren Ereignisse müssen berücksichtigt werden. Eine Schätzung sollte immer auch Annahmen und Risiken dokumentieren.

3. Zeitliche Blockaden:

Im Entwicklungsprozess kann es immer wieder zu zeitlichen Blockaden kommen. Dann stockt die Entwicklung, es gibt Verzögerungen und daraus resultierende Mehrkosten. Wenn nicht auf andere Tasks ausgewichen werden kann, bleibt die Entwicklung schlicht stehen. Gründe für Blockaden können etwa personelle Engpässe oder das Fehlen eines externen Spezialisten sein, aber auch offene Fragen, die nicht geklärt sind, fehlende Hardware, auf die gewartet werden muss etc. Die Frage ist, wie während der Blockade verfahren wird: Sitzt die Mannschaft auf der Baustelle und muss bezahlt werden oder gibt es andere Baustellen, auf die sie ausweichen können?

4. Team-Synchronisation und Wissensmanagement:

Damit alle auf dem gleichen Wissenstand sind, bedarf es gezielter Kommunikation – insbesondere dann, wenn neue Teammitglieder involviert werden oder wenn es ein besonders komplexes Projekt zu meistern gilt. Doch auch wenn die Abläufe und die Kommunikation gut organisiert werden, sind Absprachen, die Abgleichung von Information, die Zuteilung von Aufgaben und andere Faktoren, die zur Synchronisation im Team beitragen, ein nicht einfach zu berechnender Kostenpunkt. Auch wenn neues Wissen angeeignet werden muss oder wenn wegen Abgängen im Team dafür gesorgt werden muss, dass das Know-how erhalten bleibt, bedarf es eines Abgleichs bzw. eines Lernprozesses, der Aufwand bedeutet. Vor allem bei grossen oder mehreren Teams steigt der Kommunikationsaufwand exponentiell. Urs Enzler: «Diese Umstände sind nicht zu unterschätzen und gehen in der Praxis leider oftmals vergessen oder werden zumindest vernachlässigt.» Auch nicht planbare Abwesenheiten wie Krankheit können dazu führen, dass vermehrte Team-Synchronisation nötig ist.

5. Infrastrukturprobleme:

Wer mit technischer Infrastruktur arbeitet, weiss: Es können immer unvorhergesehene Probleme auftreten, die beseitigt werden müssen, ehe man mit der eigentlichen Arbeit weitermachen kann. «Oft sind es Mini-Probleme, die sich summieren können», sagt Urs Enzler. So summieren sich zum Beispiel Software-Updates, das Einrichten von Firewalls, das neue Aufsetzen eines PCs oder das Warten eines instabilen Systems zu einem unberechenbaren Aufwand beziehungsweise zu einer zeitlichen Blockade in der Softwareentwicklung.

6. Fehler:

Fehler im Code, bei den Anforderungen, in der Architektur, im Design etc. können immer entstehen. Je nach Komplexität, Know-how, Domäne etc. müssen Fehler und deren Beseitigung in die Kostenrechnung einkalkuliert werden.

7. Variabilität:

«Wenn neue Erkenntnisse auftauchen, müssen die Schätzungen angepasst werden», sagt Alain C. Boss. Wie viel Änderung ein Projekt während seiner Laufzeit erfährt, ist vorab nicht abzuschätzen. Zwar kann eine Schätzung gemacht werden aufgrund von der Abweichung von anderen Entwicklungen und Projekten. Urs Enzler nennt die Variabilität allerdings als eine schlecht berechenbare Grösse: «Sobald ein Spezialfall eintritt, ist dies mit einem Effizienzverlust verbunden. Norm-Projekte, die eins zu eins geplant und durchgeführt werden können, gibt es kaum.»

Abschliessend hält der Schätz-Profi Alain C. Boss fest: «Eine Schätzung ist genau das: eine Schätzung. Auftraggeber und Auftragnehmer sind gleichermassen in der Pflicht, das angestrebte Budget einzuhalten.»

Der Experte

Urs Enzler

Urs Enzler war als Expert Software-Architekt .NET bei bbv tätig. Als agil gesinnter Softwareentwickler spricht er an Konferenzen und Communityanlässen gerne über architektonische Herausforderungen und über das Lernen im Team. Enzler ist Co-Gründer der .NET Usergroup Zentralschweiz.

Menschen bei bbv

«Familie und Technologie sind für mich Luft und Wasser»

Innovation
6 Tipps, wie Sie Ihr Team effizienter machen

Müde Augen ade: So helfen kurze Codezeilen

Agile
Digitalisierung im Gesundheitswesen

«Die Digitalisierung scheitert, wenn sie dem Menschen die Autonomie nimmt»

Digitalisierung

Artikel kommentieren

Attention!

Sorry, so far we got only content in English for this section.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.

Attention!

Sorry, so far we got only content in English for this section.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.