Erreichen Sie in nur 12 Wochen eine vollständige NIS2-Audit-Bereitschaft.Erfahren Sie mehr über unsere NIS2-Compliance →
Turn AI into deliveryBuild your AI-native teams →

Was ist der Softwareentwicklungslebenszyklus (SDLC) und warum ist er wichtig?

Eine kurze Einführung in die SDLC-Phasen und -Methoden

Der Softwareentwicklungslebenszyklus, oft mit dem Akronym SDLC abgekürzt, besteht aus standardisierten Phasen, die ein Softwareentwicklungsteam bei der Entwicklung eines neuen Produkts durchläuft. Die Art und Anzahl der Phasen in einem Softwareentwicklungslebenszyklus kann je nach der Softwareentwicklungsmethodik und dem Framework, nach denen ein Team arbeitet, variieren.

Phasen des Softwareentwicklungslebenszyklus Infografik-1

Die gängigsten SDLC-Strukturen sind jedoch Variationen der folgenden Phasen:

  1. Planung und Analyse
  2. Design
  3. Entwicklung
  4. Prüfung
  5. Bereitstellung
  6. Wartung

Was ist der Unterschied zwischen dem Softwareentwicklungslebenszyklus und dem Systementwicklungslebenszyklus?

SDLC kann auch für „System Development Life Cycle“ (Entwicklungszyklus von Systemen) stehen, wenn es ganzheitlicher verwendet wird, um sicherzustellen, dass Sicherheitskontrollen und -anforderungen bereits bei der Entwicklung der Software berücksichtigt werden und nicht erst nachträglich hinzugefügt werden. Wenn das „S“ in SDLC für „System“ steht, umfasst es Menschen, Prozesse, Softwarekomponenten, Infrastruktur und Änderungsmanagement.

Es handelt sich um den „allgemeineren“ Begriff aus dem Projektmanagement, während sich der „Softwareentwicklungslebenszyklus“ gezielt nur auf die Softwarekomponenten konzentriert.

Warum ist der Softwareentwicklungslebenszyklus wichtig?

Die Definition und Einhaltung der Phasen eines Softwareentwicklungslebenszyklus führt zu einer verbesserten Qualität des resultierenden Softwareprodukts und reduziert gleichzeitig den Zeitaufwand für dessen Erstellung und Bereitstellung sowie die Gesamtkosten.

Die Einhaltung eines SDLC erzielt diese Vorteile für den Softwareentwicklungsprozess durch:

  • Bereitstellung eines höheren Maßes an Überwachung und Kontrolle für das Management.
  • Verbesserung der Dokumentation.
  • Das Ziel, das mit der entwickelten Software erreicht werden soll, wird im Voraus von allen Beteiligten geklärt und vereinbart, und es wird ein klarer Fahrplan zur Erreichung dieses Ziels festgelegt.
  • Alle Beteiligten können ihre Beiträge in der am besten geeigneten und effektivsten Phase des Softwareentwicklungsprozesses einbringen.
  • Entwickler haben ein klares Verständnis davon, was sie entwickeln sollten und warum.
  • Alle Beteiligten sind sich der Zuweisung der Ressourcen bewusst, die zur Erreichung des Ziels des Softwareentwicklungsprojekts erforderlich sind, und stimmen dieser zu.

Verläuft der Lebenszyklus einer Softwareentwicklung immer in derselben Reihenfolge und mit denselben Phasen?

Kurz gesagt: Nein. Nicht jeder Softwareentwicklungslebenszyklus ist gleich. Verschiedene Softwareentwicklungsmethoden und -frameworks weisen jeweils eigene Variationen der SDLC-Phasen auf.

Einige, wie beispielsweise Crystal, lassen dem Team, das an einem Softwareentwicklungsprojekt arbeitet, sogar die Flexibilität, seine eigenen SDLC-Phasen festzulegen, wie es für die jeweilige zu entwickelnde Software am besten geeignet erscheint.

Beispielsweise folgt das agile Framework Extreme Programming (XP) einem 5-stufigen Softwareentwicklungslebenszyklus:

  1. Planung
  2. Entwerfen
  3. Codierung
  4. Prüfung
  5. Zuhören

