Die beiden vorherrschenden Methoden für die Softwareentwicklung sind Waterfall und Agile. Bei der Erörterung dieser beiden Aspekte liegt der Schwerpunkt häufig auf den besonderen Praktiken, die sie auszeichnen (Paarprogrammierung, TDD usw. im Vergleich zu Funktionsspezifikationen, umfassendes Design usw.).
Die wirklichen Unterschiede sind jedoch weitaus tiefer, da diese Praktiken aus einer Philosophie stammen.
Wasserfall sagt: Änderung ist kostspielig, also sollte sie herabgesetzt werden.
Agile sagt: Veränderung ist unvermeidlich, also macht Veränderung billig.
Meine Frage ist, unabhängig davon, was Sie von TDD oder funktionalen Spezifikationen halten, ob die Entwicklungsmethode für Wasserfälle wirklich praktikabel ist.
Ist jemand der Meinung, dass die Minimierung von Softwareänderungen eine praktikable Option für diejenigen ist, die wertvolle Software bereitstellen möchten? Oder ist die Frage wirklich, welche Praktiken in unseren Situationen am besten funktionieren, um den unvermeidlichen Wandel zu bewältigen?
quelle
Antworten:
Wasserfall ist natürlich lebensfähig. Es brachte uns zum Mond!
Und es ist ein agiler Coach, der hier spricht!
Wenn Sie Probleme im Zusammenhang mit der Verwaltung Ihrer Projekte nicht eindeutig identifizieren können, gibt es keinen gültigen Grund für eine Änderung.
Als Alternative zu den Agile- und Waterfall- Methoden schlage ich IHRE Methodik vor . Angepasst an Ihr spezifisches Unternehmen, Ihr spezifisches Team, Ihre Produkte, Ihre Arbeitsweise, Ihre Unternehmenskultur ... Deshalb wird Scrum als einfaches Framework anstatt als Methodik bezeichnet.
Eine Methodik implementieren zu wollen, weil jemand in einem Blog, über das Sie gerne gesprochen haben, so dumm ist, als wenn man Probleme laufen lässt, ohne etwas zu tun.
quelle
Zunächst werde ich mit Ihren Aussagen nicht einverstanden sein:
Meine Interpretation ist:
Wasserfall sagt: Der Kunde weiß, was er will.
Agile sagt: Der Kunde weiß nicht, was er will, deshalb müssen wir ein paar verschiedene Versionen erstellen.
Die beste Implementierung von "waterfall", die ich je gesehen habe, war ein riesiges Integrationsprojekt mit einem sehr großen Finanzkunden, an dem über 40 Teilprojekte beteiligt waren. Das von uns gelieferte Desktop- und Website-Paket war nur eines dieser über 40 Unterprojekte. Während ich dachte, dass sie das Geld anderer Leute ziemlich übermäßig verschwendet haben, hatten sie ihre Sachen zusammen und hielten mehr als 40 verschiedene Schiffe in Formation zusammen. Das Projekt wurde zum Zieldatum in Betrieb genommen (das Ziel wurde während des Projekts einmal verschoben ), und obwohl ich dachte, dass sie es sparsamer und agiler hätten machen können, wurde es pünktlich und nach Vorgabe durchgeführt. Der Zeitplan für die Go-Live-Nacht war ungefähr 100 Seiten lang und ungefähr 40 dieser Seiten enthielten Notfall-Panik-Kontaktdaten aller beteiligten Personen. Dieser Kunde hat mich sehr beeindruckt.
Oder könnten Sie tun , was wir tun, die herumlaufen und das tun , was die jüngste Beschwerde / Fehlerbericht ist, und rufen Sie diesen agil.
quelle
Sie beginnen mit den Worten:
Das ist falsch. Diese Dichotomie wurde von der agilen Community konstruiert, um einen Gegner zu schaffen, gegen den man sich positionieren kann. Bevor Agile in Mode kam, sprachen die Leute über eine Vielzahl unterschiedlicher Ansätze beim Erstellen von Software. Sie existieren noch heute, aber irgendwie werden sie oft von agilen Befürwortern zu einem großen Chaos namens "Wasserfall" zusammengefasst.
Ich benutze OPEN / Metis und seine Varianten seit über 10 Jahren mit großem Erfolg. Es ist definitiv nicht wendig und definitiv kein Wasserfall. Tausende von Entwicklern erstellen täglich äußerst komplexe Software für Flugzeuge, lebenswichtige Systeme, Bankgeschäfte usw. mit nicht agilen Methoden.
Ja, natürlich gibt es eine Alternative zu Agilität.
quelle
Ja, abhängig von Ihrer Problemdomäne sind verschiedene Softwareentwicklungstechniken möglich. Es ist "Pferde für Kurse".
Sie schreiben beispielsweise Software zur Steuerung eines Kernkraftwerks oder zum Fahren des NASA-Space Shuttles. Diese Art von Problemdomäne eignet sich wahrscheinlich besser für einen Wasserfallansatz (oder einen noch strengeren Ansatz). Sie möchten möglichst alle Probleme im Vorfeld lösen (oder BOOM!).
Erstellen Sie die neueste Web 2.0 / 3.0 / Buzzy-Marketing-Term-Benutzeroberfläche? Agile ist ein viel besserer Weg (Sie brauchen das schnelle Feedback und die schnelle Änderung).
Es gibt, was ich Software-Handwerksprinzipien nennen würde, die immer noch angewendet werden können, unabhängig davon, wie die Methodik lautet:
und mehr.
Was auch immer Sie tun, hören Sie nicht auf die Eiferer auf beiden Seiten der Gleichung, tun Sie, was für Sie, Ihr Team und Ihre Problemdomäne richtig ist.
quelle
Das Problem ergibt sich aus der Komplexität der Software. Wasserfall eignet sich hervorragend für Dinge wie Brückenbau und Straßenbau, da sich die Physik einfach nie ändert. Sicher, irgendwann werden wir einen neuen Asphalt entwickeln, aber er wird die Art und Weise, wie Straßen gebaut werden, nicht revolutionieren. Der Stahl in der Aufhängung einer Brücke hat entweder die richtige Größe oder nicht. Sie können ein echtes Bauprojekt nicht so kludgen oder stumpfen wie Sie es mit Software können.
Software Änderungen. Software ändert sich schnell. Moores Gesetz besagt, dass sich die Anzahl der Transistoren auf einem Chip alle 18 bis 24 Monate verdoppelt. Folglich verdoppelt sich auch die Anzahl der Codezeilen in einem Programm. Die Komplexität zwischen diesen Codezeilen steigt daher mit einem bigO von etwa 2 ^ (2t).
Software ändert sich schnell, und die Komplexität nimmt mit ihr exponentiell zu.
Wenn Sie die Kosten der Software steuern, möchten Sie nicht nur multiplikative oder additive, sondern auch exponentielle Faktoren steuern . Das Ändern von Code erhöht die Komplexität (und wird selbst im Verlauf des Projekts exponentiell komplexer) auf exponentielle Weise.
Veränderung ist unvermeidlich. Die Art der Programmierung erweitert die Sprache mit Klassen und benutzerdefinierten Methoden, wodurch die Sprache selbst geändert wird. Das kann man in keiner anderen technischen Disziplin tun (wie dem Bau von Straßen. Man erfindet keine neuen Pflastersteine, nur um eine Straße in Kansas über Kalifornien zu ebnen).
Die agile Methode bietet Ihnen auch eine Plattform für den Umgang mit zukünftigen Releases und Fehlerkorrekturen. Sie verfügen bereits über die Verwaltungstools, Prozesse und geschulten Mitarbeiter für die Entwicklung versionierter Software. Bei einer Wasserfallmethode müssten Sie Ihr Team umschulen, um auch kleinere Fehler zu beheben.
jedenfalls meine 2 cent.
quelle
Zur Beantwortung der Frage gibt es eine sinnvolle Alternative, für Software vielleicht nicht - oder zumindest im allgemeinen Fall noch nicht. Ich denke, es hängt von der Natur der Software ab. Software als Information kann kostenlos vervielfältigt werden. Im Gegensatz zu einer Brücke oder einem Haus. Dies bedeutet, dass ich mit etwas Übung gut darin werde, ein Haus zu bauen und in einem relativ einfachen Bereich zu arbeiten. An welchem Punkt warum nicht einen One-Shot-Ansatz verwenden?
Aber weil Software keine Vervielfältigungskosten verursacht, warum sollten Sie das Gleiche jemals zweimal tun? Software tendiert weg von der Fertigung. Wenn also die gesamte Software aus der Entwicklung neuer Produkte besteht, sind wir immer in einem komplexen Bereich tätig, in dem wir teilweise nicht wissen, was wir tun. Oder es ist teuer, es von vornherein zu wissen, und es ist billiger, es herauszufinden, indem man es tut. In einem komplexen, riskanten Bereich möchte ich Experimente durchführen und diese inkrementieren und iterieren.
Kernkraftwerke und Fly-by-Wire-Systeme werden häufig als Beispiele für Software angegeben, die Sie für Wasserfälle verwenden möchten. Aber wurde die Shuttle-Avionik nicht iterativ entwickelt? Wie war das kanadische und das US-amerikanische Flugsicherungssystem?
Und wenn OPEN / Metis iterativ und inkrementell ist, dann klingt es für mich so, als hätte es die agile Philosophie, auch wenn es sich nicht mit anderen gängigen agilen Praktiken verbindet.
quelle
Die Waterfall-Methode ist mit Sicherheit praktikabel und philosophisch genauso fundiert wie jeder andere Ansatz. Denken Sie daran, dass es Waterfall schon viel länger als Agile gibt, aber beachten Sie, dass dies kein Argument dafür ist, ob eine Methode besser ist als eine andere.
Sie verwenden die Waterfall-Methode, wenn Sie ein klares Verständnis für die gesamte Problemdomäne haben und wissen, was der Kunde mit einem Softwarepaket erreichen möchte. Wahrscheinlich haben Sie bei Vertragsabschluss einen Festpreis angegeben, und Ihr Kunde ist sich dessen bewusst, dass er nicht von den vereinbarten Anforderungen abweichen kann. Ihr Prozess durchläuft streng genommen eine Reihe von Abmeldungen zwischen den verschiedenen Entwicklungsphasen, und es kommt häufig vor, dass jede Phase von einem anderen Team - manchmal sogar von einem anderen Unternehmen - abgeschlossen wird, was möglicherweise nicht unbedingt der Fall ist Kontakt mit den anderen. Sie sehen Waterfall häufig in Militär- und Regierungsprojekten, wenn sie an externe Auftragnehmer vergeben werden. Wenn Waterfall und andere ähnliche Ansätze einen schlechten Ruf haben, ist dies der Fall, wenn Entwickler auf Probleme stoßen. B. eine schlechte Schätzung, Zeitpläne ohne Ausfallzeiten oder ein schlechtes oder unvollständiges Verständnis der Problemdomäne. Das Problem ist nie wirklich ein Fehler der Methodik, sondern in der Anwendung.
Der Vergleich zwischen Agile und einer beliebigen Methode ist falsch. Agile ist keine Methodik, es ist eine Philosophie, oder es ist besser zu sagen, dass es ein Überbegriff ist, der eine andere Sichtweise auf die Entwicklung von Software darstellt. Eine Methodik ist nur ein Werkzeug, und als solches ist ihr Wert immer geringer als der der Individuen und Interaktionen, die den Kern dessen ausmachen, was es heißt, agil zu sein .
Jede Möglichkeit, Änderungen zu minimieren, ist sowohl für den Entwickler als auch für den Kunden von Nutzen. Änderungen können dazu führen, dass ein Zeitplan verrutscht oder Funktionen ausgelassen werden, um einen Zeitplan einzuhalten. So steuern Sie die Auswirkungen von Änderungen, die sich auf den Wert Ihrer Projekte auswirken.
Ihre Praktiken können bei der Verwaltung von Änderungen hilfreich sein oder sie können Änderungen vollständig ignorieren. Was zählt, ist die Kombination Ihrer Entwicklungspraktiken und das Management Ihrer Beziehung zu Ihren Kunden und ob diese Dinge für alle Beteiligten effektiv zusammenarbeiten.
Diejenigen von uns, die in jeder Hinsicht agil sind, verstehen, dass Sie eine Methode wählen, die für Sie funktioniert. Wenn Sie einen bestimmten Ansatz mögen, folgen Sie ihm. Wenn es nicht ganz Ihren Bedürfnissen entspricht, ändern Sie es. Bei der Erstellung von Software kommt es darauf an, die vorhandenen Ressourcen optimal zu nutzen und die Praktiken zu minimieren, die zu einem Scheitern Ihres Projekts führen können. Oft müssen Sie die Methode an die Anforderungen anpassen bestimmtes Projekt zur Hand.
Es ist wirklich eine Sache, "Ok, jetzt sind wir agil" zu sagen und eine ganz andere, nach der Philosophie zu leben und zu arbeiten, die Agile ist. Ob Sie Wasserfall, Inkremental, Spirale, SCRUM, XP, FDD, oder jede andere Methode, sind Sie im Grunde Agile , wo Sie Wert:
und wo Sie Ihre Werkzeuge, Methoden und Ihre Erfahrungen zusammenbringen, um diese Werte erfolgreich anzuwenden.
quelle
Ja, Wasserfall-, Spiral-, iterative und andere hybride Prozessmodelle sind alle realisierbar, aber Veränderungen sind unvermeidlich. Bei einem Prozess geht es nicht nur darum, wie mit Veränderungen umzugehen ist, und (ich behaupte, dass) die wichtigste Determinante ist, wie gut Sie das Problem kennen / verstehen und wie genau Sie planen und vorhersagen können.
Die Aussage, dass "die beiden vorherrschenden Methoden für die Softwareentwicklung Wasserfall und Agilität sind", ist nicht sinnvoll, da es ein Spektrum von Softwareentwicklungsprozessen gibt und viele Unternehmen ihre eigene Version des Prozessmodells synthetisieren, die sich häufig für ein bestimmtes Projekt ändert. Es gibt mehr als zwei praktikable Ansätze für die Softwareentwicklung. Obwohl Waterfall und Agile dazu neigen, auf entgegengesetzte Enden des "Änderungs" -Spektrums zu fallen, ist es vernünftig, diese konkurrierenden Methoden wie folgt zu bezeichnen:
Wasserfall sagt: Änderung ist kostspielig, also sollte sie herabgesetzt werden.
Agile sagt: Veränderung ist unvermeidlich, also macht Veränderung billig.
Aber das ist nicht die ganze Geschichte. Unternehmen müssen planen und vorhersagen können, aber Software ist ein kreativer Prozess, und Schätzungen sind oft falsch. Erinnern Sie sich an das gut - schnell - billige Dreieck? Fügen Sie eine vierte Dimension hinzu, Process, und Sie stellen fest, dass die Reduzierung des Prozessaufwands auch den Zeitplan komprimieren kann, wenn sich die Schätzungen als falsch herausstellen und ein Projekt in Gefahr ist, sich zu verzögern. Software ist ein fungibler (veränderlicher) Prozess, und Agile, Iterative, Spiral bieten alle die Möglichkeit, in kürzeren Intervallen inkrementelle Funktionen bereitzustellen.
Wasserfall- und andere anforderungsgesteuerte Prozessmodelle verfügen über Steuerelemente für den Umgang mit Änderungen. Es ist daher ungenau zu sagen, dass Wasserfall Änderungen minimiert, genauer gesagt, erkennt und verwaltet und die Auswirkungen dieser Änderungen kommuniziert (da Änderungen Auswirkungen auf den Zeitplan haben, wenn Sie dies tun) Anforderungen und Design haben). Wenn Sie ein Produkt erstellen oder Anforderungen (Funktionen) vollständig definieren müssen, werden Sie zu einem der Hybridmodelle geleitet.
Und wenn Schätzungen falsch sind, wird häufig der Prozess (der vierte Abschnitt des Eisendreiecks) geopfert, um den Zeitplan einzuhalten.
quelle
Ausgereifte agile und Wasserfall-Ansätze sind nicht voneinander zu unterscheiden. Ihre Annahme über das Ziel des Wasserfallansatzes ist falsch. Beide haben das Ziel, hochwertige Software zu produzieren. Wenn Sie nicht über eine solide Entwicklungsansatz für die haben Unternehmen als Ganzes, müssen Sie sehen , welchen Ansatz die geringste Menge an Reibung Annahme liefern wird. Letztendlich sind kurze Entwicklungszyklen, ein solides QA-Team und ein Unternehmen, das die Entwicklung vorantreibt, das Wichtigste, um erstklassige Software zu produzieren.
quelle