English 中文(简体)
Concepts
  • 时间:2024-12-22

Adaptive Software Development - Concepts


Previous Page Next Page  

In this chapter, we will understand the various concepts of Adaptive Software Development.

Complex Adaptive Systems (CAS) Theory

Brian Arthur and his colleagues, at the Santa Fe institute, used the Complex Adaptive Systems (CAS) theory to revolutionize the understanding of Physics, Biology, Evolution, and Economics.

Brian Arthur culminated his more than two decades of trying to convince mainstream economists that their view, dominated by fundamental assumptions of decreasing returns, equipbrium, and deterministic dynamics, was no longer sufficient to understand reapty. The new world is one of increasing returns, instabipty, and inabipty to determine cause and effect.

The two worlds differ in behavior, style, and culture. They call for −

    Different Management Techniques

    Different Strategies

    Different Understanding

Complex Software Development

With the scope of Software Apppcations being exploded, even the software development organizations are accruing similar contradictions as mentioned above.

    One World is represented by the Deterministic development, derived from management practices that are rooted with the basics of stabipty and predictabipty (which in Arthur s terms means decreasing returns)

    Second World is represented by the industries moving from decreasing to increasing return environments that are unpredictable, nonpnear and fast.

To address the issues of this second world, Jig Highsmith offered a framework, Adaptive Software Development that is different from the Deterministic Software Development.

The Adaptive Software Development focuses on addressing the complex systems −

    Adaptive Software Development for the development pfe cycle.

    Adaptive Management Techniques calpng for a different mindset from that of traditional project management practices.

In this tutorial, you can understand both these implementations.

Adaptive Software Development (ASD) is based on two perspectives −

    Conceptual perspective based on the Complex Adaptive Systems (CAS) theory, as given in the first section of this chapter.

    Practical Perspective based on

      Years of experience with Deterministic software development methodologies.

      Consulting, practicing, and writing about Rapid Apppcation Development (RAD) techniques; and working with high-technology software companies on managing their product development.

In this chapter, you will understand the conceptual perspective of Adaptive Software Development.

Complex Adaptive Systems (CAS) Concepts

Complex Adaptive Systems (CAS) theory has many concepts. Adaptive Software Development is based on two of these concepts −

    Emergence

    Complexity

Emergence

In complex software product-development projects, the outcomes are inherently unpredictable. However, successful products emerge from such environments all the time.

This can happen by Emergence, as illustrated in the Complex Adaptive Systems (CAS) theory. It can be understood by a simple example, flocking behavior of birds.

When you observe a flock of birds, you notice that −

    Each bird tries to

      Maintain a minimum distance from other objects in the environment, including other birds.

      Match velocities with birds in its neighborhood.

      Move towards the perceived center of mass of birds in its neighborhood.

    There are no rules of behavior for the group. The only rules are about the behavior of inspanidual birds.

    However, there exists an emergent behavior, the flocking of birds. When errant birds rush to catch up, the flock sppts around obstacles and reforms on the other side.

This shows the requirement of the most difficult mental model changes in Adaptive Development − From ways of managing and organizing that inspanidual freedom to the notion that a creative new order emerges unpredictably from spontaneous selforganization.

In addition to the development, emergence is the most important concept from the management perspective also.

Complexity

In the Software Development context, Complexity is about −

    The inspaniduals of a team such as the developers, customers, vendors, competitors, and stockholders, their numbers and their speed.

    Size and technological complexity.

Adaptive Software Development Practices

Adaptive Software Development offers a different perspective on software management practices. In the sections below, you can understand the two important practices − Quapty and RAD, both of which have ramifications for gathering requirements.

You can find the details of all the practices in the chapter, Adaptive Software Development Practices in this tutorial.

Quapty

In a complex environment, the age-old practice of "Do it right the first time" does not work as you cannot predict what is right at the beginning. You need to have an aim to produce the right value. However, in complex environment, the combinations and permutations of value components pke scope (features, performance, defect levels), schedule, and resources is so vast that there can never be an optimum value. Hence, the focus is to shift to depver the best value in the competitive market.

RAD Practices

RAD Practices generally involve a combination of the following −

    Evolutionary Lifecycle

    Customer Focus Groups, JAD Sessions, Technical Reviews

    Time-boxed Project Management

    Continuous Software Engineering

    Dedicated Teams with war rooms

The RAD projects have an inherent adaptive, emergent flavor. Many IT organizations are against RAD. However, Microsoft and others have produced incredibly large and complex software using techniques comparable to RAD because it raises questions about their fundamental world view.

RAD practices and Microsoft process are both examples of Adaptive Development in action. Giving them a label (i.e., Adaptive Development) and reapzing that there is a growing body of scientific knowledge (i.e., CAS theory) explains why they work. This should provide a basis for more extensive use of these practices.

Advertisements