Lebenszyklus der Softwareentwicklung (sdlc)

Definition - Was bedeutet Software Development Life Cycle (SDLC)?

Ein SDLC-Modell (Software Development Life Cycle) ist ein konzeptioneller Rahmen, der alle Aktivitäten in einem Softwareentwicklungsprojekt von der Planung bis zur Wartung beschreibt. Dieser Prozess ist mit mehreren Modellen verbunden, die jeweils eine Vielzahl von Aufgaben und Aktivitäten umfassen.

Die Softwareentwicklung ist eine umständliche Aktivität, die eine ordnungsgemäße Identifizierung der Anforderungen, deren Implementierung und Softwarebereitstellung erfordert. Die Aktivitäten enden jedoch nicht dort. Nach der Verbreitung der Software muss rechtzeitig eine ordnungsgemäße Wartung erfolgen.

Dieser Begriff wird auch als Softwareentwicklungsprozessmodell bezeichnet.

Technische.me erklärt den Software Development Life Cycle (SDLC)

Schauen wir uns einen intuitiveren Weg an, um die Definition des Software Development Life Cycle (SDLC) anzugehen. Denken Sie an die Phasen der Softwareentwicklung, von den frühesten Abschlüssen einer Projektidee bis zur Veröffentlichung dieser Software live in einer Produktionsumgebung.

Stellen Sie sich den SDLC als aus verschiedenen „Wegestationen“ auf dem Weg zur vollständigen endgültigen Entwicklung und Veröffentlichung zusammengesetzt vor, mit allen Benutzertests und anderen Dingen, die am Ende des Prozesses ablaufen.

Das ist ein guter Weg, um darüber nachzudenken, was der SDLC ist.

SDLC Key Takeaways

Hier sind einige Dinge, die für unsere Erklärung des Softwareentwicklungslebenszyklus von zentraler Bedeutung sein werden:

  • SDLC umfasst: Planung, Implementierung, Test, Dokumentation, Bereitstellung und Wartung.
  • Die Modelle wechselten von traditionellen inszenierten SDLC-Prozessen zu agilen und dann zu Devops.
  • Agile und Devops als Praktiken verschmolzen traditionelle Inszenierungen auf neue und interessante Weise.
  • Die Cloud brachte die Ankunft von im Internet bereitgestellten Ressourcen ins Bild.
  • Obwohl SDLC jetzt stark verändert ist, bleibt das Konzept weitgehend gleich.

Geschichte des Softwareentwicklungs-Lebenszyklus

Der Konsens ist, dass sich der SDLC als Rahmen in den 1950er und 1960er Jahren als Informatik selbst schnell entwickelte.

Vor der zweiten Hälfte des 1900. Jahrhunderts, als die ENIAC und verschiedene andere Innovationen die Computerwelt schnell voranbrachten, war das Computing wirklich nicht aufwändig genug, um so etwas wie den SDLC zu benötigen. Die ersten Implementierungen von Softwaretechnologien umfassten einfache Tools wie grundlegende Anleitungen und if / then-Anweisungen.

Im Laufe der Zeit brachte das Konzept der strukturierten Programmierung die Notwendigkeit von Entwicklungsmodellen mit sich, und der SDLC wurde geboren.

Die ersten frühen Modelle wurden hauptsächlich durch die Stufen definiert.

Schauen Sie sich diese Infografik an, um diese historische Migration von Praktiken vom Wasserfall zu neuen DevOps und agilen Methoden zu verstehen.

Teilen Sie dieses Bild auf Ihrer Website

Bitte fügen Sie dieser Grafik die Zuordnung zu techopedia.com bei.

Iterative und inkrementelle Praktiken führten in den 1980er Jahren zum Prototyping, was zu verschiedenen Arten von Innovationen wie Spiral- und V-Modell-Frameworks und in den 1990er Jahren zu Agilität führte.

Es gibt zahlreiche Möglichkeiten, diese Änderungen im Laufe der Zeit zu beschreiben. Unter dem Strich begann der Lebenszyklus der Softwareentwicklung jedoch als sorgfältig abgestufter Prozess.

Der Wasserfall bleibt das dominierende Modell für diese frühen Lebenszyklus-Frameworks für die Softwareentwicklung. Im Wasserfallmodell ist alles in einer Stufe abgeschlossen, bevor Sie zur nächsten Stufe übergehen. Die gesamte Planung wird abgeschlossen, bevor das Projekt umgesetzt wird. Die gesamte Implementierung ist abgeschlossen, bevor der Prozess zum Testen übergeht.

