Adaptive Software Development - Concepts



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, equilibrium, and deterministic dynamics, was no longer sufficient to understand reality. The new world is one of increasing returns, instability, and inability 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 Applications 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 stability and predictability (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, nonlinear 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 life cycle.

  • Adaptive Management Techniques calling 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 Application 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 individual birds.

  • However, there exists an emergent behavior, the flocking of birds. When errant birds rush to catch up, the flock splits 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 individual 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 individuals 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 − Quality 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.

Quality

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 like 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 deliver 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 realizing 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