In this article
Softwareentwicklungslebenszyklus (SDLC): Phasen und Methoden
Mit der Weiterentwicklung von Softwaretools entstehen in beispielloser Geschwindigkeit neue Möglichkeiten, immer fortschrittlichere und komplexere Software zu entwickeln. Das Schreiben von Code ist nur ein Bestandteil des Softwarebereitstellungsprozesses – Planung, Management und Kommunikation sind ebenso wichtig. Hier kommt dem Software Development Life Cycle (SDLC) eine wichtige Rolle zu.
Was ist SDLC?
SDLC steht für Software Development Life Cycle und beschreibt den Prozess der Bereitstellung von Software jeder Art – von kleinen Funktionen bis hin zu Systemen im Wert von mehreren Millionen Dollar. Der SDLC umfasst mehrere Phasen, die die Abfolge der Schritte vom Konzept bis zur Bereitstellung darstellen.
Die Durchführung dieser Phasen kann je nach Art und Management des Projekts erheblich variieren.
Warum ist SDLC wichtig?
Der Software Development Life Cycle bietet einen strukturierten Rahmen für Softwareprojekte, die häufig mit großer Unsicherheit verbunden sind. Er hilft Projektbeteiligten, die Anforderungen besser zu verstehen, Probleme frühzeitig zu erkennen, Kosten niedrig zu halten und Software von höherer Qualität bereitzustellen.
Was sind die 7 Phasen des SDLC?
Softwareentwicklung wird oft auf das bloße Schreiben von Code reduziert. Tatsächlich gibt es vor der Bereitstellung jedoch mehrere Phasen im Software Development Life Cycle, von denen das Programmieren nur eine ist. Dazu gehören die Erfassung der Anforderungen, die Analyse, das Design, die Entwicklung, das Testen, die Bereitstellung und die Wartung.

