Adaptive Softwareentwicklung - Konzepte

In diesem Kapitel werden die verschiedenen Konzepte der adaptiven Softwareentwicklung erläutert.

Komplexe Adaptive Systeme (CAS) Theorie

Brian Arthur und seine Kollegen vom Santa Fe Institute haben die Theorie der Komplexen Adaptiven Systeme (CAS) verwendet, um das Verständnis von Physik, Biologie, Evolution und Ökonomie zu revolutionieren.

Brian Arthur gipfelte in seinem mehr als zwei Jahrzehnte dauernden Versuch, etablierte Ökonomen davon zu überzeugen, dass ihre Sichtweise, die von den fundamentalen Annahmen sinkender Renditen, des Gleichgewichts und der deterministischen Dynamik dominiert wird, nicht mehr ausreicht, um die Realität zu verstehen. Die neue Welt ist geprägt von zunehmender Rendite, Instabilität und Unfähigkeit, Ursache und Wirkung zu bestimmen.

Die beiden Welten unterscheiden sich in Verhalten, Stil und Kultur. Sie fordern -

  • Unterschiedliche Managementtechniken
  • Unterschiedliche Strategien
  • Unterschiedliches Verständnis

Komplexe Softwareentwicklung

Mit der Explosion des Umfangs der Softwareanwendungen stoßen auch die Softwareentwicklungsorganisationen auf ähnliche Widersprüche wie oben erwähnt.

  • One World wird durch die deterministische Entwicklung repräsentiert, die sich aus Managementpraktiken ableitet, die auf den Grundlagen der Stabilität und Berechenbarkeit basieren (was in Arthurs Ausdrücken bedeutet, dass die Renditen sinken).

  • Second World wird durch die Branchen repräsentiert, die von abnehmenden zu wachsenden Renditeumgebungen wechseln, die unvorhersehbar, nichtlinear und schnell sind.

Um die Probleme dieser zweiten Welt anzugehen, bot Jig Highsmith das Framework Adaptive Software Development an, das sich von der deterministischen Softwareentwicklung unterscheidet.

Die Adaptive Software-Entwicklung konzentriert sich auf die Adressierung der komplexen Systeme -

  • Adaptive Softwareentwicklung für den Entwicklungslebenszyklus.

  • Adaptive Management-Techniken, die eine andere Denkweise erfordern als herkömmliche Projektmanagement-Praktiken.

In diesem Lernprogramm können Sie beide Implementierungen verstehen.

Adaptive Software Development (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 basiert auf

    • Langjährige Erfahrung mit deterministischen Softwareentwicklungsmethoden.

    • Beratung, Übung und Schreiben über Rapid Application Development (RAD) -Techniken; und Zusammenarbeit mit High-Tech-Software-Unternehmen bei der Verwaltung ihrer Produktentwicklung.

In diesem Kapitel werden Sie die konzeptionelle Perspektive der adaptiven Softwareentwicklung verstehen.

Komplexe adaptive Systeme (CAS) Konzepte

Die Theorie komplexer adaptiver Systeme (CAS) hat viele Konzepte. Die adaptive Softwareentwicklung basiert auf zwei dieser Konzepte:

  • Entstehung
  • Komplexität

Entstehung

In komplexen Softwareproduktentwicklungsprojekten sind die Ergebnisse von Natur aus unvorhersehbar. In solchen Umgebungen entstehen jedoch immer wieder erfolgreiche Produkte.

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 Massenzentrums 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 aufstrebendes Verhalten, das Herden von Vögeln. Wenn irrtümliche 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 Art und Weise, wie diese individuelle Freiheit verwaltet und organisiert wird, bis zu der Vorstellung, dass eine kreative neue Ordnung unvorhersehbar durch spontane Selbstorganisation entsteht.

Emergenz ist neben der Entwicklung auch aus Managementsicht das wichtigste Konzept.

Komplexität

Im Kontext der Softwareentwicklung geht es bei der Komplexität um:

  • Die Einzelpersonen eines Teams wie Entwickler, Kunden, Lieferanten, Wettbewerber und Aktionäre, ihre Anzahl und ihre Geschwindigkeit.

  • Größe und technologische Komplexität.

Praktiken der adaptiven Softwareentwicklung

Die adaptive Softwareentwicklung bietet eine andere Perspektive auf Software-Management-Praktiken. In den folgenden Abschnitten werden die beiden wichtigen Vorgehensweisen - Qualität und RAD - erläutert, die sich auf das Sammeln 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 von "Beim ersten Mal richtig machen" nicht, da Sie nicht vorhersagen können, was am Anfang richtig ist. Sie müssen ein Ziel haben, um 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 groß, dass es niemals einen optimalen Wert geben kann. Daher liegt der Schwerpunkt auf einer Verlagerung, um den besten Wert auf dem Wettbewerbsmarkt zu erzielen.

RAD-Verfahren

RAD-Praktiken umfassen im Allgemeinen eine Kombination der folgenden:

  • Evolutionärer Lebenszyklus
  • Kundenfokusgruppen, JAD-Sitzungen, technische Überprüfungen
  • Zeitgesteuertes Projektmanagement
  • Kontinuierliche Softwareentwicklung
  • Engagierte Teams mit Kriegsräumen

Die RAD-Projekte haben einen inhärenten adaptiven, aufstrebenden Charakter. 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 sie Fragen zu ihrer grundlegenden Weltanschauung aufwirft.

RAD-Verfahren und Microsoft-Prozesse sind Beispiele für die aktive adaptive Entwicklung. Indem Sie ihnen ein Label geben (dh Adaptive Entwicklung) 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.