Kosten in der Designphase

Die effektive Planung rund um Softwareentwicklungskosten (Teil 1)

Worum gehts?

Dieser Guide widmet sich der effektiven Planung von Softwarekosten und betont die Notwendigkeit, die Total Costs of Ownership (TCO) zu berücksichtigen. Eine umfassende Analyse der TCO ermöglicht es Unternehmen, versteckte Kosten aufzudecken und finanzielle sowie zeitliche Probleme zu vermeiden. In diesem Guide werden die verschiedenen Kostenbestandteile in den Phasen der Design-Entwicklung, der Umsetzung und des Betriebs von Software identifiziert und quantifiziert. Zusätzlich werden bewährte Praktiken zur Kostenbestimmung und -reduzierung sowie Hinweise auf Risikobetrachtungen präsentiert.

Es ist sinnvoll, frühzeitig die für Sie relevanten Kostenbestandteile zu identifizieren und zu quantifizieren beziehungsweise durch eine geschickte Lösungsfindung zu minimieren. Folgende Punkte, heruntergebrochen auf die drei Phasen der Softwareentwicklung, dienen der Orientierung bei der Durchführung der TCO-Analyse.

Wir führen für jede der 3 Phasen der Softwareentwicklung jeden Kostenpunkt und eine kurze Beschreibung auf, sowie eine Reihe von Best Practices, die in der Praxis dazu genutzt werden können, um die Kosten zu bestimmen oder gar zu reduzieren.

Design-Phase

In dieser Phase erfolgt die Planung des Konzepts, der Struktur und des Aussehens der Software, um sicherzustellen, dass sie den Anforderungen entspricht und effektiv funktioniert.

Kosten der Spezifikation der Softwarelösung

Die Kosten für die Spezifikation der gewünschten Softwarelösung hängen vor allem von der Fähigkeit und der Branchenkenntnis der Softwareentwickler ab. Dabei gilt: Je besser die Entwickler, desto weniger Spezifikationsarbeit ist in der Regel notwendig. In diesem Zusammenhang weisen wir gerne auf einen klassischen Irrtum bei der Nearshoring- oder Offshoaring-Entwicklung, also der Auslagerung der Entwicklung in nahe oder weiter entfernte Länder, hin: Wird diese Praxis meist angewendet, um Entwicklungskosten einzusparen, so können die Kosten für Spezifikation und Projektsteuerung die Ersparnisse der Entwicklung zunichtemachen.

Best Practices:

  • Ausgearbeitete Business Cases
  • Dokumentation der nötigen Geschäftsprozesse
  • Kenntnis der Nutzergruppen und Akteure
  • Abschätzung der Datenmengen und Zugriffszahlen

Risikobetrachtung

Bei der Planung von Softwarekosten müssen Risiken berücksichtigt und bewusste Entscheidungen getroffen werden. Hierbei ist die Verfügbarkeit von Source-Code als “digital asset” von entscheidender Bedeutung. Er sollte unter keinen Umständen verloren gehen, muss vollständig sein und immer aktuell gehalten werden – diese Verwaltung erzeugt Kosten, die es von vornherein zu berücksichtigen gilt. Auch die Vermeidung von Single-Points-of-Failure (z.B. Datenspeicherung auf nur einem Rechner ohne Backups) und die Anpassbarkeit von Software im Falle rechtlicher oder unternehmerischer Änderungen ist ratsam.

Best Practices:

  • Welche Kosten entstehen durch potentielle Systemausfälle?

Kosten von nicht-funktionalen Anforderungen

Auch nicht-funktionalen Anforderungen kommt im Rahmen der Kostenplanung eine große Bedeutung zu, da sich deren Erfüllung unmittelbar in der Qualität und Benutzerfreundlichkeit der Softwarelösung zeigt. Nachträgliche Änderungen können kostenintensiv sein, daher empfehlen wir die Berücksichtigung folgender nicht-funktionale Anforderungen in der Kostenplanung:

Sicherheit

Die Sicherheit einer Software sollte stets gewährleistet und gegen Bedrohungen jedweder Art geschützt werden. Dazu zählen unter anderem Viren oder menschliche Angreifer (zum Beispiel das Ausspähen durch die Konkurrenz).

