Iterative und inkrementelle Entwicklung

Iterative und inkrementelle Entwicklung ist eine beliebige Kombination von beidem Iteratives Design oder iterative Methode und Inkrementelles Build -Modell zum Entwicklung.

Die Verwendung der Amtszeit begann in Software-Entwicklung, mit einer langjährigen Kombination der beiden Begriffe iterativ und inkrementell[1] weithin für große Entwicklungsbemühungen vorgeschlagen. Zum Beispiel die 1985 DOD-STD-2167[2] Erwähnungen (in Abschnitt 4.1.2): "Während der Softwareentwicklung kann mehr als eine Iteration des Softwareentwicklungszyklus gleichzeitig im Gange sein." und "dieser Prozess kann als" evolutionärer Akquisition "oder" inkrementeller Build "-Ansatz beschrieben werden. In der Software wird die Beziehung zwischen Iterationen und Schritten durch das Gesamt bestimmt Softwareentwicklungsprozess.

Iteratives Entwicklungsmodell

Überblick

Eine vereinfachte Version eines typischen Iterationszyklus im agilen Projektmanagement

Die Grundidee hinter dieser Methode besteht darin, ein System durch wiederholte Zyklen (iterativ) und in kleineren Teilen gleichzeitig (inkrementell) zu entwickeln, was zulässt Softwareentwickler zu nutzen, was während der Entwicklung früherer Teile oder Versionen des Systems gelernt wurde. Das Lernen kommt sowohl aus der Entwicklung als auch aus der Verwendung des Systems, sofern möglichst mögliche Schlüsselschritte im Prozess mit einer einfachen Implementierung einer Teilmenge der Softwareanforderungen und verbessern die sich entwickelnden Versionen iterativ, bis das gesamte System implementiert ist. Bei jedem WiederholungEs werden Designänderungen vorgenommen und neue funktionale Funktionen hinzugefügt.[3]

Das Verfahren selbst besteht aus dem Initialisierungsschritt, dem Iterationsschritt und der Projektkontrollliste. Der Initialisierungsschritt erstellt eine Basisversion des Systems. Das Ziel für diese erste Implementierung ist es, ein Produkt zu erstellen, auf das der Benutzer reagieren kann. Es sollte eine Stichprobe der wichtigsten Aspekte des Problems bieten und eine Lösung bieten, die einfach genug ist, um sie leicht zu verstehen und zu implementieren. Um den Iterationsprozess zu leiten, wird eine Projektkontrollliste erstellt, die eine Aufzeichnung aller Aufgaben enthält, die ausgeführt werden müssen. Es enthält Elemente wie neue Funktionen und Bereiche der Neugestaltung der vorhandenen Lösung. Die Kontrollliste wird ständig als Ergebnis der Analysephase überarbeitet.

Die Iteration beinhaltet die Neugestaltung und Implementierung der Iteration soll einfach, unkompliziert und modular sein und in dieser Phase neu gestaltet oder als Aufgabe der Projektsteuerungsliste hinzugefügt.[Klarstellung erforderlich] Das Ausführungsgrad der Entwurfsdetails wird nicht durch den iterativen Ansatz diktiert. In einem leichten iterativen Projekt kann der Code die Hauptquelle von darstellen Dokumentation vom System; In einem kritischen iterativen Projekt ist jedoch eine formelle Software -Design -Dokument könnte genutzt werden. Die Analyse einer Iteration basiert auf dem Feedback der Benutzer und den verfügbaren Programmanalyseinrichtungen. Es beinhaltet die Analyse der Struktur, Modularität, Benutzerfreundlichkeit, Zuverlässigkeit, Effizienz und Leistung von Zielen. Die Projektkontrollliste wird angesichts der Analyseergebnisse geändert.

Iterative Entwicklung.

Phasen

Inkrementelle Entwicklungsbetriebe inkrementiert die Systemfunktionalität in Schritte (Portionen). In jedem Inkrement wird ein Stück Funktionalität geliefert Cross-Discipline Arbeit, von der Bedarf zum Einsatz. Das Einheitlicher Prozess Gruppeninkremente/Iterationen in Phasen: Inception, Ausarbeitung, Konstruktion und Übergang.

  • Inception identifiziert Projektumfang, Anforderungen (funktional und nicht funktionsfähig) und Risiken auf hohem Niveau, detailliert jedoch ausreichend, dass die Arbeit geschätzt werden kann.
  • Die Ausarbeitung liefert eine funktionierende Architektur, die die obersten Risiken mindert und die nicht funktionierenden Anforderungen erfüllt.
  • Die Konstruktion füllt die Architektur inkrementell mit produktionsbereiteten Code aus, der aus Analyse, Design, Implementierung und Prüfung der funktionalen Anforderungen erstellt wird.
  • Der Übergang liefert das System in die Produktionsbetriebsumgebung.