Je nach eingesetzter SDLC-Methode bilden die SDLC-Phasen nicht unbedingt eine lineare Abfolge. Wie wir weiter unten bei der Besprechung der einzelnen Phasen sehen werden, können sich die Phasen überschneiden oder in einer anderen Reihenfolge stattfinden.
1. Anforderungserfassung
Bevor Sie ein Softwareentwicklungsprojekt in Angriff nehmen, müssen Sie verstehen, was tatsächlich zu tun ist. Entwicklungsteams und ihre Kunden haben oft unterschiedliche Vorstellungen davon, wie das fertige Ergebnis aussehen soll. So weiß der Kunde anfangs möglicherweise nicht genau, was er benötigt. Später im Projekt, wenn er die Software testen kann, hat er vielleicht eine klarere Vorstellung.
Das Problem dabei: Zu diesem Zeitpunkt ist es bereits zu spät. Entwicklungsteams könnten viel Zeit und Mühe in den Aufbau eines Systems investieren, ohne dass dieses validiert wurde. Anschließend wäre deutlich mehr Aufwand nötig, um es an die Kriterien des Kunden und seine Vorstellung von der Lösung anzupassen. Deshalb ist es entscheidend, bereits in den frühesten Phasen eng mit dem Kunden zusammenzuarbeiten, seine Herausforderungen zu verstehen und die Anforderungen effektiv zu ermitteln.
Auch nach der Initiierungsphase sollte der Kunde während des gesamten Software Development Life Cycle Feedback geben, damit Anpassungen vorgenommen werden können und Kunde und Entwicklungsteam auf dem gleichen Stand bleiben.
2. Analyse
Nachdem das zu lösende Problem in der Phase der Anforderungserfassung untersucht wurde, ermittelt das Entwicklungsteam den besten Lösungsansatz. Es muss den erforderlichen Aufwand für die Umsetzung des Projekts einschätzen, einschließlich Kosten und Zeitplan, ohne zu diesem frühen Zeitpunkt zu sehr ins technische Detail zu gehen. Ziel ist es, die Machbarkeit des Projekts anhand des Budgets und des erwarteten Zeitplans zu beurteilen.
3. Design
Wenn das Projekt die Analysephase besteht, kann das Entwicklungsteam mit der Planung fortfahren, wie die Software umgesetzt wird. Das ist die Designphase des Software Development Life Cycle. Bei der Entwicklung einer Softwarelösung sind neben dem Code selbst viele weitere Aspekte zu berücksichtigen, darunter Infrastruktur, Systemarchitektur und Benutzeroberfläche. Eine vorausschauende Planung ist wichtig, damit alle funktionalen und nicht-funktionalen Aspekte abgedeckt sind. Werden alle erforderlichen Komponenten ohne entsprechenden Plan entwickelt, kann dies kostspielige Neuentwicklungen nach sich ziehen.
4. Entwicklung
Software zu entwickeln ist eine Kunst, die weit über das bloße Schreiben von Code hinausgeht. Code wird auf einer Infrastruktur ausgeführt, die in der Regel Server und Netzwerke oder eine Managed-Hosting-Plattform wie Azure App Service oder AWS Elastic Beanstalk umfasst.
DevOps ist eine Best Practice, die die traditionelle Trennung zwischen Entwicklern und Infrastruktur-Ingenieuren überbrückt. Da die Infrastruktur ebenso wichtig ist wie der Code, gehören DevOps-Ingenieure in der Regel zum Entwicklungsteam. Sie können sich um alles kümmern – von Servern und Netzwerken bis hin zur CI/CD-Pipeline.
5. Testen
Software zu entwickeln reicht nicht aus. Vor der Übergabe an den Kunden muss das Team sicherstellen, dass die Software ihren Zweck erfüllt und keine schwerwiegenden Probleme aufweist:
Erfüllt sie alle Anforderungen?
Erfüllt sie diese in angemessener Zeit?
Ist sie benutzerfreundlich?
Kann sie skaliert werden, um Nutzungsspitzen zu bewältigen?
Haben Sie einen sicheren SDLC und Tests zur Anwendungssicherheit implementiert, um die Software vor gängigen Exploits wie SQL-Injection-Angriffen zu schützen?
Es ist wichtig, solche Probleme frühzeitig zu erkennen, denn ihre Behebung wird im späteren Verlauf des SDLC deutlich teurer.
6. Bereitstellung
Sobald bestätigt wurde, dass die Software ihren Zweck erfüllt, ist es Zeit, sie an den Kunden zu übergeben. Je nach Projektmanagement kann dies in einem einzigen Schritt am Projektende oder fortlaufend während der Entwicklung geschehen. Anschließend wird die Software in einer realen Umgebung eingerichtet. Dort führt der Kunde eine Runde Abnahmetests durch (User Acceptance Testing, UAT), bevor er die Software freigibt und in einer Produktivumgebung einsetzt.
7. Wartung
Die Bereitstellung gilt oft als letzter Schritt bei der Auslieferung von Software. Tatsächlich ist sie jedoch erst der Beginn der Nutzungsdauer. Fast immer muss die Software später erneut angepasst werden, um Fehler zu beheben oder neue Funktionen hinzuzufügen. Der Softwareanbieter stellt dem Kunden in der Regel ein Service Level Agreement (SLA) zur Verfügung, das festlegt, wie Probleme mit der Software behandelt werden. Sind umfangreiche Neuentwicklungen erforderlich, kann ein komplett neuer SDLC nötig sein.
SDLC-Methoden
Softwareprojekte werden heute meist mit agilen Methoden entwickelt und bereitgestellt. Es gibt jedoch viele weitere Möglichkeiten, den SDLC umzusetzen. Das Wasserfallmodell ist ein traditionellerer Ansatz, den die meisten jedoch als veraltet betrachten. Andere Ansätze wie das Spiralmodell sind nicht mehr weit verbreitet.
Wasserfall-SDLC
Das Wasserfallmodell ist ein starrer, linearer Ansatz, bei dem jede SDLC-Phase in die nächste übergeht. So muss beispielsweise die Entwicklungsphase abgeschlossen sein, bevor die Testphase beginnt. Dieser Ansatz setzt voraus, dass alle Informationen zu einem Projekt von Anfang an bekannt sind. Das ist unrealistisch, denn während der Entwicklung kommt es zu Überraschungen und Anforderungen ändern sich ständig.
Der Wasserfallansatz hat jedoch durchaus seine Berechtigung bei unternehmenskritischen Projekten, bei denen weder bei den Anforderungen noch bei der Qualität des Ergebnisses Kompromisse möglich sind. Aus der Luft- und Raumfahrt sind mehrere Fälle bekannt, in denen Softwarefehler Menschenleben gekostet haben. In solchen Szenarien ist Perfektion weitaus wichtiger als die Flexibilität, sich anzupassen und zu innovieren.
Agiler SDLC
Angesichts der dynamischen Natur von Software, bei der sich Anforderungen sogar mitten in der Entwicklung plötzlich ändern können, veröffentlichte eine Gruppe namhafter Software-Ingenieure das Agile Manifest. Die Veröffentlichung machte bekannt, dass Softwareprojekte schnell auf Veränderungen reagieren müssen und nicht durch übermäßige Bürokratie behindert werden dürfen.
Dies führte zu einer ganzen Familie sogenannter agiler Methoden, darunter Scrum, Kanban, Extreme Programming und weitere. Sie alle orientieren sich an den Grundsätzen des Agile Manifesto und setzen den SDLC auf leicht unterschiedliche Weise um.
Agiler SDLC setzt in der Regel auf schnelle Iterationen. Das bedeutet, dass kleinere Ergebnisse häufiger bereitgestellt werden. Das hat mehrere Vorteile:
Änderungen sind kostengünstig: Ändern sich die Anforderungen, müssen Sie vielleicht ein paar Arbeitstage verwerfen – und nicht ein ganzes Jahr.
SDLC-Phasen können parallel ablaufen: Ein QA-Team kann eine fertig entwickelte Funktion testen, während das Entwicklungsteam an der nächsten arbeitet.
Häufigere Bereitstellungen: So kann der Kunde früh im Prozess sehen, wie die Software Gestalt annimmt. Außerdem lassen sich Kurskorrekturen schnell vornehmen und spätere Überraschungen vermeiden, deren Behebung sehr kostspielig sein könnte.
Die Vorteile von SDLC
Früher konnte ein einzelner Entwickler ein Projekt möglicherweise allein umsetzen. Heute erfordert selbst die Entwicklung relativ kleiner Anwendungen eine Vielzahl von Tools, darunter Programmiersprachen, Bibliotheken von Drittanbietern, Cloud-Service-Anbieter, Container sowie SQL- und NoSQL-Datenbanken. Daher ist heute für fast jedes Projekt ein Team erforderlich, an dem viele Beteiligte mitwirken: Entwickler, Tester, Projektmanager, DevOps- oder DevSecOps-Ingenieure und der Kunde. SDLC bietet einen strukturierten Ansatz, damit alle auf dem gleichen Stand bleiben und auf ein gemeinsames Ziel hinarbeiten.
Was ist der Unterschied zwischen SDLC und SSDLC?
Ein Framework für den sicheren Software Development Life Cycle (SSDLC) integriert Sicherheit während des gesamten Entwicklungsprozesses. Das traditionelle SDLC-Framework hingegen definiert den Prozess der Anwendungsentwicklung – von der anfänglichen Planung bis zum Produktivbetrieb, zur Wartung und schließlich zur Stilllegung.

