Softwareentwicklung budgetieren

Tipps für realistische Kostenschätzungen

Die Kostenbudgetierung für komplexe Softwareprojekte wird von vielen schwer berechenbaren Faktoren beeinflusst. Die bbv-Experten Urs Enzler und Alain C. Boss geben Tipps, wie sich diese besser einschätzen lassen.

11.09.2019Text: tnt-graphics0 Kommentare
Kosten schätzen

Im Beitrag «Kostenschätzung in der Softwareentwicklung» führten wir diverse Faktoren auf, die eine Kostenberechnung für komplexe Softwareprojekte beeinflussen. Doch wie erstellt man eine realistische Schätzung für ein Projekt? Urs Enzler, Senior Software-Architekt bei bbv, und Alain C. Boss, Agile Executive Coach bei bbv, geben Tipps.

Mögliche Methoden und Tipps, wie Sie die Kosten der Softwareentwicklung genauer schätzen können:

Reduzieren Sie die Variabilität

Die Produktekomplexität zählt zu den grössten Kostenfaktoren. Ein bekannter Tech Stack ist viel besser einzuschätzen, als ein Projekt, bei dem viele Unbekannte miteinbezogen werden müssen. Sollen beispielsweise Single-Page-Webanwendungen gebaut werden, ist dies mit einer hohen Variabilität verbunden. Um diese zu reduzieren, besteht die Möglichkeit, vorhandene Tech Stacks zu verwenden, die aber vielleicht auch eine Einschränkung der Software-Funktionalität mit sich bringen. Schliesslich bleibt es ein Kompromiss, wie viel man selber entwickelt und wie viel man auf bestehende Tools zurückgreift. Die Kosten sind mit dem Einsatz bestehender Tools jedoch besser einschätzbar.

Verwenden Sie empirische Daten

Die Vergangenheit erlaubt Rückschlüsse auf aktuelle Projekte. Wer viele ähnliche Entwicklungsprojekte durchführt, wird die Kosten von weiteren Projekten besser einschätzen können. Faktoren wie Grösse, Komplexität, Domäne oder technische Voraussetzungen und personelle Ressourcen lassen sich genauer in die Kostenkalkulation einbringen, wenn man frühere Projekte entsprechend dokumentiert hat. Um möglichst genaue Prognosen zu machen, wird allerdings eine relativ grosse Datenmenge benötigt. Zudem muss eine gewisse Vergleichbarkeit von Projekten vorhanden sein, um eine möglichst genaue Budgetierung zu erstellen. Da jedes Projekt einmalig ist, sind oft keine wertvollen empirischen Daten vorhanden. Damit möglichst viele Erfahrungswerte generiert und später hinzugezogen werden können, sollten bei allen Projekten und Schätzungen möglichst viele Daten gesammelt werden. Ebenso sollten initiale Schätzungen mit dem Resultat am Ende des Projekts verglichen werden.

Lieber Kollaboration statt Fixpreise

Um sich gar nicht erst auf einen konkreten Betrag festmachen zu lassen, sieht man vielleicht davon ab, ein verpflichtendes Commitment einzugehen. Vielmehr plant man die Kosten nach Aufwand und Prioritäten, die es abzuarbeiten gilt. Dies kann zwar wiederholte Neuverhandlungen mit sich ziehen, doch ist so das Risiko von Fehleinschätzungen kleiner. Und: Man spart die Zeit einer aufwändigen Kalkulation, die ja auch wieder (Personal-)Kosten verursacht. So kann man im Kleinen planen und sich auf jene Features konzentrieren, welche die Softwarelösung zwingend braucht. Die gesamten Aufwände für die Entwicklung nicht konkret zu schätzen, setzt allerdings eine partnerschaftliche Zusammenarbeit mit dem Auftraggeber voraus, der diese Vorgehensweise akzeptiert. Alain C. Boss: «Bei Fixpreisen wird mitunter versucht, das gesamte Risiko auf den Auftragnehmer abzuwälzen. Das ist keine gute Strategie. Kollaboration ist besser.»

Berücksichtigen Sie die Fähigkeiten der Entwickler

Werden die Fähigkeiten der Entwicklerteams realistisch eingeschätzt – vor allem in den Bereichen Technik und Domäne –, lassen sich auch die Aufwände und somit die Kosten für das Projekt besser voraussehen.

Reduzieren Sie die Komplexität

Werden in der Entwicklung Features weggelassen oder einzelne Features priorisiert, vermindert sich die Komplexität. Somit lassen sich die Projektkosten besser einschätzen. Dabei seien die Verhältnisse keineswegs linear, erklärt Urs Enzler: «Als Faustregel gilt: Wird ein Viertel der Features weggelassen, sinken die Kosten um die Hälfte». Um die Komplexität zu reduzieren, muss man priorisieren. Fragen Sie sich bei jedem Feature, ob es (zumindest in der ersten Softwareversion) wirklich vorhanden sein muss, oder ob es auch ohne diesen Teil geht. Wer nur die wichtigsten Features einplant, kann die Kosten besser abschätzen. Komplexität reduzieren bedeutet immer auch Risiken und damit Kosten zu reduzieren.

Berücksichtigen Sie das aktuelle Wissen

Am Anfang eines Projekts ist noch vieles unklar und offen. Das sollte bei der Kostenbudgetierung berücksichtigt werden.

Berücksichtigen Sie nichtfunktionale Anforderungen

Je nachdem, in welcher Branche und mit welchen Sicherheits- und Stabilitätsvoraussetzungen das Produkt zur Anwendung kommen soll, verändern sich die Anforderungen. Auch die Anzahl der End-User muss berücksichtigt werden. Eine Software im medizinischen Bereich, fürs Militär oder für eine Bank wird andere Anforderungen haben als eine normale kommerzielle Anwendung oder ein Hobby-Projekt.

Dokumentieren Sie

Dokumentieren Sie alle Annahmen und Risiken, die zu einer Schätzung geführt haben. Dazu gehören etwa Technologie, Skills, Expertenverfügbarkeit und ähnliche Faktoren.

Schummeln Sie nicht

Oft werden Schätzungen so verfälscht, dass sie den Erwartungen des Kunden oder des Verkaufs entsprechen. Aussagen wie «Die Schätzung ist viel zu hoch, damit gewinnen wir die Ausschreibung nie.» können dazu verleiten, so lange an allen möglichen Schrauben zu drehen, bis die «richtige» Zahl herauskommt. Das sollte man tunlichst unterlassen.

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.

Unser Wissen im Abo

Technica Radar 2024

Mehr als KI: Das sind die wichtigsten IT-Trends 2024

AI/KI
BIM2FM: So geht digitales Gebäudemanagement

BIM-Daten im Facility Management wirksam nutzen

Individuallösung
6 Tipps, wie Sie Ihr Team effizienter machen

Müde Augen ade: So helfen kurze Codezeilen

Agile

Artikel kommentieren

Beachtung!

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

Achtung!

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

Beachtung!

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

Achtung!

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