Adaptive Software Development (ASD) is a direct outgrowth of an earlier framework, Rapid Application Development (RAD). Its aim is to enable teams to quickly and effectively adapt to changing requirements or market needs by evolving their products with lightweight planning and continuous learning. The ASD approach encourages teams to develop according to a three-phase process: speculate, collaborate and learn.

As with other agile methods, ASD is used to make teams more adaptable to changing customer demand, requirements and market needs. Specifically, ASD does this by promoting lightweight planning and ongoing learning, through a three-phase process: speculate, collaborate, and learn.

The definition given by ASD’s creators, Jim Highsmith and Sam Bayer, is that ASD “embodies the principle that continuous adaptation of the process to the work at hand is the normal state of affairs.”

Put simply: that change is to be expected, and welcomed, within the development process.

History of Adaptive Software Development (ASD)

Project managers John Highsmith and Sam Bayer are credited with inventing the Adaptive Software Development methodology in the early 1990s. They developed ASD as a more iterative and shorter-interval version of the Rapid Application Development (RAD). Agile framework. ASD was designed to replace the traditional waterfall cycle with a three-element repeating series of ‘speculate’, ‘collaborate’, and ‘learn’.

It’s important to note that ASD’s three phases are nonlinear and, as such, they will overlap:

  1. You cannot collaborate without learning, or learn without collaborating.
  2. You cannot speculate without learning, or learn without speculating.
  3. You cannot speculate without collaborating, or collaborate without speculating.

These three phases reflect the dynamic and fluid nature of ASD, which was designed to go beyond a mere change in the project lifecycle to a deeper change in management style.

Characteristics of Adaptive Software Development:

Adaptive Software Development (ASD) has 6 basic characteristics they are:

  1. Mission Driven: It generally happens with development team initially that requirements are fuzzy and uncertain but overall mission that guides team is rightly expressed. In beginning, this mission works as a boundary of exploration having no fixed destination but slowly directs development team to reach the destination by fulfilling all changed requirements, demands, and market needs. And the more interesting fact is that in each development cycle the activities are justified against overall project mission.
  2. Feature Based: In Adaptive Software Development, all activities which are performed not task-based rather those are based on application features and the focus are on developing working software and delivering a required product. In each iteration, customer’s requirements are added to product as new features and in the last, a good product is expected as a result.
  3. Iterative: Adaptive Software Development is based on iterative processes. The new features are added in each iteration. This follows the principle of constant change and re-evaluation. It does not do right for the first time rather is redoes the development repeatedly by taking feedbacks as input and working on those and again setting right direction for further development. So it is based on a continuous feature addition process with an aim of building complex software solution iteratively and giving results in the end.
  4. Time Boxed : Time boxed in the Adaptive Software Development process refers not to use time deadlines incorrectly rather it is about setting fixed delivery times for iterations and projects minimally and greatly focusing and forcing a good work environment to get work finished when change rates are so high and the environment looks like uncertain.
  5. Risk Driven: In Adaptive Software Development, in each iteration new challenges come and the process aims to solve high-risk items/activities quickly. So in this, the adaptive iterations are identified and analyzed with critical risks and also evaluated as well.
  6. Change Tolerant: As we discussed Adaptive Software Development is based on constant change, re-evaluation, and evolving products with lightweight planning and continuous learning. So this process takes continuous changes as an advantage and welcomes it. It does not make changes as problems rather it takes the changes as new challenges.

Advantages of Adaptive Software Development:

  • Useful for rapid and complex software product development.
  • Easy software incremental adjustment
  • Focus on end-users, meeting requirements, and fulfilling demands
  • Allows on-time delivery with maximum customer satisfaction
  • Provides high transparency between developers and clients
  • Reduced vulnerabilities and bugs as undergoes multiple testing

Disadvantages of Adaptive Software Development:

  • Working in an uncertain environment is challenging
  • Proceeding only with mission needs broad exploration and constant focus
  • Requires high user/client involvement
  • Requires testing into each iteration which increases the cost
  • Frequent changes undergo with less documentation
  • Requires strict time commitment between different teams involved in project.

Adaptive Software Development is cyclical like the Evolutionary model, with the phase names reflecting the unpredictability in the complex systems. The phases in the Adaptive development life cycle are – Speculate: The term plan is too deterministic and indicates a reasonably high degree of certainty about the desired result. The implicit and explicit goal of conformance to plan, restricts the manager's ability to steer the project in innovative directions.

In Adaptive Software Development, the term plan is replaced by the term speculate. While speculating, the team does not abandon planning, but it acknowledges the reality of uncertainty in complex problems. Speculate encourages exploration and experimentation. Iterations with short cycles are encouraged.

Collaborate:
Complex applications are not built, they evolve. Complex applications require that a large volume of information be collected, analyzed, and applied to the problem. Turbulent environments have high rates of information flow. Hence, complex applications require that a large volume of information be collected, analyzed, and applied to the problem. This results in diverse Knowledge requirements that can only be handled by team collaboration.

Learn:
The Learn part of the Lifecycle is vital for the success of the project. Team has to enhance their knowledge constantly, using practices such as −

  • Technical Reviews
  • Project Retrospectives
  • Customer Focus Groups

Reviews should be done after each iteration. Both, the developers and customers examine their assumptions and use the results of each development cycle to learn the direction of the next.

The iterations need to be short, so that the team can learn from small rather than large mistakes. What are the Strengths and Weakness of ASD?

ASD’s strengths include:

  • Focused on the end users, which can lead to better and more intuitive products
  • Allows for on-time and even early delivery
  • Encourages more transparency between developers and clients

ASD’s weaknesses include:

  • Demands extensive user involvement, which can be difficult to facilitate
  • Integrates testing into every stage, which can add to a project’s costs

Should you use Adaptive Software Development?

Adaptive Software Development can be a viable methodology if your organization prioritizes rapid delivery of products and sees value in continuously evolving your offerings

By its nature, adaptive software development works best when an organization is able to suitably prioritize the rapid delivery of products. That being said, any company that can draw value from the continuous iteration and evolution of product offerings could consider ASD as a working method.