Das Feature Driven Development (FDD) Agile Framework definiert ebenfalls fünf Phasen, die jedoch anders definiert sind:

  1. Entwickeln Sie ein Gesamtmodell.
  2. Erstellen Sie eine Liste mit Funktionen
  3. Plan nach Merkmalen
  4. Design nach Merkmal
  5. Nach Funktion erstellen

Das Agile-Framework „Adaptive Software Development“ (ASD) definiert nur drei Phasen des Softwareentwicklungslebenszyklus:

  1. Spekulation
  2. Zusammenarbeit
  3. Lernen

Diagramm der drei Phasen des adaptiven Softwareentwicklungs-Frameworks – Spekulation, Zusammenarbeit und Lernen

Der DSDM-Ansatz (Dynamic Systems Development Model) für Agile umfasst vier Punkte:

  • Machbarkeits- und Geschäftsstudie
  • Funktionsmodell / Prototyp-Iteration
  • Entwurf und Bauiteration
  • Umsetzung

Wie genau verschiedene Softwareentwicklungsansätze ihre Phasen des Softwareentwicklungslebenszyklus definieren, ist, wie man sieht, fließend.

Wenn ein Framework sieben oder acht Phasen definiert und ein anderes drei, bedeutet das nicht, dass insgesamt mehr oder weniger Schritte erforderlich sind. Da beispielsweise die adaptive Softwareentwicklung drei definierte Lebenszyklusphasen hat und keine davon den Titel „Testen” oder „QA” trägt, bedeutet dies nicht, dass die nach diesem Framework entwickelte Software nicht getestet wird. Das Testen wird einfach als ein Schritt innerhalb der umfassenden „Kollaborationsphase” betrachtet und nicht als eigene Phase.

Übliche Phasen des Softwareentwicklungslebenszyklus

Obwohl es keine einheitliche, endgültige Liste der Phasen innerhalb eines Softwareentwicklungslebenszyklus gibt, ist es dennoch sinnvoll, die Phasen zu skizzieren, die am häufigsten Teil verschiedener Methodiken und Frameworks sind. Selbst wenn eine bestimmte Softwareentwicklungsmethodik oder ein bestimmter Ansatz keine Lebenszyklusphase mit dem gleichen oder einem ähnlichen Namen enthält, werden diese 7 Phasen in die benannten Phasen integriert.

Planung und Analyse

Planungs- und Analyseprozesse werden oft zu einer einzigen Phase des Softwareentwicklungslebenszyklus zusammengefasst. Genauso oft werden sie jedoch in zwei separate Phasen aufgeteilt.

In dieser ersten Phase wird die Wirtschaftlichkeit der Entwicklung einer Software analysiert. Zu den Fragen, die in dieser Phase typischerweise gestellt werden, gehören:

  • Welches Problem wird die Software lösen? Was ist die Lösung dieses Problems potenziell wert?
  • Wie groß ist die potenzielle Nutzerbasis der Software?
  • Gibt es andere Software, die das gleiche Problem löst?
  • Inwiefern wird diese Software dies verbessern?
  • Wie viel würde es kosten, eine Software zu entwickeln, die das Problem effektiv löst?
  • Ist die Lösung des Problems wertvoll genug, um eine akzeptable Kapitalrendite für diese Kosten zu bieten?
  • Verfügen wir über die Ressourcen, um diese Kosten zu tragen?

Die in den Antworten auf diese Fragen enthaltenen Annahmen sollten überprüft werden, vorzugsweise durch Methoden wie Nutzer-Fokusgruppen, andere Marktforschungsinstrumente wie SMS-Marketing, Online-Umfragen, die Entwicklung eines technischen Prototyps usw.

Der Umfang des Projekts oder die anfängliche Schätzung des Umfangs in einem agilen Ansatz würde hier auf der Grundlage der anfänglichen Funktionsanforderungen oder Annahmen erörtert werden. Ebenso wie die Planung der für die Umsetzung des Projekts erforderlichen Ressourcen und deren Bereitstellung, einschließlich des Softwareentwicklungsteams.

Ziele und Grenzen werden festgelegt.