Als sich diese Frameworks zu agilen Frameworks entwickelten, wurde diese Idee zu einem System, in dem die Zusammenarbeit die Arbeitsabläufe veränderte und zuvor monolithische Inszenierungen in ihre Verbundteile geschnitten und in Würfel geschnitten wurden. Beispielsweise können Tests in verschiedenen Phasen in verschiedenen Umgebungen durchgeführt werden.

Nebenbei bemerkt, das Testen wurde zunehmend auch automatisiert.

In jedem Fall bringt uns der Wechsel vom Wasserfall zu anderen Modellen zu Agile und DevOps auf den heutigen Tag, an dem die DevOps-Mentalität Cloud-Architekturen, Mikrodienste und mehr nutzt, um neu zu definieren, was Lebenszyklusarbeit in der Softwareentwicklung bedeutet.

SDLC-Prozess

Die wichtigsten Softwareentwicklungsaktivitäten umfassen:

Anforderungsextraktion

Der Kunde hat eine vage Vorstellung davon, was erforderlich ist. Die Verkaufsabteilung, Softwareentwickler und Domain-Experten arbeiten zusammen, um Informationen darüber zu sammeln, was das Produkt sein sollte, wozu es dient und wie es funktionieren soll. Diese Analyse wird häufig durch Marktuntersuchungen gekoppelt.

Machbarkeitsanalyse

Nach einer gründlichen Analyse der Anforderungen und Planungsschritte zur Erreichung des Ziels wird die abstrakte Kundenidee von einer Gruppe von Software-Ingenieuren in die Praxis umgesetzt. Ein SRS-Dokument (Software Requirement Specification) enthält alle Informationen, die zur Fertigstellung des Projekts entwickelt werden müssen.

Design-Phase

In dieser Phase wird die gesamte Systemarchitektur entworfen, indem die Funktionalität jedes Moduls sowie deren Interaktion mit Modulen von Drittanbietern definiert werden.

Bau- und Codierungsphase

Das Produkt wird nach firmeneigenen Standards erstellt und codiert. Designer befolgen eine Reihe von Best Practices und Richtlinien und verwenden die ihnen zur Verfügung stehenden Programmiertools, um das Produkt zu entwickeln.

Testphase

Der Code wird getestet, um sicherzustellen, dass er frei von Fehlern ist, den Clientanforderungen entspricht und korrekt mit anderen Softwareprodukten zusammen mit der zugrunde liegenden Hardware verbunden ist.

Bereitstellung und Wartung

Die endgültige Version des Produkts wird auf den Markt gebracht. Die Wartung wird im Laufe der Zeit durchgeführt, um die Systemarchitektur an zukünftige Anforderungen anzupassen. Dies kann das Hinzufügen von Code oder das Ändern des vorhandenen Codes erfordern.

Der obige Entwicklungsprozess wird durch eine Reihe von Modellen optimiert. Das Entwicklungsteam wählt aus mehreren bekannten das am besten geeignete Modell aus. Die verschiedenen Modelle sind:

Wasserfall-Modell

Entwickler geben die Anforderungen an, analysieren sie, bestimmen eine Lösung und rahmen eine Softwarearchitektur, Schnittstellendarstellung und algorithmische Details ein. Anschließend entwickeln sie den Code, testen den Code, stellen die Software bereit und warten sie. Das Hauptproblem bei diesem Modell besteht darin, dass die Anforderung zur Fehlerkorrektur im Voraus und in einem frühen Stadium bekannt sein sollte. Andernfalls kann der gesamte Prozess in die falsche Richtung fortgesetzt werden, was sich negativ auf die Produktionskosten auswirken kann.

V-förmiges Modell

Ist eine Variation des Wasserfallmodells. Es betont die Überprüfung und Validierung des Produkts. Alle Ergebnisse sind überprüfbar und der Fortschritt wird anhand von Meilensteinen verfolgt. Das Testen wird parallel zur Entwicklungsphase durchgeführt.

Prototypmodell

