Adaptive S/W Development - Concepts

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

Complex Adaptive Systems (CAS) Theory

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

Brian Arthur finished his more than two years of trying to convince mainstream economists that their view, ruled by fundamental assumptions of decreasing returns, equilibrium, and deterministic dynamics, was no longer sufficient to understand reality. The new world is one of expanding returns, instability, and failure 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 detonated, even the software development organizations are collecting similar contradictions as mentioned above.

  • One World is represented by the Deterministic development, derived from management practices that are established with the basics of stability and consistency (which in Arthur's terms means decreasing returns)

  • Second World is represented by the industries moving from decreasing to expanding return environments that are unpredictable, nonlinear and quick.

To address the issues of this second world, Jig Highsmith offered a framework, Adaptive Software Development that is unique in relation to the Deterministic Software Development.

The Adaptive Software Development focuses on tending the complex systems −

  • Adaptive Software Development for the development life cycle.

  • Adaptive Management Techniques requiring an alternate mindset from that of traditional project management practices.

In this study notes, you can understand both these implementations.

Adaptive Software Development (ASD) is based on two points of view −

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

  • Practical Perspective dependent on

    • Years of experience with Deterministic software development methodologies.

    • Consulting, practicing, and writing about Rapid Application Development (RAD) techniques; and working with high-innovation 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 depends on two of these ideas −

  • Emergence
  • Complexity


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

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

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

  • Each bird attempts to

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

    • Match velocities with birds in its neighborhood.

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

  • There are no principles of behavior for the group. The only principles are about the behavior of individual birds.

  • However, there exists an emergent behavior, the flocking of birds. At the point When errant birds rush to catch up, the flock splits around obstacles and reforms on the different side.

This shows the prerequisite of the most troublesome mental model changes in Adaptive Development − From methods of managing and organizing that individual freedom to the idea that a innovative new order emerges unpredictably from unconstrained self organization.

In addition to the development, emergence is the most significant idea from the management point of view also.


In the Software Development context, Complexity is about −

  • The individuals of a team such as the developers, clients, sellers, competitors, and investors, their numbers and their speed.

  • Size and technological complexity.

Adaptive Software Development Practices

Adaptive Software Development offers an alternate perspective on software management practices. In the sections below, you can understand the two significant practices − Quality and RAD, both of which have implications for gathering requirements.

You can discover the details of all the practices in the chapter, Adaptive Software Development Practices in this study notes.


In a complex situation, the age-old practice of "Do it right the first time" doesn't work as you can't predict what is right at the beginning. You need to have an aim to produce the right value. In any case, in complex environment, the combinations and permutations of value components like scope (features, performance, defect levels), schedule, and assets is so vast that there can never be an optimum value. Thus, the focus is to shift to deliver the best value in the competitive market.

RAD Practices

RAD Practices generally include a combination of the following −

  • Evolutionary Lifecycle
  • Client 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, rising flavor. Many IT organizations are against RAD. However, Microsoft and others have delivered incredibly large and complex software utilizing procedures comparable to RAD since it brings up questions about their fundamental world view.

RAD practices and Microsoft process are the two instances of Adaptive Development in action. Giving them a name (i.e., Adaptive Development) and understanding that there is a growing body of scientific knowledge (i.e., CAS theory) clarifies why they work. This should provide a basis for more extensive utilization of these practices.

Input your Topic Name and press Enter.