Jede der Phasen kann in 1 oder mehr Iterationen unterteilt werden, die normalerweise eher zeitlich als feature-boxiert sind. Architekten und Analysten arbeiten vor Entwicklern und Tester eine Iteration, um ihren Arbeitsprodukt-Rückstand voll zu halten.

Verwendung/Geschichte

Viele Beispiele für den frühen Gebrauch sind in bereitgestellt Craig Larman und Victor Basili's Artikel "Iterative und inkrementelle Entwicklung: eine kurze Geschichte",[4] Mit einem der frühesten sind die 1960er Jahre der NASA Projekt Mercury.

Einige dieser Quecksilberingenieure bildeten später a Neue Division innerhalb von IBM, wo "ein weiteres frühes und auffälliges Beispiel für einen großen IID -Erfolg [das Herz der Space Shuttle -Software der NASA war - das primäre Avionik -Softwaresystem, das [sie] von 1977 bis 1980 errichtete Iterationen über 31 Monate, durchschnittlich acht Wochen pro Iteration. Ihre Motivation, den Lebenszyklus des Wasserfalls zu vermeiden, bestand darin, dass sich die Anforderungen des Shuttle -Programms während des Softwareentwicklungsprozesses änderten. "[4]

Einige Organisationen, wie das US -Verteidigungsministerium, bevorzugen iterative Methoden, beginnend mit Mil-std-498 "Eindeutig die Evolutionsakquisition und IID fördern".

In der im Jahr 2000 veröffentlichten DOD -Anweisung 5000.2 wurde eine klare Präferenz für IID angegeben:

Es gibt zwei Ansätze, evolutionär und einzelner Schritt [Wasserfall], um die volle Fähigkeit zu ermöglichen. Ein evolutionärer Ansatz wird bevorzugt. … [In diesem] Ansatz wird die ultimative Fähigkeit, dem Benutzer bereitgestellt zu werden Frühere Entwicklung. Es kann auch in Phasen erfolgen.

Jüngste Überarbeitungen von Dodi 5000.02 beziehen sich nicht mehr auf "Spiralentwicklung", sondern befürworten den allgemeinen Ansatz als Grundlinie für softwarintensive Entwicklung/Beschaffungsprogramme.[5] zusätzlich Die Agentur der Vereinigten Staaten für internationale Entwicklung (USAID) verwendet außerdem einen iterativen und inkrementellen Entwicklungsansatz für seinen Programmierzyklus, um internationale Entwicklungsprojekte zu entwerfen, zu überwachen, zu bewerten, zu lernen und anzupassen, mit einem Projektmanagementansatz, der sich auf die Einbeziehung der Zusammenarbeit, des Lernens und der Anpassungsstrategien zur IT -ITRAMING und der Anpassung der Programmierung konzentriert.[6]

Kontrast zur Wasserfallentwicklung

Die Hauptursache für die Misserfolge für Softwareentwicklungsprojekte ist die Wahl des Modells und sollte also mit einer großen Sorgfalt erfolgen.[vage][7]

Zum Beispiel die Wasserfallentwicklung Das Paradigma vervollständigt die projektweiten Arbeitsprodukte jeder Disziplin in einem Schritt, bevor er in einem folgenden Schritt zur nächsten Disziplin übergeht. Der Geschäftswert wird auf einmal und erst am Ende des Projekts geliefert, während Backtracking[Klarstellung erforderlich] ist in einem iterativen Ansatz möglich. Im Vergleich der beiden Ansätze werden einige Muster entstehen:

  • Benutzerbeteiligung: Im Wasserfallmodell ist der Benutzer in zwei Phasen des Modells beteiligt, d. H. Anforderungen und Akzeptanztests sowie möglicherweise die Erstellung von Materialdaten für Benutzerausbildung. Während im inkrementellen Modell der Kunde in jeder Phase beteiligt ist.
  • Variabilität: Die Software wird dem Benutzer erst nach Abschluss der Erstellungsphase des Lebenszyklus für Benutzerakzeptanztests geliefert. Andererseits wird jedes Inkrement an den Benutzer geliefert, und nach der Genehmigung des Benutzers darf der Entwickler in Richtung des nächsten Moduls bewegen.
  • Humanressourcen: Im inkrementellen Modell sind im Vergleich zum Wasserfallmodell möglicherweise weniger Mitarbeiter erforderlich.
  • Zeitbeschränkung: Ein Betriebsprodukt wird nach Monaten geliefert, während das Produkt im inkrementellen Modell innerhalb weniger Wochen dem Benutzer gegeben wird.
  • Projektgröße: Wasserfallmodell ist für kleine Projekte ungeeignet, während das inkrementelle Modell für kleine und große Projekte geeignet ist.

