Agility avoids disasters before they happen. Two key aspects of agile development:
- Software is in an always ‘releasable’ state (working prototype).
- Test Driven development catches bugs before they make it out of the development environment.
Requirements change – even for projects that seem to be well defined and compartmentalized. It is impossible to predict the needs of the business – and any product is subject to last-minute scope creep.
While no development methodology can avoid scope creep, Agile can reduce the impact it has on the final product. Loosely coupled software should be favored over monolithic, tightly coupled (all functionality in one code base) software. While loose coupling is not a direct tenet of agile, agile, if practiced correctly leads to loosely coupled software.