Diese Webseite nutzt nur technisch notwendige Cookies.

Software entwickeln lassen – Ablauf, Kosten und Nutzung

Du möchtest eine Software entwickeln lassen, …

… aber Du hast kein Plan, was für einen Aufwand und Kosten auf Dich zukommt.

Dieser Beitrag erklärt Dir alle wesentliche Aspekte!

Starten wir!

Was ist Software?

Software Code führt zur Software
Software Code führt zur Software

Eine Software ist eine Sammlung von Befehlen, welche Computer verstehen und ausführen kann. Bei einer Endnutzer-Software gibt ein Endnutzer in der Regel Eingabedaten ein, die Software verarbeitet diese und gibt eine Ausgabe zurück.

Die Software, die Du tagtäglich nutzt, braucht eine Ausführungsumgebung. Das kann ein Betriebssystem sein, welches die Programmiersprache (High-Level) versteht und umsetzen kann. Auf der anderen Seite kann ein Entwickler auch Software entwickeln, die sehr dicht an den Operationen der Hardware arbeitet (Low-Level).

Wie lange dauert die Entwicklung einer Software?

Die meisten Entwickler, Kunden und Endnutzer unterschätzen den Aufwand einer Softwareentwicklung massiv.

Geplant wird gerne mit Kanban Boards
Geplant wird gerne mit Kanban Boards

Das Schätzen eines erfahrenen Entwicklers ist immer noch eine sehr grobe Schätzung, die wenig Aussagekraft hat. Frage fünf Entwickler im gleichen Unternehmen mit der gleichen Qualifikation, wie lang die Entwicklung dauert und Du erhältst 5 Antworten, die sehr unterschiedlich sind. Du solltest genügend Ressourcen einplanen, weil selbst nach der „Fertigstellung“, Wartungen und Änderungen passieren. Nehme die Schätzung mal 2 oder 3, diese Ressourcen müssen vor der Entwicklung vorhanden sein!

Was kostet es Software entwickeln zu lassen?

Weil die Zeitschätzung schwierig ist, ist die Kosten-Kalkulation noch schwerer. Die Hauptkosten entsteht durch die Arbeitszeit der Entwickler. Weil diese schwer einzuschätzen ist, sind die Kosten schwer zu beziffern. Weitere Kosten sind …

Vieles ist beim Programmieren kostenlos, anderes Sau teuer
Vieles ist beim Programmieren kostenlos, anderes Sau teuer
  • (Entwickler-)Software-Lizenzen
  • Hardware für Entwickler und späteren Betrieb
  • Copyright Material (Bilder, Musik, Schriftarten, Sounds, …)
  • Zukäufe von Softwarekomponenten

Diese Kosten sind einfach zu beziffern und sollten die Gesamtrechnung mit einfließen.

Welche Kosten ignorieren die meisten?

Die „Kosten“ hören nicht nach der letzten geschrieben Zeilen Code auf. Folgendes kommt noch hinzu:

Testen

Du würdest Dich nicht in ein Auto setzen, bei dem der Hersteller nicht geprüft hat, ob in jeglicher Situation auch die Bremse funktioniert. Das Testen kann 30 % bis 400+ % der Entwicklungszeit ausmachen, weil nur getestete Software stabile, robuste Software ist.

Java Unit Tests zum Testen von Einheiten
Java Unit Tests zum Testen von Einheiten

Wartung

Jeden Tag finden Hacker einen Zugang in Softwarekomponenten, welche die Entwickler verbaut haben. Die Entwickler müssen alle paar Wochen diese Lücken zeitnah stopfen

Änderungen

Software kann schnell sehr komplex werden. Selbst wenn der Kunde 200 Seiten an Anforderungen geschrieben hat, ist nicht garantiert, dass jede Kleinigkeit entschieden ist. Änderungswünsche kommen während der Entwicklung hinzu.

Migration

Wenn Du die Daten mit einer Alt-Software gespeichert hast, dann musst Du die Daten in die neue Software überführen. Das ist manchmal nur händisch möglich bzw. mit hohem Programmieraufwand. Des Weiteren musst Du den Endnutzern in Deinem Unternehmen, die neue Software näherbringen (Schulungen, Doku schreiben usw… ).

Abschaffung

Zu Beginn denkst Du nicht an das Ende der Software. Doch wie jede andere Software musst Du für die Migration zu einem anderen Tool zahlen.

Betriebskosten

Nicht jede Software installierst Du auf Deinem Bürolaptop. Software kann nur so zuverlässig sein, wie die Hardware, auf welcher sie läuft. Prinzipiell ist alles teurer, wenn Du die Software auf professioneller, zuverlässiger Server-Hardware laufen lassen möchtest.

5 Schritte zur Software – Der Ablauf

Wasserfall vs. Agil