Implementierungsrichtlinien

Zu den Richtlinien, die die Software -Implementierung und -analyse vorantreiben, gehören:

  • Jede Schwierigkeit im Design, Codieren und Testen einer Modifikation sollte die Notwendigkeit einer Neugestaltung oder Neukodierung signalisieren.
  • Modifikationen sollten leicht in isolierte und leicht zu findende Module passen. Wenn dies nicht der Fall ist, wird möglicherweise eine Neugestaltung benötigt.
  • Änderungen an Tabellen sollten besonders einfach zu machen sein. Wenn eine Tabellenänderung nicht schnell und einfach erfolgt, ist eine Neugestaltung angezeigt.
  • Änderungen sollten im Fortschreiten der Iterationen einfacher zu machen. Wenn dies nicht der Fall ist, gibt es ein grundlegendes Problem wie einen Designfehler oder eine Verbreitung von Patches.
  • Patches sollten normalerweise nur für ein oder zwei Iterationen existieren. Möglicherweise sind Patches erforderlich, um eine Neugestaltung während einer Implementierungsphase zu vermeiden.
  • Die vorhandene Implementierung sollte häufig analysiert werden, um festzustellen, wie gut sie den Projektzielen misst.
  • Programmanalyseinrichtungen sollten verwendet werden, wenn die Analyse von Teilimplementierungen zur Verfügung steht.
  • Die Benutzerreaktion sollte eingeholt und analysiert werden, um bei der aktuellen Implementierung Mängeln zu belegen.

Verwendung in Hardware und eingebetteten Systemen

Während der Begriff iterativ und inkrementell Die Entwicklung begann in der Softwareindustrie, viele Hardware- und eingebettete Software Entwicklung Bemühungen sind iterative und inkrementelle Techniken.

Beispiele hierfür sind in einer Reihe von Branchen zu sehen. Ein Sektor, der kürzlich von dieser Denkverschiebung im Wesentlichen betroffen war Space Start Industrie, mit wesentliche neue Wettbewerbskräfte bei der Arbeit, die durch schnellere und umfangreichere technologische Innovation verursacht wird, die durch die Gründung von zur Gründung von Privatgelände Unternehmen, die Raumstart verfolgen. Diese Unternehmen, wie z. SpaceX[8] und Rocket Lab,[9] bieten jetzt beide kommerzielle Orbital -Startdienste in den letzten zehn Jahren an, was nur sechs Nationen vor einem Jahrzehnt gemacht hatten[10] vor. Neue Innovationen in der Technologieentwicklungsansätze, -preis- und Serviceangebote - einschließlich der Fähigkeit, die erst seit 2016 existiert, um auf einem in den Weltraum zu fliegen zuvor gewachsene (wiederverwendbare) Booster-Stufe- Verringern Sie den Preis für den Zugang zum Raum.[11][8]

SpaceX war explizit in Bezug auf seine Bemühungen, iterative Designpraktiken in die Weltraumindustrie zu bringen, und nutzt die Technik für Raumfahrzeuge, Trägerfahrzeuge, Elektronik und Avionik sowie operative Flughardwareoperationen.[12]

Während sich die Branche zu verändern begonnen hat, beginnen andere Startkonkurrenten, ihre zu ändern langfristige Entwicklungspraktiken mit Regierungsbehörden auch. Zum Beispiel die großen USA Dienstanbieter starten United Launch Alliance (ULA) begann 2015 ein jahrzehntelanges Projekt zur Umstrukturierung seines Startgeschäfts-Reduzierung zwei lauNCH ​​-Fahrzeuge zu eines- Ein iterativer und inkrementeller Ansatz, um zu a zu gelangen teilweise respektierbar und viel kostengünstigeres Startsystem in den nächsten zehn Jahren.[13]

Siehe auch