Einen sicheren SDLC mit Snyk implementieren
Sicherheit in jede Phase des SDLC zu integrieren und die richtigen Best Practices für den SDLC zu befolgen, ist entscheidend.
Snyk zählt zu den besten verfügbaren Sicherheitstools und lässt sich an verschiedenen Stellen in den SDLC integrieren: über unsere CLI, mit Git-Integrationen, die sich mit einem Klick einrichten lassen, oder indem Sie Snyk als fehlschlagenden Schritt in Ihre CI/CD-Pipeline einbinden. Jeder Einstiegspunkt bietet eigene Vorteile – Git-Integrationen sorgen für mehr Transparenz bei der Arbeit des Teams, die CI-Integration für sicherere Bereitstellungen und vieles mehr.
Wenn Sie entscheiden, welcher Einstiegspunkt am besten zu Ihren Anforderungen passt, sollten Sie Ihre Entwicklerteams einbeziehen, damit sie wissen, was auf sie zukommt. Außerdem empfehlen wir, die Teams zur Nutzung unserer Snyk CLI und der IDE-Plug-ins zu ermutigen. Je früher im Entwicklungsprozess Sie Snyk integrieren, desto einfacher lassen sich mögliche Probleme beheben.
Die folgenden Tools unterstützen Sie bei der Implementierung eines sicheren Software Development Life Cycle:
Snyk Code: KI-gestützte statische Anwendungssicherheitstests (SAST), mit denen Sie Schwachstellen im Code erkennen und beheben können.
Vulnerability Database: Erkennen Sie potenzielle Exploits in Paketen von Drittanbietern.
Snyk Infrastructure as Code (IaC): Erkennen und beheben Sie Sicherheitsprobleme in Terraform- und Kubernetes-Code.
Snyk Container: Erkennen Sie Schwachstellen in Ihren Containern und Kubernetes-Anwendungen.
Snyk Open Source Security Management: Erkennen, priorisieren und beheben Sie Schwachstellen in den Open-Source-Abhängigkeiten Ihrer Anwendung.
Beschleunigen Sie die sichere Entwicklung
Snyk bringt Entwickler und Sicherheitsteams zusammen, damit Sie Geschwindigkeit und Sicherheit in großem Maßstab gewährleisten können.