Die Rollen des Softwareentwicklungsteams, die am häufigsten an der Planungs- und Analysephase des Softwareentwicklungslebenszyklus beteiligt sind (dies variiert von Team zu Team und wird durch die gewählte Methodik/das gewählte Framework beeinflusst), sind:

  • Produktverantwortlicher
  • Projektleiter
  • Technischer Direktor
  • Wirtschaftsanalyst

Design

Sobald der Bedarf für die Software überprüft und ihr ursprünglicher Umfang sowie die voraussichtlich erforderlichen Anforderungen und Ressourcen während der Analyse- und Planungsphase festgelegt wurden, beginnt die Entwurfsphase.

Hier treffen Softwarearchitekten und Entwickler Entscheidungen über das High-Level-Design des Softwaresystems. Es wird ein Tech-Stack ausgewählt, z. B. welche Sprachen, Frameworks und Bibliotheken im Frontend und Backend verwendet werden sollen, sowie weitere Details wie die Wahl der Datenbanktechnologie und anderer Dienste von Drittanbietern.

Es werden auch Entscheidungen zur Infrastruktur getroffen, beispielsweise ob die Software in der Cloud gehostet wird und ob dabei eine öffentliche Cloud, eine private Cloud oder ein hybrider Ansatz sowie Anbieter zum Einsatz kommen. Sicherheitsanforderungen sind ein wichtiger Bestandteil der Entwurfsphase und beeinflussen viele der getroffenen Entscheidungen.

Während der gesamten Designphase sollten die Stakeholder zu den Entscheidungen hinsichtlich der Technologieauswahl, den Risiken, den im Zusammenhang mit den getroffenen Designentscheidungen erforderlichen Ressourcen, dem Zeitplan, dem Budget, den regulatorischen und anderen Projektbeschränkungen konsultiert werden.

Der Umfang und die Funktionen des zuerst zu veröffentlichenden MVP sollten ebenfalls hier festgelegt werden, da dies die nächste Phase – die Entwicklung – beeinflusst.

Zu den zentralen Teamrollen in der Entwurfsphase des SDLC gehören:

  • Softwarearchitekt
  • UI/UX-Designer

Entwicklung

In der Entwicklungsphase des Softwareentwicklungslebenszyklus wird das Produkt von den Entwicklern programmiert und zusammengestellt. Bei einem agilen Ansatz, der bei den meisten bedeutenden Softwareentwicklungsprojekten zum Einsatz kommt, wird in der ersten Entwicklungsphase eines iterativen SDLF das MVP erstellt.

Bei einem Wasserfallmodell wird das, was als Endprodukt angesehen wird, während der Entwurfsphase von Anfang bis Ende technisch detailliert dokumentiert und dann während der Entwicklungsphase von Anfang bis Ende erstellt.

Die Teamrollen, die am stärksten in die Entwicklungsphase involviert sind, sind:

  • Frontend-Entwickler
  • Backend-Entwickler
  • UI/UX-Designer

Prüfung

Während der Testphase wird die in der vorherigen Phase entwickelte Software anhand der in der Planungs- und Analysephase definierten Anforderungen sowie hinsichtlich ihrer Leistung und Fehlerfreiheit getestet. Das Ziel dieser Phase ist es, sicherzustellen, dass das Softwareprodukt wie vorgesehen entwickelt wurde, sowohl in Bezug auf die Benutzererfahrung als auch auf die Ressourcen, die für einen reibungslosen Betrieb und die Erfüllung der Verfügbarkeits- und Sicherheitsanforderungen erforderlich sind.

Das Testen von Software umfasst in der Regel sowohl manuelle Tests der Benutzerführung und -erfahrung als auch automatisierte Tests auf Basis von Tools und Skripten. Werden Fehler oder andere Mängel festgestellt, müssen die Tester das Problem dokumentieren und das Entwicklungsteam informieren, das eine neue Version der Software erstellt, in der die Probleme behoben sind. Diese Version der Software wird dann erneut getestet, um sicherzustellen, dass die Aktualisierungen keine unbeabsichtigten Folgen hatten und keine neuen Fehler oder Mängel verursacht haben.

