SDLC – Lebenszyklus der Softwareentwicklung
Was ist der SDLC?
Der Lebenszyklus der Softwareentwicklung (engl. Software Development Life Cycle = SDLC) ist ein Prozess zur Qualitätssicherung. Er teilt die Softwareentwicklung in Phasen, die für jede Änderung durchlaufen werden müssen. Üblicherweise werden folgende Phasen unterschieden:
- Anforderungsanalyse
- Planung
- Softwaredesign (z.B. Design der Architektur)
- Entwicklung
- Test ggf. mit abschließendem Deployment
Diese Phasen passen auch in den klassischen „Plan – Code – Build – Test“ Zyklus.
SDLC Toolchain
Für die Umsetzung dieser Phasen werden unterschiedliche Tools benötigt, die idealerweise in einer Toolchain zusammenarbeiten. Ein Beispiel für eine einfache Toolchain sieht wie folgt aus:
- Anforderungsanalyse und Planung: mithilfe von Issue Trackern und Wikis werden Informationen gesammelt und Aufgaben festgelegt. Tools sind z.B. Redmine, JIRA, Confluence oder Smeagol.
- Entwicklung, Test und Deployment: diese Phasen lassen sich im Hinblick auf die Tools nur schwer voneinander trennen, da die Tools sehr stark miteinander interagieren. Es werden aber diese Tools benötigt:
- Source Code Management: SCM-Manager (Verwaltung von Git, SVN und Mercurial Repositories.)
- Build Server und Deployment: Jenkins
- Artefakt Repository: Nexus Repository
- Issue Tracking und Wiki: siehe Anforderungsanalyse und Planung
Diese Tools können ganz einfach in der Plattform Cloudogu EcoSystem betrieben werden.
SDLC und Agile
Der SDLC passt sehr gut mit agilen Arbeitsweisen zusammen, da er durch die wiederkehrenden Phasen zur Qualitätssicherung beiträgt. Agile Projekte durchlaufen für jede Änderung, die Phasen des SDLC in jeder Iteration, bei Scrum also in jedem Sprint. So ist sichergestellt, dass jede Änderung geplant, designt, entwickelt und getestet wird.
Vorteil des agilen Lebenszyklus
Agiles Arbeiten zeichnet sich dadurch aus, dass nicht zum Projektstart erstmal eine „allumfassende“ Anforderungsanalyse durchgeführt wird. Vielmehr werden zunächst als Erstes die als am Wichtigsten angesehenen Themen angegangen. Diese werden durch kontinuierliches analysieren, priorisieren und planen im Projektverlauf identifiziert, bewertet und umgesetzt. Es gibt jedoch auch einen Nachteil an diesem Vorgehen.
Nachteil des agilen Lebenszyklus
Beide, agile Methoden und der SDLC haben den Nachteil, dass sie in ihrer Grundausprägung keinen institutionalisierten Kundenfokus haben. Der SDLC endet nach dem Deployment und hat daher keinen Bezug zu Kunden. Agile Methoden haben zwar grundsätzlich einen starken Fokus auf die Kunden, es gibt jedoch keine in den Methoden integrierten Prozesse um Feedback von Kunden einzuholen. Es ist also Ihnen überlassen Lösungen zu finden. In Scrum zum Beispiel können Stakeholder die Meinung von Kunden repräsentieren, wenn Feedback nicht direkt eingeholt werden kann. Das liegt daran, dass Scrum sich im Wesentlichen auf die Entwicklung bezieht. Für einen ganzheitlichen Ansatz, der den gesamten Lebenszyklus eines Softwareproduktes umfasst, bedarf es noch weiterer Ideen.
SDLC und DevOps
Sowohl SDLC als auch DevOps umfassen sowohl die Entwicklung als auch den Betrieb von Software und haben das Ziel, die Qualität von Software zu verbessern. Der große Unterschied ist jedoch, dass der SDLC ein Prozess zur Softwareentwicklung ist, während DevOps eine Kultur bzw. ein Mindset beschreibt, die in Unternehmen gelebt wird. Trotz dieser unterschiedlichen Ansätze ist es jedoch kein Widerspruch den SDLC-Prozess auch im Rahmen von DevOps zu benutzen, z.B. indem ein Continuous Delivery-Prozess etabliert wird.