The software development process called agile development evolved in the mid 1990s and is seen as a return to the development practice that was developed in the early beginnings of software development. Initially called ‘lightweight methods’ as opposed to ‘heavyweight methods’ such as the micro-managed waterfall model of development, the agile software development process includes such methodologies as adaptive software development, dynamic systems development method, crystal clear, extreme programming and feature driven development. Published in the 2001 Agile Manifesto, these agile methodologies form a family of development processes that allows software development to be more prioritized and reveal any difficulties in the development process.
The agile software development process breaks tasks into small increments with minimal planning that do not directly involve any long-term planning. Each iteration or time frame is worked on by a team of software developers for a typical period of one to four weeks. Each team is responsible for planning, design, coding, requirement analysis, unit and acceptance testing of the product. This allows for changes to be made quickly in the software and also helps to minimize the overall risk of the project. Agile development thus allows for minimal bugs in a software release after each iteration is finished. Software developers in Aberdeen follow this process still today.
A typical team in an agile environment is typically small, between 5 to 9 people. This makes face-to-face communication, which is the most-emphasized mode of communication, over written communication easier. Even when a team works remotely, daily contact through voice, email and videoconferencing is maintained. There is always a customer representative in any agile team to help review the progress as well as optimize return on investment. A representative also helps to answer any problem-domain questions that may arise in the development process. The emphasis placed in agile software development process is working software. This is also taken as the measure of progress, and thus agile development produces less written documentation.
When compared with other development methods, agile methods are what can be described as ‘adaptive’ as opposed to ‘predictive’. What this simply means is that an agile team does not know what features are planned in the software development process for, say next month. Predictive development on the other hand, can report exactly what features will be available and the functionality of the completed product for the entire length of the development process. These methods thus make it very difficult to make changes to the original direction. Agile methods on the other hand can easily be adapted regardless of where the development process is so far. Whether agile methodologies are adapted for non-software products remains to be seen. In the meantime, this software development process exploits software characteristics to produce highly adaptive software and automated testing.