Die zwei bekanntesten Entwicklungsabläufe sind die Wasserfallmethode und die agile Methode. Die agile Methode erlaubt ein Springen zwischen den Wasserfallschritten, während die Wasserfallmethode eine strikte Reihenfolge vorsieht.

Die Wasserfall-Methode ist immer die beste Wahl, wenn das fertige Produkt am Ende „fertig“ sein muss und Änderungen nicht mehr möglich sind: Raketen-Software, IoT-Hardware, Videospiele, Offline-Gerätesoftware usw.

Der agile Ansatz ist gut geeignet, wenn die Software sich über die Jahre / Jahrzehnte immer wieder ändern darf und kann z. B. Webseite, Buchungssoftware, Verwaltungssoftware

#1 Anforderungen

Eine sehr Zeit aufwendige Phase ist die Anforderungsphase. Der Auftraggeber muss sehr präzise mit den Wirtschaftsinformatikern / Entwicklern zusammen die Anforderungen festhalten.

Wie soll die fertige Software aussehen?

Einige Kunden haben (k)ein klares Bild im Kopf von dem fertigen Produkt, können dieses aber nicht schriftlich, mündlich oder zeichnerisch festhalten (Anforderungen, Mockups und Funktionsanforderungen). Oft müssen Anforderungen korrigiert oder hinzugefügt werden, welches die Entwicklung später verlangsamt.

Design mit Mockups festhalten - hilft enorm
Design mit Mockups festhalten – hilft enorm

#2 Entwurf

Der Softwareentwurf hilft dabei, die Entwicklung vorzubereiten. Der Entwickler muss die Konzepte in der Realität in Modelle und Abstraktionen umwandeln, um diese implementierbar zu machen.

#3a Klassische Implementation

Bei der Wasserfallmethode kennt das Unternehmen kein Zurück zu vorherigen Phasen mehr! Die Entwickler schreiben die Software „herunter“ und aus Dokumenten wird Software. Hier sind keine Änderungen mehr erwünscht. Features, die nicht in den Anforderungen stehen, findet der Kunden auch nicht in der fertigen Software. Dieses Vorgehen bringt viel Konfliktpotenzial mit sich.

#3b Agile Implementation

Bei der agilen Methode arbeitet der Entwickler mit dem Kunden zusammen.

Alle zwei Wochen zeigt der Entwickler einen Zwischenstand. Der Kunde darf bei diesen Meeting Änderungen einbringen bzw. die nächste Phase, einen Sprint, planen. Diese Form der Implementierung ist interaktiver, aber kann zu einem hin und her führen. Der Kunde kann sich nicht entscheiden, ändert seine Meinung regelmäßig und priorisiert ständig um.

#4 Test

Ein Testteam soll die fertige Entwicklung intensiv durchtesten. Menschen schreiben Software. Menschen machen Fehler. Also ist Software fehlerbehaftet.

Nur weil Du einen Fehler in der Software findest, bedeutet es nicht, dass der Entwickler unfähig ist. Treten aber gleiche, einfach automatisch testbare Fehler immer wieder auf, dann solltet ihr dem Entwickler Unit-Tests vorschreiben!

Steffens Tipp

Je nach Kritikalität der Software ist mehr oder weniger Testen notwendig. Eine Raketen-Software muss auf alle Eventualitäten reagieren und korrekt arbeiten. Ein Fehler beim Start würde ein Absturz bedeuten. Eine Social Media App muss weniger getestet sein, weil der Schaden in Euro geringer ist.

#5 Betrieb & Wartung

Ist die Software programmiert, muss diese ein System-Admin betrieben. Der Admin installiert die Software, sodass diese stabil läuft. Dabei kostet folgende Aspekte wieder Geld:

Kubernetes betreibt redundante Cluster
Kubernetes betreibt redundante Cluster

Geschwindigkeit: Wenn Du besonders ungeduldig bist, dann brauchst Du viel Leistung, um viele Daten in wenigen Sekunden zu verarbeiten. Dabei ist teure Hardware notwendig. Meistens kommen die Admins ins Schwitzen, wenn viele Endnutzer zur gleichen Zeit das Gleiche erledigen wollen. Viel Hardware bleibt unbenutzt, um diese Lastspitzen abzufangen.

Hochverfügbarkeit: Muss die Anwendung immer und jederzeit bereit für Nutzereingaben sein, dann muss der Admin „alle Hardware- und Softwarekomponenten“ verdoppeln (Redundanzen). Fällt eine Komponente zwischen dem Endnutzer und der arbeitenden Anwendung aus, dann kann der Endnutzer nicht weiter arbeiten. Heutzutage können Anwendung weltweit verteilt verfügbar sein und damit nur wenige Sekunden in einem ganzen Jahr ausfallen.

Sicherheit: Aktive Software muss bei Schwachstellen schnell aktualisiert werden. Das ist aufwendig und fehleranfällig. Dieser Prozess kostet auch Geld!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!