Best Practices:

  • Wer kann dem System schaden?
  • Wer hat eine Motivation, dem System zu schaden?

Wartbarkeit

Die Wartbarkeit der Software ist von essenzieller Bedeutung. Hierbei müssen die Spezifikationen (“Ist bekannt, was die Software tut?”), Dokumentationen (“Ist bekannt, was die Software tut?” und Tests (“Wird sichergestellt, dass die Software das tut, was sie soll?”) berücksichtigt werden.

Best Practices:

  • Ist der Code auch für neue Entwickler nachvollziehbar?
  • Sind die verwendeten Technologien zukunftssicher?
  • Gibt es eine Dokumentation und (automatisierte) Softwaretests?

Skalierung

Die Skalierbarkeit einer Software stellt sicher, dass sie auch wachsenden Anforderungen, z.B. aufgrund einer steigenden Nutzungs- oder Datenlast, standhalten kann. Anforderungen an die mögliche Skalierbarkeit sollten daher frühzeitig formuliert werden. In der Praxis tritt es dabei häufiger auf, dass Systeme zu sehr auf starke Skalierbarkeit setzen, die nie zum Einsatz kommt.

Best Practices:

  • Abschätzung der Datenmengen und Zugriffszahlen
  • Zu welchen Tageszeiten/an welchen Wochentagen wird das System hauptsächlich genutzt?

Verfügbarkeit/Ausfallsicherheit

Relevante Kriterien, die in Bezug auf die bedeutenden Faktoren Verfügbarkeit und Ausfallsicherheit der Software beachtet werden müssen, sind unter anderem die Qualität der Netzwerkverbindung, das Vorhandensein eines Notfallplans im Rahmen einer Disaster Recovery Strategie und insbesondere die Zuverlässigkeit des Programms. Bei Badger System liegt unsere Benchmark für Ausfallsicherheit in der Regel bei 99,9 Prozent oder mehr – und damit über den üblichen 99,5 Prozent.

Best Practices:

  • Welche Kosten entstehen durch potentielle Systemausfälle?
  • Zu welchen Tageszeiten/an welchen Wochentagen wird das System hauptsächlich genutzt?

Ressourcenverbrauch/Geschwindigkeit

Software (beispielsweise in Embedded Devices), die zu langsam oder ressourcenintensiv arbeitet, kann bei Anwendern zu Frustration führen und sich negativ auf die Betriebskosten auswirken.

Best Practices:

  • Haben alle Nutzer leistungsfähige Hardware?
  • Ist Strom-/Batterieverbrauch ein Thema?

Benutzerfreundlichkeit

Mangelnde Benutzerfreundlichkeit (z.B. eine schwierige Bedienung oder häufige Abstürze) kann Fehler verursachen, die Zufriedenheit der Softwareanwender beeinträchtigen und/oder zu einer geringeren Produktivität führen.

Best Practices:

  • Wie teuer ist es, wenn ein Nutzer die Software fehlbedient?
  • Stehen die Nutzer unter Zeitdruck oder Stress?
  • Lesen die Nutzer Handbücher oder bekommen sie ein Training?

Weiterentwicklungsfähigkeit

Software sollte so entwickelt werden, dass sie zukunftssicher ist und lange genutzt werden kann. Eine veraltete Programmiersprache kann beispielsweise ein Risiko darstellen, wenn es darum geht, neue passende Entwickler zu finden, sodass die Langlebigkeit der verwendeten Programmiersprache berücksichtigt werden sollte. Auch bei der Implementierung kommerzieller Add-ons sollte berücksichtigt werden, dass Technologien von Herstellern eingestellt werden können und somit nicht mehr zur Verfügung stehen. Es bietet sich daher an, sich der entsprechenden Abhängigkeiten bewusst zu werden.

Wir sind bereit für knifflige Heraus­forderungen!

Auch wenn Ihr IT-Problem noch so schwer ist — mit uns Kontakt aufzunehmen ist leicht. Rufen Sie uns an, schreiben Sie eine kurze E-Mail oder nutzen Sie unser Kontaktformular. Sie werden schnellstmöglich von uns hören.

oder