Anmerkungen

  1. ^ Larman, Craig (Juni 2003). "Iterative und inkrementelle Entwicklung: Eine kurze Geschichte" (PDF). Computer. 36 (6): 47–56. doi:10.1109/mc.2003.1204375. ISSN 0018-9162. S2CID 9240477. Wir haben bereits 1957 in Los Angeles unter der Leitung von Bernie Dimsdale [bei IBM's ServiceBureau Corporation] inkrementelle Entwicklung durchgeführt. Er war ein Kollege von John von NeumannAlso hat er es dort vielleicht gelernt oder es als völlig natürlich angenommen. Ich erinnere mich, dass Herb Jacobs (hauptsächlich, obwohl wir alle teilgenommen haben), die eine große Simulation für Motorola entwickelten, bei der die verwendete Technik soweit ich beurteilen kann ... '
  2. ^ DOD-STD-2167 Defense Systems Software Development (04. Juni 1985) auf jedemspec.com
  3. ^ Farcic, Viktor (21. Januar 2014). "Softwareentwicklungsmodelle: Iterative und inkrementelle Entwicklung". Technologiegespräche.
  4. ^ a b Iterative und inkrementelle Entwicklung: Eine kurze Geschichte, Craig Larman und Victor Basili, IEEE Computer, Juni 2003
  5. ^ Kendall, Frank; Gilmore, J. Michael; Halvorsen, Terry (2017-02-02). "Betrieb des Verteidigungsförderungssystems" (PDF). DOD -Ausgabe. Unter Verteidigungsminister für Akquisition, Technologie und Logistik. S. 12–14. Archiviert von das Original (PDF) Am 2017-08-09. Abgerufen 2017-08-09.
  6. ^ DU SAGTEST. "Anzeigen Kapitel 201 Programmzyklus Betriebspolitik". Abgerufen am 19. April 2017
  7. ^ "Unterschied zwischen Wasserfall und inkrementellem Modell". 19. Mai 2016.[Permanent Dead Link]
  8. ^ a b Belfiore, Michael (9. Dezember 2013). "The Rocketeer". Außenpolitik. Abgerufen 11. November 2018.
  9. ^ "EXKLUSIVE INNEHMEN SIE AUF ROCKET LABS ROCKET LABS PREISE-SEHR-MEGA-FAZT!". Alltag Astronaut. 11. Oktober 2018. Abgerufen 11. November 2018.
  10. ^ Clark, Stephen (28. September 2008). "Süßer Erfolg endlich für Falcon 1 Rocket". Raumflug jetzt. Abgerufen 11. November 2018. Die erste privat entwickelte Flüssigkeits-Rakete, die erfolgreich um den Umlaufbahn gelangt.
  11. ^ Berger, Eric (2018-06-25). "Russlands Protonenrakete, die vor Apollo liegt, wird schließlich aufhören, technische Probleme zu fliegen, steigen von SpaceX Faktoren bei.". Arstechica. Abgerufen 2018-06-26. Der schnelle Anstieg von kostengünstigen Alternativen wie SpaceXs Falcon 9-Rakete hat dazu geführt, dass die Anzahl der Protonen in einem bestimmten Jahr von acht bis zu nur einem oder zwei Uhr abnimmt.
  12. ^ Fernholz, Tim (21. Oktober 2014). "Was es für Elon Musks SpaceX brauchte, um Boeing zu stören, die NASA zu überspringen und ein ernstes Raumfahrtunternehmen zu werden". Quarz. Abgerufen 11. November 2018. Aber SpaceX betrachtete sich immer als Technikfirma, und ihre Zusammenstöße mit der NASA nahmen oft eine Form von Computerentwicklern an-oder jeder, der mit der unruhigen Einführung von Gesundheitswesen vertraut ist. SpaceX folgte einem iterativen Entwurfsprozess und verbesserte die Prototypen als Reaktion auf Tests kontinuierlich. Traditionelle Produktverwaltung fordert einen robusten Plan, der bis zur Fertigstellung ausgeführt wird, ein Rezept für Kostenüberschreitungen.
  13. ^ Gruss, Mike (2015-04-24). "Evolution eines Plans: ULA Execs buchstabieren Logik hinter Vulcan Design Choices". Space News. Abgerufen 25. April 2015. Die Ankündigung von ULA am 13. April, dass es eine Rakete entwickeln würde, die Vulcan unter Verwendung eines inkrementellen Ansatzes namens Vulcan entwickeln würde, dessen erste Iteration im Wesentlichen ein Atlas 5 ist, der mit einer neuen ersten Stufe ausgestattet ist.

Verweise