Software-Entwicklungsprozess

Welche Entwicklungsprozesse gibt es und warum werden diese für eine Software benötigt?

Von Kai Westphal

In einer Welt der fortschreitenden Digitalisierung und Smart Devices wird immer mehr Software benötigt. Um eine robuste und sichere Funktionsweise auch bei komplexer Software sicherzustellen, ist es ratsam, die Softwareentwicklung mittels festgelegter Prozesse, sogenannter Software-Entwicklungsprozesse, zu steuern. Software-Entwicklungsprozesse geben der Software-Entwicklung einen geordneten Rahmen, angefangen bei der Konzeption bis hin zum Einsatz im Echtzeitbetrieb sowie nötiger Änderungen während der Verwendung.

Hierfür gibt es eine breite Auswahl an Software-Entwicklungsprozessen, aus denen je nach Bedarf ausgewählt werden kann. Diese umfassen unter anderem agile Methoden (zum Beispiel Scrum, Extreme Programming (XP), Kanban, Scrumban, Dynamic Systems Development Method (DSDM), Feature Driven Developement (FDD), Adaptive Software Developement (ASD), Crystal, SAFe sowie Lean Startup) [1], als auch klassische Ansätze wie das Wasserfallmodell, V-Modell oder Rational Unified Process (RUP) [1]. Während klassische Software-Entwicklungsprozesse klare Vorgaben von oben nutzen, um Arbeitspakete sowie Verantwortlichkeiten festzulegen, legen agile Teams ihre Verantwortlichkeiten autonom fest. So werden in klassischen Software-Entwicklungsprozessen Dauer, Abhängigkeiten, Verantwortlichkeiten sowie Abfolge von Aktivitäten a priori festgelegt. Im agilen Rahmen werden unter Berücksichtigung der zur Verfügung stehenden Ressourcen To-Dos generiert und ohne klare Zuweisung von oben vom Team in Eigenverantwortung abgearbeitet. [2]

Des Weiteren laufen Aktivitäten in klassischen Software-Entwicklungsprozessen sequenziell ab, sie werden also der Reihe nach ausgeführt. Bei agilen Software-Entwicklungsprozessen werden die Aktivitäten dagegen iterativ und inkrementell ausgeführt. Die einzelnen Prozessschritte werden also mehrmals durchlaufen, um sich schrittweise dem Endprodukt anzunähern [3]. Beide Ansätze bringen Vorteile mit sich. In den klassischen Software-Entwicklungsprozessen ist es unproblematisch, den Überblick zu behalten, da alle Aktivitäten einen einzuhaltenden Endtermin haben. Agile Software-Entwicklungsprozesse bieten den Vorteil, flexibler auf Veränderungen wie revidierte Kundenwünsche einzugehen sowie schneller ein einsatzfähiges System zur Verfügung stellen zu können. Jedoch ist es schwieriger, den Überblick über das große Ganze zu behalten. Bei klassischen Software-Entwicklungsprozessen bekommt man also, was geplant wurde, jedoch häufig nicht, was benötigt wird. Agile Software-Entwicklungsprozesse sind hier flexibler bezüglich Änderungen der Anforderungen an die Software.

Klassische vs. agile Software-Entwicklungsprozesse: Beide Methoden haben ihre Vorteile.

Im Allgemeinen besteht ein Software-Entwicklungsprozess aus sechs Phasen, dem sogenannten Software-Lebenszyklus:

  • Anforderungsphase: In der initialen Anforderungsphase werden die Anforderungen an die zu entwickelnde Software definiert. Hierfür ist es wichtig, dass möglichst konkrete Anforderungen formuliert, kommuniziert und von den Entwickler-Teams auch verstanden werden. Es sollten Pflicht-Bestandteile der Software definiert werden sowie mögliche weitere Bestandteile, die im späteren Verlauf hinzugefügt werden können. Festgehalten werden diese üblicherweise in einem Lastenheft. Auch wird ein Testplan-Software erstellt. Dieses Dokument, das den gesamten Plan zur Durchführung von Tests enthält, stellt sicher, dass Anforderungen erfüllt sowie Fehler identifiziert und behoben werden.
  • Konzeptionsphase: In der zweiten Phase, der Konzeptionsphase, werden die in der ersten Phase ermittelten Anforderungen an die Software in Funktionalitäten (sogenannte „Features“) übersetzt. Des Weiteren wird die benötigte Architektur festgelegt. Wurden die Anforderungen in der ersten Phase nicht detailliert genug beschrieben, kann es hier bereits zu ersten Problemen bzw. Rückschritten kommen. Je nach gewähltem Software-Entwicklungsprozess – speziell ob ein klassischer oder agiler Ansatz gewählt wurde – kann dies erheblichen Mehraufwand mit sich bringen.
  • Entwicklungsphase: In der Entwicklungsphase wird auf den vorher festgelegten Funktionalitäten aufbauend die eigentliche Software bzw. Applikation entwickelt. Außerdem werden Bedingungen zur Abnahme abgestimmt, eine saubere Dokumentation erstellt und Anleitungen zur Implementierung der Applikation gestaltet sowie geeignete Test-Szenarien entwickelt.
  • Qualitätssicherungsphase: Die Qualitätssicherungsphase stellt den Start des Abnahmeprozesses dar. Hierfür werden Tests der Applikation in einer geeigneten Umgebung durchgeführt sowie die erstellten Dokumente geprüft.
  • Releasephase: In der Releasephase wird die Software ausgeliefert. Zusätzlich werden Nutzer der Software an ihr geschult, um eine adäquate Nutzung sicherzustellen.
  • Wartungs- und Optimierungsphase: In der letzten Phase der Wartung und Optimierung wird die Software gewartet, es steht also ein Support-Team bereit, das sich um anfallende Probleme kümmert. Auch werden Änderungswünsche gesammelt, um die Software entsprechend zu optimieren. [4]