Bei einem DevOps-Ansatz für den Softwareentwicklungslebenszyklus sind die Entwicklungs- und Testphasen eng miteinander verzahnt, wobei das Testen ein kontinuierlicher Prozess während der Entwicklung ist und sogar als eine einzige, einheitliche Phase beschrieben werden könnte.

DevOps-Infografik

Die Teamrollen, die am stärksten in die Testphase involviert sind, sind:

Bereitstellung

In der Bereitstellungsphase wird eine Softwareanwendung aus ihrer Entwicklungs- und Testumgebung in eine Live-Umgebung verschoben, wo sie den Benutzern zur Verfügung steht. Die Bereitstellung kann je nach Art der Software ein relativ einfacher oder ein äußerst komplexer Prozess sein. Wenn beispielsweise ein neues Softwareprodukt eine Datenbank umfasst, die auch von anderen Systemen genutzt wird, kann die Integration aller Systeme ein erheblicher Aufwand sein.

Ein entscheidender Schritt in der Bereitstellungsphase ist auch die Sicherstellung, d. h. das Testen, dass die Software in der Live-Umgebung genauso funktioniert wie in der Entwicklungs- und Testumgebung. In einer DevOps-CI/CD-Softwareentwicklungs-Pipeline sollten die Vorbereitstellungs- und Live-Umgebungen identisch sein, um das Risiko von Abweichungen in der Funktionsweise der Software zu minimieren. DevOps integriert die Entwicklungs- und Bereitstellungsphasen eng miteinander.

Die wichtigsten Teamrollen in der Bereitstellungsphase des SDLC sind:

  • DevOps-Ingenieur
  • Datenbankadministrator

Wartung

In der Wartungsphase wird sichergestellt, dass die Softwareanwendung hinsichtlich Funktionalität, Leistung und Verfügbarkeit weiterhin wie vorgesehen läuft. Benutzer und laufende Tests können Fehler und andere Mängel oder Sicherheitsprobleme aufdecken, die während der Testphase nicht gefunden wurden und behoben werden sollten. Diese können geringfügig sein oder den Start einer neuen Entwicklungsphase erforderlich machen.

Die wichtigsten Aufgaben in der Wartungsphase sind meist:

  • Benutzer
  • Tester
  • Support-Manager

Iterative und agile Softwareentwicklungslebenszyklen

Sofern ein Softwareentwicklungsprodukt nicht nach der Wasserfallmethode erstellt wird, handelt es sich bei dem SDLC um einen sich wiederholenden, fortlaufenden Prozess, der nach jeder Iteration neu gestartet wird, wobei sofort mit der Arbeit an der nächsten Iteration begonnen wird.

Sobald die Software einen bestimmten Reifegrad erreicht hat, werden neue Iterationen wahrscheinlich kleinere Updates umfassen und seltener werden. Während eines iterativen Softwareentwicklungszyklus werden wahrscheinlich Anpassungen im Softwareentwicklungsteam vorgenommen, um dem Rechnung zu tragen.

Agile Methodik für die Software- und App-Entwicklung

Zusammenfassend lässt sich sagen, dass

Der Softwareentwicklungslebenszyklus kann und wird von Softwareentwicklungsteams auf der Grundlage der Philosophie, Methodik und des Rahmens, die sie bei der Erstellung eines bestimmten Softwareprodukts anwenden, oder zwischen Organisationen angepasst werden.

Nur wenig, wenn überhaupt etwas, ist in Stein gemeißelt, und das sollte auch so sein. Der SDLC ist ein Werkzeug im Projektmanagement-Werkzeugkasten und sollte den Anforderungen eines bestimmten Projekts, des daran arbeitenden Teams und anderer wichtiger am Prozess beteiligter Stakeholder entsprechen. Die Namen der Phasen, ihre Reihenfolge und ob sie voneinander getrennt oder miteinander verschmolzen sind, können sich ändern.

Jedes Softwareentwicklungsprojekt hat jedoch einen Lebenszyklus, und Sie sollten nun ein gutes Verständnis für dessen Rolle im Projektmanagement und als Instrument zur Verbesserung der Ergebnisse haben.

Empfohlene Blog-Beiträge