wake-up-neo.net

Was ist der Unterschied zwischen dem inkrementellen Softwareprozessmodell, dem Evolutionsmodell und dem Spiralmodell?

Ich studiere dieses Jahr Software Engineering und bin über die Frage im Titel ein wenig verwirrt.

Sowohl mein Professor als auch die Referenz ("Software Engineering A Practitioner Approach") unterscheiden die drei Titel als unterschiedliche Modelle. Ich kann jedoch keinen offensichtlichen Unterschied feststellen, da ihre Methoden für mich gleich aussehen, aber unterschiedliche Anweisungen verwenden, um sie zu definieren. Ich habe das Gefühl, dass praktisch alle dasselbe Prozessmodell darstellen.

Kann jemand die verschiedenen Modelle besser erklären?

18
Ahmed

Craig Larman hat ausführlich zu diesem Thema geschrieben und ich schlage vor, seine berühmte Arbeit Iterative und Inkrementelle Entwicklung: Eine kurze Geschichte (PDF) und sein Buch Agile und Iterative Entwicklung: Ein Leitfaden für Manager

So würde ich die Dinge zusammenfassen: 

Inkrementelle Entwicklung

Inkrementelle Entwicklung ist eine Praxis, bei der die Systemfunktionalitäten in Inkremente (kleine Teile) aufgeteilt werden. In jedem Schritt wird ein vertikaler Teil der Funktionalität bereitgestellt, indem alle Aktivitäten des Softwareentwicklungsprozesses von den Anforderungen bis zur Bereitstellung durchlaufen werden.

Inkrementelle Entwicklung (Addieren) wird häufig zusammen mit Iterative Development (Redo) in der Softwareentwicklung verwendet. Dies wird als iterative und inkrementelle Entwicklung (IID) bezeichnet.

Evolutionsmethode

Die Begriffe evolution und evolutionary wurden von Tom Gilb in seinem 1976 veröffentlichten Buch Software Metrics eingeführt, in dem er über EVO, seine Praxis der IID (vielleicht die älteste). Evolutionäre Entwicklung konzentriert sich auf die frühzeitige Bereitstellung eines hohen Nutzens für Stakeholder sowie auf die Einholung und Nutzung von Feedback von Stakeholdern. 

In Software-Entwicklung: Iterativ und evolutionär , so Craig Larman:

Evolutionäre iterative Entwicklung impliziert, dass die Anforderungen, der Plan, die Schätzungen und die Lösung evolve oder im Verlauf der Iterationen verfeinert werden anstatt vollständig definiert und "eingefroren" zu werden. Vor dem Beginn der Entwicklungsdurchläufe müssen die Spezifikationen für die Spezifikation festgelegt werden Evolutionäre Methoden stehen im Einklang mit dem Muster unvorhersehbarer Entdeckungen und Änderungen in der Entwicklung neuer Produkte. 

Und bespricht dann weitere evolutionäre Anforderungen, evolutionäre und adaptive Planung, evolutionäre Bereitstellung. Überprüfen Sie den Link.

Spiralmodell

Das Spiralmodell ist ein weiterer IID-Ansatz, der von Barry Boehm in den Mitte der 1980er Jahre als Erweiterung des Wasserfalls zur besseren Unterstützung der iterativen Entwicklung formalisiert wurde und einen besonderen Schwerpunkt auf das Risikomanagement (durch iterative Risikoanalyse) legt.

Zitat Iterative und inkrementelle Entwicklung: Eine kurze Geschichte :

Ein Meilenstein in den IID-Publikationen Von 1985 war Barry Boehms "Ein Spiralmodell von Softwareentwicklung und -verbesserung" (Obwohl das häufigere Zitat 1986 ist). Das Spiralmodell war Wahrscheinlich nicht der erste Fall, in dem ein Team Entwicklungszyklen mit Risiko priorisierte: Gilb und IBM FSD hatten zuvor Variationen von Angewandt oder befürwortet diese Idee zum Beispiel. Das Spiralmodell Hat jedoch formalisiert und Das Konzept der risikogesteuerten Iterationen Und die Notwendigkeit einer diskreten Risikobewertung in jedem Fall hervorgehoben Iteration.

