Gibt es wichtige Alternativen zu Waterfall und Agile? [geschlossen]

35

Ich bin gespannt, ob jemand Methoden kennt, die sich erheblich unterscheiden (keine Rekombination), und ich würde mich besonders über jeden freuen, der Erfahrungen mit Alternativen gemacht hat.

Morgan Herlocker
quelle

Antworten:

47

Wikipedia listet diese als Methoden / Entwicklungsprozesse auf :

  • Agil - basierend auf iterativer und inkrementeller Entwicklung, bei der sich Anforderungen und Lösungen durch die Zusammenarbeit von sich selbst organisierenden, funktionsübergreifenden Teams entwickeln.

  • Reinraum - Der Schwerpunkt des Reinraumprozesses liegt auf der Vermeidung von Fehlern und nicht auf der Beseitigung von Fehlern.

  • Iterativ - ein zyklischer Softwareentwicklungsprozess, der als Reaktion auf die Schwächen des Wasserfallmodells entwickelt wurde. Es beginnt mit einer ersten Planung und endet mit der Bereitstellung mit den zyklischen Interaktionen dazwischen.
    iteratives Diagramm

  • RAD - verwendet minimale Planung zugunsten von Rapid Prototyping. Die "Planung" von mit RAD entwickelter Software ist mit dem Schreiben der Software selbst verbunden.

  • RUP - Der Rational Unified Process (RUP) ist ein anpassbares Framework für iterative Softwareentwicklungsprozesse, das durch Auswahl der geeigneten Prozesselemente angepasst werden soll.

  • Spirale - Kombination von Elementen aus Design und Prototyping in Schritten, um die Vorteile von Top-Down- und Bottom-Up-Konzepten zu kombinieren. Dieses Entwicklungsmodell kombiniert die Merkmale des Prototyping-Modells und des Wasserfall-Modells.
    Spiralmodelldiagramm

  • Wasserfall - sequentiell durch die Phasen Konzeption, Initiierung, Analyse, Design, Konstruktion, Prüfung und Wartung.
    Wasserfalldiagramm

  • Lean - eine Übersetzung von Lean Manufacturing- und Lean IT-Prinzipien und -Praktiken in die Softwareentwicklungsdomäne; Alles, was dem Kunden keinen Mehrwert bringt, gilt als Verschwendung.

  • V-Modell - Anstatt sich linear nach unten zu bewegen, werden die Prozessschritte nach der Codierungsphase nach oben gebogen, um die typische V-Form zu bilden. Das V-Modell zeigt die Beziehungen zwischen jeder Phase des Entwicklungslebenszyklus und der zugehörigen Testphase.
    V-Modell Diagramm

  • TDD - setzt auf die Wiederholung eines sehr kurzen Entwicklungszyklus: Zuerst schreibt der Entwickler einen fehlgeschlagenen automatisierten Testfall, der eine gewünschte Verbesserung oder neue Funktion definiert, erstellt dann Code, um diesen Test zu bestehen, und überarbeitet den neuen Code schließlich auf akzeptable Standards.

Peter Boughton
quelle
Vielen Dank für eine so klare und prägnante Antwort. Ich bin so altmodisch, dass ich noch nie gehört habe, wie viele Begriffe auf P.SE herumgeworfen werden.
Michael Riley - AKA Gunny
7
Tolle Liste, außer TDD. Das ist kein Lebenszyklus, sondern eine Entwicklungspraxis.
Michael
18

Cowboy-Codierung

Reine unstrukturierte, nicht verwaltete Freiform-Entwicklung. Es kann für kleine Hobbyprojekte nützlich sein, bei denen eine Frist oder sogar ein klares Ziel fehlt, die jedoch in einem Unternehmensumfeld wahrscheinlich nicht funktionieren.

Bruce Alderman
quelle
2
Yay! Knall-Knall!
mlvljr
3
msgstr "Funktioniert wahrscheinlich nicht in einem Unternehmen". Sagst du! ;)
Bobby Tables
+1 Aaa, cool! Ich mache es manchmal, aber ich wusste nicht, wie ich diesen "Prozess" nennen soll :)
Zzz
yeeee-haw padnah!
ybakos
In formal ausgereiften Unternehmenssituationen stimmt das. In kleinen Unternehmen kann es jedoch durchaus eine gewisse "Just-r-done" -Mentalität geben.
JB King
4

