Software Development Life Cycle

Hast du dich schon mal gefragt, wie genau eine Software von der Idee, über den ersten Release bis hin zur Wartung und Instandhaltung entwickelt wird? Mina beschreibt euch in diesem kurzen Artikel den Software Development Life Cycle.

Januar 31, 2023

Headerbild vom Artikel

Software Development - wie ist der Ablauf?

In der Softwareentwicklung gibt es viele unterschiedliche Phasen, die nacheinander durchlaufen werden, bis die Software zuverlässig für die Endkund:innen bereitgestellt werden kann. Der Software Development Life Cycle beschreibt genau diesen Prozess und fasst dabei die wichtigsten Arbeitsschritte der Abschnitte zusammen. So kann von Anfang an sichergestellt werden, dass man während der einzelnen Aufgaben den Fokus nicht verliert und immer den Überblick behält.

In seiner anwendungsorientierten Form umfasst der Software Development Life Cycle (SDLC) die 6 Phasen: Anforderungsanalyse, Planung, Software- und Architektur Design, Softwareentwicklung, Testing und Deployment, die bei der Softwareentwicklung wiederkehrend durchlaufen werden. Besonders wichtig ist dabei, zeitliche Abhängigkeiten in den einzelnen Phasen zu beachten und auch die Ressourcen im Team bestmöglich zu nutzen, um eine möglichst gut funktionierende und gleichzeitig anwenderfreundliche Software zu erstellen. Auch muss man sich immer im Klaren darüber sein, dass es mit jeder Phase schwieriger wird Änderungen am Endprodukt vorzunehmen. Dies darf man nicht unterschätzen und sollte daher auch die ersten Analyse- und Planungsphasen genau ausführen.

Im Folgenden gehen wir davon aus, eine Planungs-App für Lehrkräfte entwickeln zu wollen, um anhand eines Beispiels auf die wichtigsten Aspekte des SDLC einzugehen.

Software Development Life CycleSoftware Development Life Cycle (Quelle: Stackify)

1. Anforderungsanalyse

Bei der Anforderungsanalyse ist es das Ziel herauszufinden, wie die aktuelle Ausgangslage ist und für welche Problematik die neue Software eine Lösung bereitstellen soll. Hierbei versucht man möglichst viele Meinungen der verschiedenen Stakeholder einzuholen, sodass man keine Präferenzen oder Wünsche übersieht. In diesem Schritt eignen sich häufig Interviews, Fokusgruppen, aber auch Umfragen oder die Nutzung von vorhandenen Statistiken. Wichtig ist es zu beachten, dass man nicht nur die Perspektiven der verschiedenen Enduser einholt, sondern darüber hinaus auch die der Nutzer:innen, die nur gelegentlich mit dem Produkt in Berührung kommen oder für deren Kauf verantwortlich sind. Auch kann es an dieser Stelle bereits relevant sein, sich die aktuelle IT-Infrastruktur anzuschauen, um so technische Abhängigkeiten und Voraussetzungen zu analysieren.

Für unsere Planungs-App bedeutet das, dass wir die Erwartungen und Wünsche der Lehrkräfte analysieren und dabei auf besondere Anforderungen, im Hinblick auf das Unterrichtsfach, die Affinität für digitale Anwendungen und Unterschiede in den Schulsystemen eingehen. Auch ist es sinnvoll, wenn man mit Schuldirektor:innen oder IT-Fachkräfte an Schuleinrichtungen über die Erwartungen hinsichtlich der Anschaffung und Instandhaltung spricht.

2. Planung