Was jetzt?

Agile Methoden sind eine Teilmenge von IID- und evolutionären Methoden und werden heutzutage bevorzugt.

Verweise

16
Pascal Thivent

Diese Konzepte werden in der Regel schlecht erklärt.

Incremental ist eine Eigenschaft der Arbeitsprodukte (Dokumente, Modelle, Quellcode usw.) und bedeutet, dass sie nach und nach erstellt werden und nicht in einem Arbeitsgang. Sie erstellen beispielsweise eine erste Version Ihres Klassenmodells während der Anforderungsanalyse, erweitern diese dann nach der UI-Modellierung und erweitern sie sogar noch während des detaillierten Entwurfs.

Evolutionary ist eine Eigenschaft von Leistungen, d. H. Arbeitsprodukten, die an die Benutzer geliefert werden, und in dieser Hinsicht ist es eine besondere Art von "inkrementellen". Das bedeutet, dass alles, was geliefert wird, so früh wie möglich in einer ursprünglichen Form geliefert wird, nicht voll funktionsfähig ist, und dann immer wieder mit immer mehr Funktionen geliefert wird. Dies impliziert oft einen iterativen Lebenszyklus.

[An iterative lifecycle, aber der Weg bezieht sich auf die von Ihnen ausgeführten Aufgaben (im Gegensatz zu "inkremental", das sich auf die Produkte bezieht; dies ist die Ansicht, die von SEMAT angenommen wird. ) und es bedeutet, dass Sie immer wieder Aufgaben desselben Typs ausführen. In einem iterativen Lebenszyklus würden Sie zum Beispiel selbst Konstruieren, Codieren, Komponententests, Freigeben und dann immer wieder dieselben Dinge tun. Bitte beachten Sie, dass iterativ und inkremental sich nicht gegenseitig bedingen. Jede Kombination von beiden ist möglich.]

Das Spiralmodell für Lebenszyklen ist ein von Barry Boehm vorgeschlagenes Modell, das Aspekte des Wasserfalls mit innovativen Fortschritten wie einem iterativen Ansatz und einer integrierten Qualitätskontrolle kombiniert.

Für die Konzepte "Arbeitsprodukt", "Aufgabe", "Lebenszyklus" usw. siehe ISO/IEC 24744 .

Hoffe das hilft.

7
CesarGon

Dies ist die ipsis litteris - Definition aus ISO 24748-1: 2016 (Systems and Software Engineering Life Cycle Management):

Es gibt viele verschiedene Entwicklungsstrategien, die auf System- und Softwareprojekte angewendet werden können. Drei dieser Strategien sind im Folgenden zusammengefasst:

a) Einmal durch. Die Einmalstrategie, auch Wasserfall genannt, besteht darin, den Entwicklungsprozess einmalig durchzuführen. Einfach: Benutzeranforderungen ermitteln, Anforderungen definieren, System entwerfen, System implementieren, testen, beheben und ausliefern.

b) Inkrementell. Die "inkrementelle" Strategie bestimmt die Anforderungen der Benutzer, definiert die Systemanforderungen und führt den Rest der Entwicklung in einer Folge von Builds aus. Der erste Build enthält einen Teil der geplanten Funktionen, der nächste Build fügt weitere Funktionen hinzu usw., bis das System vollständig ist.

c) Evolutionär. Die „evolutionäre“ Strategie entwickelt auch ein Build-System, unterscheidet sich jedoch von der inkrementellen Strategie dadurch, dass die Bedürfnisse des Benutzers nicht vollständig verstanden werden und nicht alle Anforderungen im Voraus definiert werden können. In dieser Strategie werden Benutzeranforderungen und Systemanforderungen vorab teilweise definiert und dann in jedem nachfolgenden Build verfeinert.

Hoffe das hilft. Tati

0
Dr. T.