Adaptive Software Development - Evolution
The earlier SDLC models are more oriented to the practices of stability, predictability and decreasing returns. The industry, such as the Internet Platforms has been moving to increase return environments, unpredictable, nonlinear, and fast approaches.
Adaptive Software Development (ASD) has evolved to address these issues. It focuses on emergence as the most important factor from the management’s perspective, to enhance the ability to manage product development.
In Jim Highsmith’s words, “Adaptive Software Development framework is based on years of experience with traditional Software Development methodologies, consulting on, practicing, and writing about Rapid Application Development (RAD) techniques and working with high-technology software companies on managing their product development practices”.
Waterfall model is found to be characterized by linearity and predictability, with meagre feedback. It can be viewed as a sequence of Plan → Build → Implement.
The Evolutionary Lifecycle models such as the Spiral model moved the Deterministic approach to the Adaptive one, with Plan → Build → Revise Cycles.
However, the practitioners’ mindset remained Deterministic with long-term predictability turning to short-term predictability. The practices of Evolutionary Lifecycle models such as RAD are found to be less Deterministic.
The Adaptive Life Cycle
The Adaptive model is built from a different point of view. Though cyclical like the Evolutionary model, the names of the phase reflect the unpredictable nature of increasingly complex systems.
Adaptive Development goes further than its evolutionary heritage in two key ways −
It explicitly replaces Determinism with Emergence.
It goes beyond a change in life cycle to a deeper change in management style.
The three phases in Adaptive Software Development Lifecycle are −
Speculate − Speculate replaces the deterministic word planning, planning of product specifications or planning of project management tasks.
Collaborate − Collaborate represents drawing a balance between
Managing in the traditional project management sense, and
Creating and maintaining the collaborative environment needed for emergence.
Learn − Learn aims both, the developers and the customers, to use the results of each development cycle to learn the direction of the next.
Collaborative Activities build products, keeping up the pace of changes in the environment.