Adaptive software development is a design principle for the creation of software systems. The principle focuses on the rapid creation and evolution of software systems. There is never a period where the software is finished; there are just stable periods between new releases. The adaptive development method grew out of the rapid application development method. These two methods are similar in structure, but rapid application development allows for a time when the project is finished, while adaptive software development doesn't.
The focus of adaptive development is in the computer code. Instead of planning the software out before hand, developers have a basic idea in their heads and they go to work. When pieces need changing or adapting to a new system, the coders simply do it. If the program needs a patch, somebody just makes it.
Overall, the lack of pre-planning steps allows the developers to make the software very quickly. While this will occasionally result in software that doesn’t perform the precise functions required, that is generally not a problem. The developmental cycle in this process is so short that a new version with additional features can come out very quickly. This process or rapid prototyping is the cornerstone of both adaptive software development and rapid application development.
The spot where the two methods differ is in the eventual endpoint. For adaptive software development, there is no real endpoint, just a time when the software is no longer needed or the code is ported into a higher generation application. On the other hand, rapid application development allows for the end of a project, a time when the software is bug-free and has met the requirements of the purchaser.
Adaptive software development is made of three steps, each revolving around the coding of a program. The first step is speculation. During this phase, coders attempt to understand the exact nature of the software and the requirements of the users. This phase relies on bug and user reports to guide the project. In no reports are available, the developers use the basic requirements outlined by the purchaser.
The collaboration phase is when the individual developers solidify what they are each doing and how to combine their portions. This phase is generally completely in-house. The developers don’t need any additional information or outside input to manage this portion of the software.
The last step is learning. During the learning phase, the newest version of the software is released to users. This generates the bug and user reports used during the first phase of the project, and the cycle repeats itself.