Agile Software-Entwicklungsprozesse setzen darauf, durch eine maximal verkürzte Anforderungsphase möglichst früh im Entwicklungsprozess eine ausführbare Software zu erstellen. Dadurch kann in regelmäßigen Abständen mit dem Kunden abgestimmt werden, ob Anpassungen vorgenommen werden müssen. Hierbei ist hilfreich, dass die einzelnen Entwicklungszyklen bei agilen Software-Entwicklungsprozessen für gewöhnlich kurz angelegt sind und mehrmals durchlaufen werden. Durch die starr festgelegte Abfolge der Prozessschritte bei klassischen Software-Entwicklungsprozessen erfordert jede Änderung der Anforderungen an die Software eine erneute Beauftragung durch den Kunden, um die Prozessschritte erneut zu durchlaufen. Dies kann einen erheblichen Mehraufwand und damit erhöhte Kosten verursachen.

Wie viel kostet es, eine Software entwickeln zu lassen?

Die Frage nach den Kosten einer Software-Entwicklung wird häufig gestellt, ist jedoch schwierig zu beantworten. Die Gesamtkosten einer Software-Entwicklung setzen sich zusammen aus Kosten für Management, Architektur, Konzeption, Entwicklung sowie Qualitätssicherung. Je nach Software und Anbieter kann der Preis stark variieren. Erfahrene Entwickler-Teams in Deutschland verlangen für gewöhnlich einen niedrigen dreistelligen Stundensatz. Je nach Umfang der zu entwickelnden Software fallen mindestens Kosten im vierstelligen, häufiger jedoch im fünf- bis sechsstelligen Euro-Bereich an, wobei nach oben keine Grenzen gesetzt sind. [5]

Spezialfall Automotive Software Entwicklungsprozess

In der Automobilbranche wird häufig auf Embedded-Systemen gearbeitet, also in andere Geräte eingebettete Systeme, welche Software beinhalten. Die entsprechenden embedded Software Entwickler entwickeln Software für Steuerung, Überwachung und Kommunikation mit anderen Komponenten des eingebetteten Systems. Einen Rahmen für die Qualitätssicherung bietet hier Automotive Software Process Improvement and Capability Determination (ASPICE).

Zusammenfassend kann man sagen, dass Software-Entwicklungsprozesse benötigt werden, um auch komplexe Applikationen stabil und anwenderorientiert zu entwickeln. Sie geben der Software-Entwicklung einen Rahmen, um Abstimmungsprobleme zu minimieren, die Umsetzung von Kundenwünschen sicherzustellen, die Qualität der Applikation zu garantieren und Kosten niedrig zu halten. Es wird grob zwischen agilen Software-Entwicklungsprozessen und klassischen Software-Entwicklungsprozessen unterschieden. Während agile Methoden den Vorteil größerer Flexibilität bieten, sind klassische Methoden durch ihre strikten Vorgaben übersichtlicher. Die Prozesswerk GmbH mit ihrer angeschlossenen Akademie bietet jahrelange Erfahrung und Expertise in dem Bereich der Software-Entwicklungsprozesse, sowohl in der agilen als auch in der klassischen Methodik. Hierbei bieten wir zum einen direkte Unterstützung beim Umsetzen von Software-Entwicklungsprozessen an, als auch Seminare, um die Expertise bezüglich ausgewählter Software-Entwicklungsprozesse innerhalb Ihres Unternehmens zu erhöhen und eine effiziente und zielorientierte Umsetzung des jeweiligen Software-Entwicklungsprozesses zu gewährleisten. Gerne stehen wir auch Ihnen mit Rat und Tat zur Seite, um Sie in die Lage zu versetzen, die bestmögliche Software für Ihr Unternehmen oder Ihre Kunden zu entwickeln.

[1] Liste von Softwareentwicklungsprozessen (de-academic.com)

[2] Agiles oder Klassisches Projektmanagement – Blue Ant

[3] Agile oder klassische Softwareentwicklung? Ein Überblick – Vollcom Digital (vollcom-digital.com)

[4] 6 Phasen der Softwareentwicklung I Anforderungsanalyse (go-make-it.de)

[5] Softwareentwicklung Kosten: Wie teuer wird es? (digital-experts.com)

< Zurück zur Übersicht