Agile Softwareentwicklung: 5.1 Umgang Mit Veränderung
Agile Softwareentwicklung: 5.1 Umgang Mit Veränderung
com
Softwaretechnik [15CS42]
5. AGILE SOFTWAREENTWICKLUNG
5.1 Umgang mit Veränderung
Die Systemanforderungen ändern sich, während das Unternehmen, das das System beschafft, darauf reagiert.
Es gibt zwei verwandte Ansätze, die verwendet werden können, um die Kosten für Nacharbeiten zu reduzieren:
mit den Kunden. Sie können mit dem Prototyp experimentieren und ihn verfeinern.
Anforderungen vor der Verpflichtung zu hohen Softwareproduktionskosten.
2. Änderungs-Toleranz, bei der der Prozess so gestaltet ist, dass Änderungen vorgenommen werden können
zu relativ niedrigen Kosten untergebracht. Dies beinhaltet normalerweise irgendeine Form von
inkrementelle Entwicklung.
Es gibt 2 Möglichkeiten, mit Veränderungen und sich ändernden Systemanforderungen umzugehen.
1. Systemprototyping, bei dem eine Version des Systems oder eines Teils des Systems ist
schnell entwickelt, um die Anforderungen des Kunden und die Machbarkeit zu überprüfen
einige Designentscheidungen. Dies unterstützt die Vermeidung von Änderungen, da es den Benutzern ermöglicht, zu
Experimentieren Sie mit dem System vor der Lieferung und verfeinern Sie so Ihre Anforderungen.
5.1.1 Prototyping
Ein Prototyp ist eine erste Version eines Softwaresystems, das zur Demonstration verwendet wird
Konzepte, Designoptionen ausprobieren und mehr über das Problem und seine möglichen
Lösungen.
Ein Softwareprototyp kann in einem Softwareentwicklungsprozess verwendet werden, um zu helfen
Änderungen antizipieren, die erforderlich sein könnten:
Prof. Mamatha E, Assist. Prof., Abt. für ISE, SVIT, Bengaluru Page 1
herunterladen von vtuloop.com
Systemprototypen ermöglichen es den Nutzern, zu sehen, wie gut das System ihre Arbeit unterstützt.
Sie könnten neue Ideen für Anforderungen erhalten und Bereiche von Stärken und Schwächen finden in
Die Software. Sie können dann neue Systemanforderungen vorschlagen.
Ein Systemprototyp kann verwendet werden, während das System entworfen wird, um durchzuführen
Experimente entwerfen, um die Machbarkeit eines vorgeschlagenen Designs zu überprüfen.
Zum Beispiel kann ein Datenbankdesign prototypisiert und getestet werden, um zu überprüfen, ob es unterstützt.
Die Ziele des Prototypings sollten zu Beginn des Prozesses eindeutig festgelegt werden.
Diese könnten darin bestehen, ein System zu entwickeln, um die Benutzeroberfläche zu prototypisieren, ein System zu entwickeln
Softwaretechnik [15CS42]
2. Schnelle Veränderungen während der Entwicklung bedeuten unvermeidlich, dass der Prototyp ...
undokumentiert. Die einzige Entwurfsspezifikation ist der Prototypcode. Das ist nicht
gut genug für langfristige Wartung.
3. Die Änderungen, die während der Prototypentwicklung vorgenommen wurden, haben wahrscheinlich beeinträchtigt.
Die Systemstruktur. Das System wird schwierig und teuer zu warten sein.
4. Die organisatorischen Qualitätsstandards werden normalerweise für Prototypen gelockert.
Entwicklung
5.1.2 Inkrementelle Lieferung
Inkrementelle Lieferung (Abb. 5.2) ist ein Ansatz zur Softwareentwicklung, bei dem einige
Die entwickelten Inkremente werden dem Kunden geliefert und für die Nutzung bereitgestellt in einer
Sie identifizieren, welche der Dienstleistungen am wichtigsten und welche am wenigsten wichtig sind.
zu ihnen.
Sobald die Systeminkremente identifiziert wurden, die Anforderungen an die Dienstleistungen für
im ersten Inkrement bereitgestellt werden, sind im Detail definiert und dieses Inkrement ist
entwickelt.
Während der Entwicklung kann eine weitere Anforderungsanalyse für spätere Inkremente stattfinden.
aber Änderungen der Anforderungen für den aktuellen Inkrement werden nicht akzeptiert.
dies sind Teile des echten Systems, sodass es kein erneutes Lernen gibt, wenn das gesamte
Das System ist verfügbar.
2. Kunden müssen nicht warten, bis das gesamte System geliefert wird, bevor sie
darüber profitieren kann. Der erste Anstieg erfüllt ihre kritischsten
Anforderungen, damit sie die Software sofort nutzen können.
3. Der Prozess bewahrt die Vorteile der inkrementellen Entwicklung, da er
Sollte relativ einfach sein, Änderungen in das System zu integrieren.
4. Da die Dienstleistungen mit der höchsten Priorität zuerst geliefert werden und dann Inkremente folgen
das System. Da die Anforderungen nicht im Detail definiert sind, bis ein Inkrement zu
Es kann schwierig sein, gemeinsame Einrichtungen zu identifizieren, die benötigt werden.
durch alle Fortschritte.
2. Iterative Entwicklung kann auch schwierig sein, wenn ein Ersatzsystem entwickelt wird.
entwickelt. Die Nutzer wünschen sich alle Funktionen des alten Systems und sind oft
nicht bereit, mit einem unvollständigen neuen System zu experimentieren. Daher, das Bekommen
Zum Beispiel werden sich die Anforderungen weiterentwickeln und letztendlich eine Anforderung
Dies ist dann ein Input für den Design- und Implementierungsprozess.
In einem agilen Ansatz erfolgt die Iteration über Aktivitäten. Daher sind die Anforderungen
und das Design wird gemeinsam entwickelt, statt separat
Ein planorientierter Softwareprozess kann inkrementelle Entwicklung und Lieferung unterstützen.
Es ist durchaus machbar, Anforderungen zuzuordnen und das Design sowie die Entwicklung zu planen.
Phase als eine Reihe von Inkrementen.
Ein agiler Prozess ist nicht zwangsläufig kodierungsorientiert und kann einige Designs hervorbringen.
Dokumentation.
Abb. 5.3 zeigt die Unterschiede zwischen plangetriebenen und agilen Ansätzen zur Systementwicklung.
Spezifikation
Programmierer arbeiten paarweise und entwickeln Tests für jede Aufgabe, bevor sie den Code schreiben.
Alle Tests müssen erfolgreich ausgeführt werden, wenn neuer Code in das System integriert wird.
Abbildung 5.4 zeigt den XP-Prozess zur Erstellung eines Inkrements des Systems, das erstellt wird.
entwickelt.
Softwaretechnik [15CS42]
Extreme Programming umfasst eine Reihe von Praktiken, die in Abb. 5.5 zusammengefasst sind, die
System.
Menschen, nicht Prozesse, werden durch Pair Programming, kollektive unterstützt.
Eigentum des Systemcodes und ein nachhaltiger Entwicklungsprozess, der
beinhaltet keine übermäßig langen Arbeitszeiten.
Änderungen werden durch regelmäßige Systemveröffentlichungen an Kunden und einen Test-zuerst-Ansatz angenommen.
Qualität und durch die Verwendung einfacher Designs, die zukünftige Entwicklungen nicht unnötig vorwegnehmen
Änderungen am System.
Software-Engineering [15CS42]
5.3.1 Testen in XP
XP beinhaltet einen Ansatz zum Testen, der die Wahrscheinlichkeit verringert, Fehler einzuführen.
Abb. 5.6 ist eine verkürzte Beschreibung eines Testfalls, der entwickelt wurde, um zu überprüfen, dass
Die verschriebene Dosis eines Medikaments überschreitet nicht die bekannten sicheren Grenzen.
Die Rolle des Kunden im Testprozess besteht darin, Akzeptanztests zu entwickeln für
die Geschichten, die in der nächsten Version des Systems implementiert werden sollen.
Tests werden als ausführbare Komponenten geschrieben, bevor die Aufgabe implementiert wird.
Ein automatisiertes Testframework ist ein System, das es einfach macht, ausführbare Tests zu schreiben.
und eine Reihe von Tests zur Ausführung einreichen.
Testgetriebene Entwicklung und automatisiertes Testen führen in der Regel zu einer großen Anzahl von Tests.
geschrieben und ausgeführt werden.
Komplexe Benutzeroberfläche, es ist oft schwierig, Unit-Tests für den Code zu schreiben, der
implementiert die 'Anzeige-Logik' und den Workflow zwischen Bildschirmen.
Es ist schwierig, die Vollständigkeit einer Testreihe zu beurteilen. Obwohl es viele gibt
Von Systemtests kann der Testsatz möglicherweise keine vollständige Abdeckung bieten. Entscheidende Teile
des Systems möglicherweise nicht ausgeführt werden kann und somit ungetestet bleibt.
5.3.2 Paarprogrammierung
Eine weitere innovative Praxis, die in XP eingeführt wurde, ist, dass Programmierer arbeiten
in Paaren, um die Software zu entwickeln.
Es unterstützt die Idee des kollektiven Eigentums und der Verantwortung für das System.
*Es fungiert als ein informeller Prüfprozess, da jede Codezeile von
mindestens zwei Personen. Code-Inspektionen und -Überprüfungen sind sehr erfolgreich in
Es unterstützt das Refactoring, das ein Prozess zur Verbesserung der Software ist.
Die Schwierigkeit, dies in einer normalen Entwicklungsumgebung umzusetzen, besteht darin, dass
Der Aufwand für die Überarbeitung wird für langfristige Vorteile aufgewendet. Eine Person, die
Praktiken des Refactorings können als weniger effizient beurteilt werden als die einesjenigen, der einfach
Scrum schreibt die Anwendung von Programmierpraktiken wie Pair Programming nicht vor.
und testbasierte Entwicklung.
Es kann daher mit technischeren agilen Ansätzen wie XP verwendet werden, um bereitzustellen
ein Managementrahmen für das Projekt.
Es gibt drei Phasen im Scrum.
Softwaretechnik [15CS42]
Die erste Phase ist eine grobe Planungsphase, in der Sie die allgemeinen Ziele festlegen für
das Projekt und entwerfen die Softwarearchitektur.
Darauf folgt eine Serie von Sprintzyklen, bei denen jeder Zyklus ein Increment entwickelt.
des Systems.
Schließlich beendet die Projektabschlussphase das Projekt und schließt die erforderlichen ab.
Am Ende eines Sprints wird die abgeschlossene Funktionalität den Stakeholdern geliefert. Schlüssel
Sprint.
4. Sobald diese vereinbart sind, organisiert sich das Team, um die Software zu entwickeln.
Kurze tägliche Meetings, an denen alle Teammitglieder teilnehmen, werden abgehalten, um den Fortschritt zu überprüfen.
5. Am Ende des Sprints wird die geleistete Arbeit überprüft und präsentiert an
Stakeholder. Der nächste Sprintzyklus beginnt dann.
Vorteile:
Das Produkt wird in eine Reihe von handhabbaren und verständlichen
Stücke.
*Instabile Anforderungen halten den Fortschritt nicht auf.
Das gesamte Team hat Sichtbarkeit auf alles und folglich das Team
Die Kommunikation hat sich verbessert.
*Kunden sehen die pünktliche Lieferung von Inkrementen und erhalten Feedback darüber, wie die
Produkt funktioniert.
Das Vertrauen zwischen Kunden und Entwicklern wird aufgebaut und eine positive Kultur.
wird geschaffen, in dem jeder erwartet, dass das Projekt erfolgreich ist.
Große Systeme sind 'Bestandsysteme', das heißt, sie beinhalten und interagieren mit einem
Anzahl der vorhandenen Systeme. Viele der Systemanforderungen betreffen
Mit dieser Interaktion und so eignen sie sich nicht wirklich für Flexibilität und
inkrementelle Entwicklung
* Wo mehrere Systeme integriert sind, um ein System zu schaffen, ist ein erheblicher Teil
Die Entwicklung bezieht sich eher auf die Systemkonfiguration als auf die ursprüngliche
Code-Entwicklung. Dies ist nicht unbedingt mit inkrementellen Methoden kompatibel.
bestimmte Arten von Systemdokumentationen erfordern, dass sie erstellt werden, usw.
*Große Systeme haben eine lange Beschaffungs- und Entwicklungszeit. Es ist schwierig, um
kohärente Teams aufrechterhalten, die über das System in diesem Zeitraum Bescheid wissen, da,
*Große Systeme haben in der Regel eine vielfältige Gruppe von Interessengruppen. Zum Beispiel Krankenschwestern.
und Administratoren können die Endbenutzer eines medizinischen Systems sein, aber die Führungskräfte
2. Eine 'Scaling Out'-Perspektive, die sich mit der Frage beschäftigt, wie agile Methoden
Fähigkeitsniveau. In großen Organisationen wird es jedoch wahrscheinlich ein breites Spektrum geben
Fächer von Fähigkeiten und Fertigkeiten, und Menschen mit niedrigeren Fertigkeitsniveaus sind möglicherweise nicht
Ingenieurprozesse
Prinzipien:
Die höchste Priorität besteht darin, den Kunden durch frühzeitige und kontinuierliche Zufriedenheit zu gewährleisten.
Die effizienteste und effektivste Methode zur Übermittlung von Informationen an und
Innerhalb eines Entwicklungsteams ist das persönliche Gespräch
Funktionierende Software ist das wichtigste Maß für den Fortschritt
Ständige Aufmerksamkeit für technische Exzellenz und gutes Design erhöht die Agilität
Einfachheit – die Kunst, die Menge an nicht erledigter Arbeit zu maximieren – ist unerlässlich.