In der Planungsphase geht es darum, was genau unsere Software an Funktionalitäten abdecken soll. Dabei sollte man auf den Ergebnissen aus der Anforderungsanalyse aufbauen und aus Usersicht alle einzelnen Komponenten der Zielsoftware detailliert betrachten. Hierbei kann man die Nutzungsmöglichkeiten anhand ihrer  Auftrittswahrscheinlichkeit in Durchaus-, Schlüsselpfads- oder Varianten-Szenarien aufgliedern und aus der Usersicht in sogenannten Stories zusammenfassen. Hierbei versucht man, einzelne Interaktionen mit der Software und deren Beweggründe für die verschiedenen Usergruppen festzuhalten und im Anschluss anhand ihrer Wichtigkeit zu priorisieren. Konkret sollte man in dieser Phase mit einer Sammlung an priorisierten User-Szenarien herausgehen, um darauf Aufbauend konkrete Aspekte des Endprodukts in der nächsten Phase zu bearbeiten.

In unserem Beispiel würde dies bedeuten, dass wir uns überlegen, ob man als User die Möglichkeit haben möchte, einzelne Termine zu erstellen. Darüber hinaus könnte man überlegen, dass einige Nutzer:innen auch die Option haben, Einladungen für Termine per E-Mail zu verschicken oder eine Todo-Liste für die einzelnen Aufgaben an bestimmten Tagen zu notieren.

Auch ergibt es Sinn, an dieser Stelle grob zu schauen, ob die aktuellen Planungen finanziell Sinn machen und ob es sich aus wirtschaftlicher Sicht überhaupt lohnt, das Vorhaben in die Tat umzusetzen. Hier schaut man auf die anfallenden Kosten und prognostiziert den möglichen Umsatz, schätzt weitere Risiken ein und versucht bereits einige Strategien zur Risikominimierung bereitzulegen.

3. Software Design

In der Design Stage geht es darum, aufbauend auf den Nutzungsszenarien erste schematische und visuelle Abläufe zu dokumentieren. Endprodukte dieser Phase sind in der Regel klassische Prozessdiagramme, die den Ablauf von der Interaktionen mit dem System sehr prägnant darstellen, Wireframes, die einen Überblick über die verschiedenen Interfaces und deren groben Inhalte darstellen, oder auch Mock-ups, die bis ins feinste Detail das User Interface darstellen. Innerhalb dieser gesamten Phase ist es wichtig, nicht nur theoretisch funktionierende Konzepte und visuelle Aufbereitungen fertigzustellen, sondern auch gleichzeitig erste Validierungen mit den zukünftigen Nutzergruppen durchzuführen und die Designs zu finalisieren. Nur wenn man in enger Zusammenarbeit mit den Kunden arbeitet, kann man sicherstellen, dass die Entwürfe auch angenommen werden und man kann sich viel Zeit und Kosten für nachträgliche Änderungen ersparen.

Für unser Planungstool würden die Entwickler:innen nach und nach alle Aufgaben abarbeiten und so der Fertigstellung unserer Software immer näher kommen. Hier kann es darum gehen, das Frontend Design umzusetzen, sich zu überlegen, wie die Nutzerdaten gespeichert werden oder einzelne Funktionen zu schreiben, um die Terminbuchung abzubilden.

4. Software Development

n der Entwicklungsphase werden die unterschiedlichen User Stories aus der vorherigen Phase ihrer Priorisierung durch das Entwicklerteam umgesetzt. Hier kommen häufig agile Softwaremethoden wie Scrum zum Einsatz, wodurch die Software in mehreren Iterationen entwickelt wird. In den meisten Fällen konzentriert man sich zunächst auf die Fertigstellung der wichtigsten Aspekte für eine erste funktionierende Version der Software. Diese beinhaltet alle Funktionalitäten, die ausschlaggebend für das Endprodukt sind und alle sonstigen essentiellen Bestandteile wie ein User Interface und eine funktionierende Software Architektur.
In unserem Planungstool könnte dies eine einfache Useranmeldung, die Ansicht auf den Monat und die Funktion, neue Termine einzustellen sein. Die sogenannte Version mit den wichtigsten Inhalten nennt sich MVP – minimal viable product.