In der Anforderungsphase wird ein Prototyp entwickelt und vom Endbenutzer bewertet. Basierend auf dem Feedback der Benutzer ändern Entwickler den Prototyp, um die Benutzeranforderungen zu erfüllen. Während dieses Modell die Anforderungen leicht abschließt, kann seine Verwendung in der Produktionsumgebung zu Qualitätsproblemen führen, wodurch der Korrekturprozess für immer fortgesetzt wird.

Spiralmodell

Verwendet sowohl Wasserfall- als auch Prototypmodelle. Es erweitert das Wasserfallmodell um Programmiersprachen der 4. Generation, Prototyping für die schnelle Anwendungsentwicklung und Risikoanalyse. Die Systemanforderungen werden entworfen und ein vorläufiger Systementwurf wird erstellt. Ein erster Prototyp wird entworfen und getestet. Basierend auf der Auswertung der Testergebnisse wird ein zweiter Prototyp erstellt. Nachfolgende Prototypen werden konstruiert, um die Kundenzufriedenheit sicherzustellen. Das System wird basierend auf dem endgültigen Prototyp erstellt. Das endgültige System wird bewertet und getestet. Obwohl dieses Modell das Risiko weitgehend reduziert, entspricht es möglicherweise nicht dem Budget und wird für jede Anwendung unterschiedlich angewendet.

Iteratives und inkrementelles SDLC-Modell

Spezifiziert und implementiert einen Teil der Software, der dann überprüft und weitere Anforderungen hinzugefügt und in Gruppen implementiert werden. Jede Version liefert ein betriebliches Produkt, das den Kunden zunächst wichtige Funktionen bietet und so die anfänglichen Lieferkosten senkt. Das Risiko, dass sich die Anforderungen ändern, wird erheblich reduziert, und die Kunden können auf jeden Build reagieren. Trotz seiner Stärken erfordert dieses Modell eine gute Planung und frühzeitige Definition des vollständigen und voll funktionsfähigen Systems. Es erfordert auch genau definierte Modulschnittstellen.

Agiles Entwicklungsmodell

Wird für zeitkritische Anwendungen in Organisationen verwendet, die disziplinierte Methoden anwenden. Es beschleunigt die Lebenszyklusphasen und hat den Umfang reduziert.

Magic Box Modell

Ist ein Webanwendungsentwicklungsmodell. Dies ist der schnellste Weg, um das Projekt mit den geringsten Fehlern abzuschließen, da hierdurch die Code- und Datenbankstrukturen geändert werden können.

Es gibt viele bewegliche Teile. Aus diesem Grund haben Unternehmen begonnen, Scrum-Master einzustellen, Teams zusammenzubringen und sie schnell an den Vorgängen vor Ort zu orientieren.

Diese Art des Eincheckens stellt sicher, dass auch in der hochkomplexen Umgebung alles mitsummt.

Informationen zur Softwareentwicklung als Service (SDaaS)

In Anbetracht all dieser Punkte bezieht sich Software Development as a Service (SDaaS) auf die breite Palette von Diensten, die von Anbietern angeboten werden, die Aspekte des Softwareentwicklungs-Lebenszyklusprozesses in irgendeiner Form übernehmen.

Diese Unternehmen können Teams von Einzelpersonen für die Verwaltung des Software-Lebenszyklus einsetzen, um das Kundenunternehmen auf der Grundlage von Entdeckung und Teilnahme zu unterstützen.

Viele dieser Systeme basieren auf der agilen Methode, da sie sehr symbiotisch mit der Natur von SDaaS sein kann. Aufgrund der hohen Interaktivität und Interoperabilität kann der Client routinemäßig mit dem Support-Anbieter in einer Weise kommunizieren, die gute Ergebnisse fördert.

Anbieter verfügen möglicherweise über Scrum-Master und andere Praktiker, die Entwicklungs- oder Bereitstellungsteams leiten, die entsprechend den spezifischen Anforderungen liefern.

Einige Anbieter charakterisieren dies als Angebot von Softwareentwicklungsdiensten mit laufenden prognostizierten Kosten, um Kunden beim Outsourcing zu unterstützen, obwohl viele SDaaS als anders als das ausgelagerte IT-Modell betrachten.

Abschließend

All dies hilft zu zeigen, warum der Lebenszyklus der Softwareentwicklung wichtig ist und wie er sich im Laufe der Zeit entwickelt hat.

Denken Sie an diese grundlegende Methode zum Erstellen der Apps, ausführbaren Dateien und Softwareprodukte, die wir täglich verwenden.