Das Spiralmodell

Das Spiralmodell ist ein Softwareentwicklungsprozess, bei dem Elemente aus Design und Prototyping in Schritten kombiniert werden, um die Vorteile von Top-Down- und Bottom-Up-Konzepten zu kombinieren. Es wird auch als Spiral-Lifecycle-Modell (oder Spiral-Entwicklung) bezeichnet und ist eine in der Informationstechnologie (IT) verwendete Methode zur Systementwicklung (SDM). Dieses Entwicklungsmodell kombiniert die Merkmale des Prototyping-Modells und des Wasserfall-Modells. Das Spiralmodell ist für große, teure und komplizierte Projekte gedacht.

- Wikipedia Alt-Text

Ryan Hayes
quelle
1

Planen

Setzen Sie sich mit dem Kunden (oder Endbenutzer) zusammen und entwerfen Sie eine Reihe von Anwendungsfällen.

Design

Planen Sie das System auf Papier / Whiteboard mit ein paar Bieren und Pizza. Kichere, wenn etwas phallisch aussieht.

Bestätigen

Bestätigen Sie das Design mit dem Kunden (oder dem Endbenutzer) und lassen Sie die Anforderungen einfrieren.

Code

Selbsterklärend.

Josh K
quelle
"Einfrieranforderungen" sind die größten, die je gesagt oder getan wurden.
Justin Schier
1

Dieses Argument von Waterfall gibt es schon seit einiger Zeit und wird von den agilen Vordenkern schon früh verwendet. Auch sie begegneten der "Realität" des Wasserfalls als "Alarmstufe Rot".

Wenn Sie mit der Arbeit an einem Softwareentwicklungsprojekt beginnen, werden Sie schnell feststellen, dass die verwendete Entwicklungsmethodik eine wichtige Rolle für die Geschwindigkeit und Qualität des entwickelten Codes spielt. Da die agile Methodik so weit verbreitet ist, ist es wichtig, dass Sie die Vorteile verstehen und die Nachteile von Agile, damit Sie feststellen können, ob es für Ihre Projektergebnisse am besten geeignet ist.

Die agile Softwareentwicklung ist ein konzeptioneller Rahmen für die Durchführung von Softwareentwicklungsprojekten. Die meisten agilen Methoden versuchen, das Risiko zu minimieren, indem sie Software in kurzen Zeitrahmen, so genannten Iterationen, entwickeln, die in der Regel ein bis vier Wochen dauern. Jede Iteration ist wie ein eigenes Miniatur-Softwareprojekt und umfasst alle Aufgaben, die erforderlich sind, um das Mini-Inkrement neuer Funktionen freizugeben: Planung, Anforderungsanalyse, Design, Codierung, Test und Dokumentation.

Dies ist ein guter Prozess für das Unternehmen, da der Kunde in den Entwicklungsprozess einbezogen und für die Produktlieferung verantwortlich gemacht wird. Auf der anderen Seite sind die Kunden glücklich, weil sie sich selbst an der Entwicklung des Produkts beteiligen.

Nachteile für Agile:

  • Agile ist zu programmiererorientiert, sodass nicht klar ist, wie die Arbeit in einem Unternehmen verteilt werden soll.
  • Wenn Sie nicht wissen, wohin Sie gehen, bringt Sie Agile nicht dorthin!
  • Schaffung von Frameworks ohne klare Bedürfnisse.
  • Überbeanspruchung von Sprachfunktionen (unangemessen).
  • Keine Test-First-Mentalität.

Gut für eine interessante Methodik, die als Alternative für AGILE funktionieren könnte, kann am besten unter diesen 3 Links angesehen werden:

Kanban als alternative agile Implementierung

Kanban-Softwareentwicklung

Schlanke Softwareentwicklung in der Cloud

Tony
quelle
3
Wenn Sie nicht wissen, wohin Sie gehen, bringt Sie der Wasserfall nicht dorthin!
Eric Wilson