Viele Startups konzentrieren sich auf die Entwicklung der MVPs, um diese dann mit ersten Kunden oder Praxispartnern zu testen und weiter auszudefinieren. Erst im Anschluss werden neben den must-have Funktionalitäten die should-haves oder could-haves eingebaut. Hierbei kann auch entschieden werden, dass man in bestimmten Stages bereits live User mit der Software interagieren lässt oder bereits mit einer einfachen Lösung in den Markt einsteigt und so nach und nach, während man sich mit den ersten Umsätzen anfängt selber zu finanzieren, weitere Funktionalitäten der Software aufbaut.

5. Testing

Sobald man eine Entwicklung Iteration abgeschlossen hat, startet das Testing. Software kann dabei auch auf vielen unterschiedlichen Ebenen getestet werden. Hierbei gibt es einmal die einfachen Unit-Tests, die häufig automatisiert werden und einzelne Code Abschnitte auf Fehler untersuchen. Im nächsten Schritt kann man einzelne Funktionen der Software testen. Im Anschluss testet man häufig die Software als Gesamtkonstrukt in den sogenannten System Tests. Zuletzt gibt es Integrationstests, die die Schnittstellen der Software auf mögliche Fehler untersuchen. Wenn diese Schritte durchlaufen sind, kann man außerdem noch einen End-to-End-Test durchführen, der die Software einmal in ihrer Gänze aus Sicht eines Users testet. Hierbei darf man nicht unterschätzen, dass mit steigenden Userrollen und Anbindungen an Drittsysteme die Komplexität der Software und somit auch die Anzahl der Testszenarien stark anwachsen kann.

In unserem Beispiel mit unserem Planungstool könnte ein End-to-End Test beinhalten, dass man sich als neuer User im Tool anlegt, den Kalender öffnet, einen Termin plant und diesen an einen weiteren Kontakt per E-Mail versendet.

6. Deployment

Hat man die aktuelle Version erfolgreich getestet, folgt nun das Deployment, wodurch unsere Software den Endnutzer:innen zur Verfügung gestellt wird. Dieser Prozess ist sehr technisch und wird aktuell immer stärker automatisiert, weshalb hier nicht in die Tiefe gegangen wird. Darüberhinaus gibt es jedoch noch einige Sachen, die man nach dem Deployment nicht vergessen darf. Hier gibt es zum einen den klassischen Support von Endusern sowie auch die Fehlerbehebung, sollte man nicht alle Fehler in den Tests identifiziert haben. Gleichzeitig kann man das direkte Feedback der ersten Nutzergruppen verwenden, um weitere, aktuell noch fehlende Funktionalitäten aufzunehmen, um diese für das nächste Update einzuplanen.

Fazit

Man sieht also, dass neben dem reinen Coden viele andere Aspekte eine große Rolle spielen, um zuletzt ein funktionierendes System zu entwickeln. Wichtig ist auch zu beachten, dass man nicht zwangsläufig alle Phasen strikt durchlaufen muss. Auch wenn der Fokus beim SDLC darauf liegt, dass die einzelnen Phasen und Ergebnisobjekte stets klar definiert sind, sollte man für die Anwendung in der Praxis nie vergessen, dass man auch zu früheren Phasen springen kann, wenn man in einer späteren Phase Schwierigkeiten entdeckt. Falls man also feststellt, dass aufgrund der erst im späteren Verlauf zur Verfügung gestellten Informationen, bestimmte geplante Funktionen der Software so gar nicht umsetzen kann, sollte man versuchen mit alternativen Lösungsmöglichkeiten eine ähnliche, technisch umsetzbare Lösung anzubieten. Dabei darf man jedoch nicht den finanziellen Faktor aus den Augen verlieren. Jeder Schritt zurück kostet mehr Zeit und Arbeitskraft. Daher ist es umso wichtiger, in der initialen Analyse so viele Anforderungen und Eindrücke zu ermitteln.

Du möchtest noch mehr über Softwareentwicklung oder generell Berufe oder Studiengänge im Bereich IT lernen? Schau dir unsere neusten Artikel an oder folge uns auf Instagram, Tiktok oder Linkedin.

Verpasse keinen Artikel mehr.