Als Programmierer werden wir häufig gefragt was es kostet, eine Software entwickeln zu lassen, daher wollen wir hierauf mal etwas genauer eingehen.
Die schnelle Antwort ist, das kommt darauf an. Vergleichbar ist es mit der Frage was ein Auto kostet. Zwar hat jeder eine grobe Vorstellung, dass ein Auto zwischen 5.000 Euro und 1.000.000 Euro kosten kann. Aber ohne bessere Kenntnis von Einsatzzweck, sonstigen Anforderungen oder Wünschen ist nicht zu sagen, ob ein LKW oder ein Sportwagen mit Ledersitzen die beste Lösung ist.
Daher fragen wir zunächst sehr grob einige leicht zu beantwortende Dinge ab. Einige solcher Fragen sind beispielsweise, wofür die Software benötigt wird, ob sie mit anderen Systemen interagieren muss, wie viele und welche Art von Benutzern mit ihr arbeiten sollen, ob unterschiedliche Sprachen unterstützt werden sollen, ob besondere Sicherheitsvorkehrungen zu berücksichtigen sind und so weiter.
Damit grenzen wir als erstes ein, ob die Entwicklung einer individuellen Software überhaupt die beste Lösung ist oder ob es vielleicht schon eine Standard- oder Branchensoftware in diesem Bereich gibt.
Welche Arten von Software gibt es?
Von Standardsoftware spricht man, wenn es bereits Lösungen für weit verbreitete Aufgaben gibt. Ein gutes Beispiel hierfür ist ein Textverarbeitungsprogramm wie OpenOffice, mit dem man Texte schreiben kann. Viele Menschen müssen Texte schreiben, haben dabei aber verschiedene Schwerpunkte. So unterscheidet sich eine Doktorarbeit in Struktur und Formatierung ziemlich von einer Gebrauchsanweisung. Das Office-Programm bietet als Standardsoftware unterschiedliche Formatierungsmöglichkeiten und kann daher beide Anforderungen abdecken. Dadurch, dass die Software am Ende an sehr viele Benutzer verkauft wird, kann die meist aufwändige Entwicklung entsprechend verteilt werden. So zahlt man als Lizenzgebühr meist einmalig einen überschaubaren Betrag zwischen einigen Euros und einigen hundert bis tausend Euros. Aktuell gibt es eine Entwicklung in Richtung von Abo-Modellen für cloudbasierte Software, bei denen eine monatliche Gebühr für ein Rundum-Sorglos-Paket gezahlt wird. Dabei kommt der Benutzer immer in den Genuss der aktuellsten Version und braucht sich über Updates keine Sorgen mehr machen.
Branchensoftware ist nicht ganz so universell nutzbar, löst dafür aber die Anforderungen einer bestimmten Zielgruppe sehr gut ab. Ein Beispiel hierfür wäre die Buchungssoftware eines Restaurants. Wahrscheinlich müssen alle Restaurants die konsumierten Speisen der verschiedenen Tische nachhalten, idealerweise Reservierungen verwalten können, Bestellungen sollten am besten direkt nach Aufnahme in der Küche in der richtigen Reihenfolge erscheinen und so weiter. Hat nun ein Entwickler einmal eine entsprechende Software für ein Restaurant entwickelt, so kann er dieses Programm vielen weiteren Restaurants anbieten. Für die Restaurants ist das oft deutlich günstiger als eine individuelle Lösung, auch wenn unter Umständen einige Kompromisse in Kauf genommen oder der ein oder andere Geschäftsprozess umgestellt werden muss. Auch die fortlaufende Betreuung ist günstiger, da der Aufwand entsprechend aufgeteilt werden kann.
Sowohl bei Standard- als auch Branchensoftware zahlt der Benutzer durch die Mehrfachnutzung nur einen sehr überschaubaren Betrag für die Benutzung der Software. Das die tatsächlichen Entwicklungskosten dabei sehr viel höher liegen, kann deshalb schnell aus dem Auge verloren werden.
Sind die Anforderungen oder Tätigkeiten, für die die Software benötigt wird so speziell, dass noch keine entsprechenden Lösungen am Markt existieren, ist eine individuell entwickelte Software der Weg. Diese Individualsoftware sollte dann so viel wie nötig und so wenig wie möglich können, um ein optimales Kosten-Nutzen-Verhältnis zu erzielen. Wie bereits erwähnt gibt es abhängig von den Anforderungen eine große Spannbreite, mit welchen Kosten bei für die Entwicklung gerechnet werden sollte. Aus unserer Erfahrung beginnen Softwareprojekte bei einigen tausend Euro für eine überschaubare Anwendung oder mittelgroße Webseite und können bis zu mehreren hunderttausend Euro kosten, für größere verteilte Anwendungen oder Plattformen.
Sie haben Interesse an einer individuellen Softwareentwicklung oder Webanwendung? Gerne bieten wir Ihnen eine kostenfreie Erstberatung an.
Anforderungen für eine erste Kostenschätzung einer Software
Hat der Kunde bereits die Anforderungen, der Software, für die Umsetzung zusammengetragen, so kann der Dienstleister auf Basis seiner Erfahrung eine erste Abschätzung der Kosten vornehmen. Wir selbst brechen dafür alle Aufgaben und Anforderungen möglichst kleinschrittig herunter. Danach gehen zwei Entwickler und ein Projektleiter unabhängig voneinander die einzelnen Aspekte durch und tragen ihre jeweiligen Schätzungen in eine eigene Spalte ein. Im Ergebnis werden alle drei Werte nebeneinander gestellt und der jeweilige Mittelwert errechnet. Dazu wird noch ein Sicherheitspuffer für Anforderungen hinzugefügt, die zum Beispiel aufgrund unklarer Voraussetzungen oder externer Abhängigkeiten schwer schätzbar sind.
Gibt es bei den Schätzungen Ausreißer, liegen die einzelnen Einschätzungen also relativ weit auseinander erklärt jeder, was er unter der Aufgabenstellung verstanden hat. Dadurch können wir Unklarheiten beseitigen und nach Klärung erneut eine Einschätzung abgeben.
Geführte Anforderungsaufnahme
Da die Entwicklung einer Software für viele unserer Kunden aber ein neues und einmaliges Projekt ist, ist häufig auch wenig oder keine Erfahrung bei der Formulierung der Anforderungen vorhanden. Daher haben wir unterschiedliche Methoden die Anforderungen sehr strukturiert zu erheben und reduzieren so die Gefahr, etwas wichtiges zu vergessen.
Generell hat sich bei der Konzeption und Entwicklung von Software agile Vorgehensmodelle bewährt. Der Unterschied zur klassischen wasserfallgetriebenen Vorgehensweise ist, dass zu Beginn nicht alles bis ins kleinste Detail geplant und konzeptioniert wird, sondern die Anforderungen zunächst sehr grob gesammelt und priorisiert werden. Ansonsten besteht bei Projekten die Gefahr, das spätere Änderungen in dem genau vorgegebenen Plan nur mit viel Aufwand vorgenommen werden können.
Dazu bieten wir einen Kunden-Workshop an, in dem wir zunächst in einem Satz die Produktvision formulieren, um mit einem gemeinsamen Verständnis zu starten. Danach entwickeln wir sogenannte Personas, also fiktive Personen, die mit der Software arbeiten. Die genaue Beschreibung des Typs, der Vorlieben und Abneigungen dieser Personas ermöglicht dann genau zu verstehen, wer welche Anforderungen an das Programm hat.
Im nächsten Schritt erstellen wir dann mit einem Userstory Mapping ein virtuelles Abbild der zukünftigen Anwendung in Form von Post-its. Dabei steht jedes Post-it für einen relevanten Aspekt, dessen Umsetzung dann im nächsten Schritt durch Entwickler eingeschätzt werden kann. Der Kunde kann die Post-its, also die Anforderungen dann entsprechend dem größten Wert für sein Geschäft sortieren.
Als Ergebnis des Workshops hat der Kunde dann ein standardisiertes Gerüst der Anwendungsanforderungen, mit dem er auch bei anderen Softwareentwicklern ein Angebot anfragen kann.
Berücksichtigung der Folgekosten einer Softwareentwicklung
Eine Software die genutzt wird produziert Folgekosten, das wird häufig bei der Budget-Planung übersehen. Alleine durch Softwareupdates um beispielsweise offengelegte Sicherheitslücken zu fixen fallen regelmäßig Aufwände an. Auch kommen häufig neue Vorschläge oder Bedürfnisse von Benutzern zu Tage, wenn sie erstmal mit dem neuen System arbeiten. Oder der Markt verändert sich und das System muss an neue Schnittstellen angebunden werden. Daher sollte bei der Kostenbetrachtung nicht nur die initiale Entwicklung berücksichtigt werden.
Wie wählt man den richtigen Softwareentwickler aus?
Nicht jeder Entwickler ist für jede Art von Softwareprojekt geeignet. Wie man den am besten geeigneten Dienstleister findet hängt von unterschiedlichen Dingen ab. So muss zum einen die Arbeitsweise als auch die genutzte Technologie zum Projekt passen.
So erfordern Web-Anwendungen ganz andere Entwicklungssprachen als beispielsweise ein Windows-Programm. Auch bei der Vorgehensweise in der Entwicklung gibt es Unterschiede. Wurden früher viele Abläufe speziell auf das Projekt zugeschnitten, werden heute wiederkehrende Tätigkeiten in der Regel stark automatisiert und ein großer Wert auf Maßnahmen zur Qualitätssicherung gelegt. So kann durch automatisierte Tests und Continous Integration einfach sichergestellt werden, das während der Weiterentwicklung Änderungen nicht zu neuen Fehlern in bereits entwickeltem Code führen.
Für überschaubare, gut planbare Projekte ist ein Phasenmodell wie zum Beispiel das Wasserfallmodell nach wie vor das Mittel der Wahl. Das bedeutet, die Anforderungen werden zu Beginn in einem Lastenheft vollständig aufgeführt und beschrieben. Auf Basis dieses Lastenheftes wird dann vom Entwickler ein Pflichtenheft erstellt und beschrieben, wie genau diese Anforderungen technisch umgesetzt werden sollen. Dann startet die Entwicklung und die zuvor geplanten konzeptionierten Funktionen werden in der Software abgebildete. Gegen Ende der Entwicklung gibt es eine Test und Abnahmephase.
Phasenmodelle sind in der Regel nicht die beste Wahl bei größeren und länger andauernden Projekten, wenn zu Beginn die Anforderungen noch nicht vollständig definiert und beschrieben werden können oder wenn zum Beispiel im Projektverlauf viele Änderungen zu erwarten sind. Hier spielen agile Vorgehensweise wie beispielsweise Scrum oder Kanban ihre Stärken aus.
Wie Softwareentwickler hier aufgestellt sind, sollten Kunden bei einer Projektanfrage abfragen. Dafür haben wir unten entsprechende Checklisten als Hilfestellung verlinkt. Achten Sie bei der Auswahl auch darauf, dass die Entwickler eine sehr enge Zusammenarbeit und häufige Abstimmung mit Ihnen als Kunden vorsehen und einplanen, zum Beispiel in Form von regelmäßigen Meetings. Das vermeidet Missverständnisse, deckt frühzeitig Schwierigkeiten auf und hilft so, den Projekterfolg zu gewährleisten. Und das muss nicht aufwändig sein, wir selbst haben sehr gute Erfahrungen mit der Unterstützung durch entsprechende Online-Tools und Video-Telefonie gemacht.
Ein weiterer entscheidender Aspekt bei der Auswahl und für den Erfolg von Projekten ist sicher auch die Erfahrung von Softwareentwicklern. Häufig sind auf der Firmen-Webseite aufgrund von Verschwiegenheitsvereinbarungen mit Kunden nicht alle Referenzen öffentlich einsehbar. Fragen Sie daher auch ganz konkret nach Erfahrungen und Referenzen für vergleichbare Projekte in der Vergangenheit.
Ist eine Softwareentwicklung zum Festpreis möglich?
Ja, eine Softwareentwicklung zum Festpreis ist möglich. Dies erfordert aber die Vollständigkeit der Anforderungen und dabei ist einiges zu beachten. Sind die Anforderungen dagegen unvollständig, unscharf oder zu vage formuliert, spricht das für die Abrechnung nach tatsächlichem Aufwand. So muss vom Dienstleister kein so hoher Risiko-Puffer berücksichtigt werden und der Auftraggeber zahlt nur, was er auch tatsächlich bekommt.
So vermeiden Sie als Kunde die Falle von Festpreis-Angeboten, dass jede spätere Änderung zu Nachberechnungen führt, weshalb das Projekt insgesamt dann faktisch doch teurer wird als zunächst angeboten. Im Nachhinein wäre dann ein vermeintlich teureres aber vollständiges Angebot in Summe unter Umständen günstiger gewesen. Das muss noch nicht einmal böser Vorsatz sein, als Dienstleister sollte aber eine entsprechenden Anfrage auf die Gefahren hingewiesen werden. Deshalb ist eben nicht immer das günstigste Angebot am Ende das beste, dies stellt sich aber im Zweifel zu spät heraus.
Es gibt aber eine Möglichkeit, auch diesen Umstand zu entschärfen, dabei sprechen wir vom agilen Festpreis. Im Projektmanagement gibt es das sogenannte magische Dreieck, bestehend aus den Faktoren Budget, Zeit und Funktionalität. Es ist bekannt, dass Projekte ab einer gewissen Größenordnung durch ihre Komplexität nicht mehr zuverlässig planbar sind. Daher hat zum Beispiel eine Veränderung der geplanten Funktionalitäten direkte Auswirkungen auf Budget und Zeit. Ist das Budget begrenzt und somit ein Festpreis erforderlich, sollte dieser Umstand daher bei den Funktionalitäten entsprechend berücksichtigt und flexible agiert und priorisiert werden. Eine Möglichkeit dafür ist die Unterscheidung von must haves, should haves und nice to haves. Wird das Budget am Ende zum Beispiel durch Änderungen der Anforderungen im Projektverlauf knapp, so kann das durch Verzicht von Anforderungen aus den Kategorien nice to haves und should haves kompensiert werden.
Durch das agile Vorgehen kann sichergestellt werden, dass dies nicht erst am Ende des Projektes überraschend auffällt, sondern nach jedem Durchlauf, also alle zwei bis vier Wochen sichtbar wird.
Sind im Nachhinein noch Änderungen möglich?
Durch dieses Vorgehen und die agile Arbeitsweise stellen wir sicher, dass Änderungen im Projekt trotz Festpreis grundsätzlich möglich sind, ohne das dabei Zusatzaufwände entstehen müssen. Stellt der Kunde im Projektverlauf fest, dass sich die Prioritäten geändert haben oder beispielsweise eine Funktionalität vergessen wurde, kann sie gegen eine Anforderung mit ähnlichem Aufwand aber weniger “Mehrwert” für die Anwendung eingetauscht werden.
Das erfordert aber, dass diese “Verhandlungsmasse” im Projektumfang vorhanden ist. Wurden nur must have Funktionalitäten beauftragt, führt eine Änderung der Absprachen zu Mehraufwänden. Dies ist eine klassische Gefahr in Projekten grundsätzlich und wird leider oft unterschätzt.
Sind Angebote unterschiedlicher Anbieter vergleichbar?
Die Art wie Angebote zustande kommen, können sich folglich unterscheiden. Daher ist es nicht immer einfach, diese inhaltlich vergleichbar zu gestalten, das wiederum ist aber Voraussetzung für eine valide Entscheidung. Nur wenn die zunächst die Voraussetzungen geschaffen werden, können Angebote sinnvoll miteinander verglichen werden.
Grundsätzlich gilt, das die Anforderungen vollständig, gut abgrenzbar und priorisiert beschrieben werden müssen, damit nicht jeder eine unterschiedliche Schnittmenge anbietet. Dann ist das Vorgehen und die Arbeitsweise zu klären, da hiervon der Aufwand für sogenannte Meta-Aufwände, wie zum Beispiel Abstimmung, Konzeption oder Besprechungen abhängt.
Wie gehe ich konkret vor, um vergleichbare Angebote zu bekommen?
Aufgrund der unterschiedlichen Möglichkeiten (agil, phasenmodellgetrieben etc.) sind diese Vorschläge natürlich nicht vollständig, sondern ein möglicher Weg zu einer gut abschätzbaren Projektanfrage. Zur Vorbereitung haben wir hier eine Vorlage Anforderungsaufnahme Webprojekte verlinkt. Sie soll eine Hilfestellung sein, ist aber alleine so nicht ausreichend für jedes Projekt.
Vorgehen bei Erfahrung der Anforderungserhebung von Softwareprojekten
- Abstimmung mit Stakeholdern (z.B. Fachabteilungen, späteren Benutzern, IT-Abteilung etc.) über deren Erwartungen und Anforderungen
- Sammlung aller Anforderungen, abzubildenden Prozesse und Geschäftsvorfälle in UserStories
- Gliederung und Priorisierung der Stories
- Definition von Akzeptanzkriterien, um das jeweilige Ergebnis überprüfbar zu machen
- Beschreibung der Rahmenbedingungen und des Projektumfeldes
- Überprüfung der Formulierung, ob alle Stories ausreichend beschrieben, gut abgrenzbar und damit abschätzbar sind
- Ergebnis: Excel-Liste mit den gegliederten Anforderungen sortiert nach Priorität und einer Beschreibung der Projektrahmenbedingungen
Vorgehensweise ohne Erfahrung mit Softwareprojekten
- Abstimmung mit Stakeholdern (z.B. Fachabteilungen, späteren Benutzern, IT-Abteilung etc.) über deren Erwartungen und Anforderungen
- Moderierter UserStoryMapping-Workshop (Verlinkung – Workshop anfragen) mit einem Entwickler und einem Konzepter/Generalisten (bei Projekt-Neuanfragen bieten wir unseren Kunden an, die Kosten für solche Workshops zu teilen)
- Ergebnis: vollständige Struktur der geplanten Software mit Zielen, Personas für die unterschiedlichen Stakeholder und abschätzbaren Anforderungen in Form von UserStories
Als Ergebnis sollten in beiden Fällen alle Anforderungen in abschätzbarer Form vorliegen. Somit ist die Voraussetzung geschaffen, bei unterschiedlichen Anbietern Anfragen zu stellen, die wirklich miteinander vergleichbar sind.
Fazit
- Es gibt unterschiedliche Arten von Software. Welche am besten geeignet ist, sollte zu Beginn evaluiert werden
- Die Kosten rangieren hier zwischen einigen Euros und einigen hunderttausend Euros, abhängig von diversen Faktoren, die wir in diesem Artikel genauer untersucht und beschrieben haben
- Bei den Kosten sollten auch die Betreuungskosten im laufenden Betrieb bedacht werden, um davon nicht überrascht zu werden
- Entscheidend für die Zuverlässigkeit einer Abschätzung ist die Vollständigkeit und gute Aufbereitung der Anforderungen
- Nicht immer ist das günstigste Angebot das beste. Die Anforderungsaufnahme muss strukturiert erfolgen, um Angebote miteinander vergleichbar zu machen
- Wir können bei der Evaluierung der Anforderung unterstützen, um ein abschätzbares Gerüst zur Anfrage mehrerer Dienstleister zu erstellen.
- Für die Anbieterauswahl fragen Sie die Anbieter nach Arbeitsweise und Erfahrungen, sowie Referenzen in diesem Bereich
Hier stellen wir gerne einige Checklisten und Vorlagen zur Vorbereitung zum Download zur Verfügung
Sie haben noch Rückfragen zu unserem Blogbeitrag oder überlegen eine Software/Webanwendung entwickeln zu lassen? Wir freuen uns auf Ihre Nachricht!