Adaptive Softwareentwicklung - Konzepte
In diesem Kapitel werden wir die verschiedenen Konzepte der adaptiven Softwareentwicklung verstehen.
Theorie komplexer adaptiver Systeme (CAS)
Brian Arthur und seine Kollegen vom Santa Fe Institut nutzten die CAS-Theorie (Complex Adaptive Systems), um das Verständnis von Physik, Biologie, Evolution und Wirtschaft zu revolutionieren.
Brian Arthur gipfelte in seinen mehr als zwei Jahrzehnten des Versuchs, Mainstream-Ökonomen davon zu überzeugen, dass ihre Ansicht, die von grundlegenden Annahmen über sinkende Renditen, Gleichgewicht und deterministische Dynamik dominiert wird, nicht mehr ausreicht, um die Realität zu verstehen. Die neue Welt ist geprägt von steigenden Erträgen, Instabilität und Unfähigkeit, Ursache und Wirkung zu bestimmen.
Die beiden Welten unterscheiden sich in Verhalten, Stil und Kultur. Sie fordern -
- Verschiedene Managementtechniken
- Verschiedene Strategien
- Anderes Verständnis
Komplexe Softwareentwicklung
Mit dem explodierenden Umfang von Softwareanwendungen stoßen selbst die Softwareentwicklungsorganisationen auf ähnliche Widersprüche wie oben erwähnt.
One World wird durch die deterministische Entwicklung repräsentiert, die aus Managementpraktiken abgeleitet ist, die auf den Grundlagen der Stabilität und Vorhersehbarkeit basieren (was in Arthurs Worten eine Verringerung der Rendite bedeutet).
Die Zweite Welt ist durch die Branchen vertreten, die von rückläufigen zu steigenden Renditeumgebungen übergehen, die unvorhersehbar, nichtlinear und schnell sind.
Um die Probleme dieser zweiten Welt anzugehen, bot Jig Highsmith ein Framework an, Adaptive Software Development, das sich von der deterministischen Softwareentwicklung unterscheidet.
Die adaptive Softwareentwicklung konzentriert sich auf die Adressierung der komplexen Systeme -
Adaptive Softwareentwicklung für den Entwicklungslebenszyklus.
Adaptive Managementtechniken erfordern eine andere Denkweise als herkömmliche Projektmanagementpraktiken.
In diesem Tutorial können Sie beide Implementierungen verstehen.
Die adaptive Softwareentwicklung (ASD) basiert auf zwei Perspektiven:
Konzeptionelle Perspektive basierend auf der Theorie der komplexen adaptiven Systeme (CAS), wie im ersten Abschnitt dieses Kapitels angegeben.
Praktische Perspektive basierend auf
Langjährige Erfahrung mit deterministischen Softwareentwicklungsmethoden.
Beratung, Übung und Schreiben über RAD-Techniken (Rapid Application Development); und Zusammenarbeit mit High-Tech-Softwareunternehmen bei der Verwaltung ihrer Produktentwicklung.
In diesem Kapitel lernen Sie die konzeptionelle Perspektive der adaptiven Softwareentwicklung kennen.
CAS-Konzepte (Complex Adaptive Systems)
Die Theorie der komplexen adaptiven Systeme (CAS) hat viele Konzepte. Die adaptive Softwareentwicklung basiert auf zwei dieser Konzepte:
- Emergence
- Complexity
Entstehung
In komplexen Projekten zur Entwicklung von Softwareprodukten sind die Ergebnisse von Natur aus unvorhersehbar. Erfolgreiche Produkte entstehen jedoch ständig aus solchen Umgebungen.
Dies kann durch Emergenz geschehen, wie in der Theorie der komplexen adaptiven Systeme (CAS) dargestellt. Es kann anhand eines einfachen Beispiels das Flockverhalten von Vögeln verstanden werden.
Wenn Sie einen Vogelschwarm beobachten, bemerken Sie, dass -
Jeder Vogel versucht es
Halten Sie einen Mindestabstand zu anderen Objekten in der Umgebung ein, einschließlich anderer Vögel.
Passen Sie die Geschwindigkeiten an die Vögel in der Nachbarschaft an.
Bewegen Sie sich in Richtung des wahrgenommenen Schwerpunkts der Vögel in seiner Nachbarschaft.
Es gibt keine Verhaltensregeln für die Gruppe. Die einzigen Regeln betreffen das Verhalten einzelner Vögel.
Es gibt jedoch ein emergentes Verhalten, das Schwärmen von Vögeln. Wenn fehlerhafte Vögel aufholen, spaltet sich die Herde um Hindernisse und Reformen auf der anderen Seite.
Dies zeigt die Notwendigkeit der schwierigsten mentalen Modelländerungen in der adaptiven Entwicklung - von der Verwaltung und Organisation dieser individuellen Freiheit bis zur Vorstellung, dass eine kreative neue Ordnung unvorhersehbar aus spontaner Selbstorganisation hervorgeht.
Neben der Entwicklung ist die Entstehung auch aus Managementsicht das wichtigste Konzept.
Komplexität
Im Kontext der Softwareentwicklung geht es bei Komplexität um -
Die Personen eines Teams wie Entwickler, Kunden, Anbieter, Wettbewerber und Aktionäre, ihre Anzahl und ihre Geschwindigkeit.
Größe und technologische Komplexität.
Adaptive Softwareentwicklungspraktiken
Die adaptive Softwareentwicklung bietet eine andere Perspektive auf Softwareverwaltungspraktiken. In den folgenden Abschnitten können Sie die beiden wichtigen Vorgehensweisen - Qualität und RAD - verstehen, die sich beide auf die Erfassung von Anforderungen auswirken.
Einzelheiten zu allen Vorgehensweisen finden Sie im Kapitel Adaptive Software Development Practices in diesem Lernprogramm.
Qualität
In einer komplexen Umgebung funktioniert die uralte Praxis "Mach es gleich beim ersten Mal richtig" nicht, da du nicht vorhersagen kannst, was am Anfang richtig ist. Sie müssen das Ziel haben, den richtigen Wert zu erzielen. In einer komplexen Umgebung sind die Kombinationen und Permutationen von Wertkomponenten wie Umfang (Funktionen, Leistung, Fehlerstufen), Zeitplan und Ressourcen jedoch so umfangreich, dass es niemals einen optimalen Wert geben kann. Daher liegt der Schwerpunkt auf der Verlagerung, um den besten Wert auf dem Wettbewerbsmarkt zu erzielen.
RAD-Praktiken
RAD-Praktiken umfassen im Allgemeinen eine Kombination der folgenden:
- Evolutionslebenszyklus
- Kundenfokusgruppen, JAD-Sitzungen, technische Bewertungen
- Projektmanagement mit Zeitrahmen
- Kontinuierliches Software-Engineering
- Engagierte Teams mit Kriegsräumen
Die RAD-Projekte haben einen inhärenten adaptiven, aufstrebenden Geschmack. Viele IT-Organisationen sind gegen RAD. Microsoft und andere haben jedoch unglaublich große und komplexe Software mit Techniken erstellt, die mit RAD vergleichbar sind, da dies Fragen zu ihrer grundlegenden Weltanschauung aufwirft.
RAD-Praktiken und Microsoft-Prozesse sind Beispiele für die adaptive Entwicklung in Aktion. Wenn Sie ihnen ein Label geben (dh Adaptive Development) und erkennen, dass es immer mehr wissenschaftliche Erkenntnisse gibt (dh CAS-Theorie), erklären Sie, warum sie funktionieren. Dies sollte eine Grundlage für eine umfassendere Anwendung dieser Praktiken bilden.