In this post, I will compare traditional methods of software development to the more modern method of Agile.
Firstly, lets explain several traditional methods of software development. The Waterfall Model is one of the earliest methods of software development. The Waterall Model is a sequential process whereby progress flows through several phases from top to bottom (hence the name Waterfall). There were several issues with this method and so further traditional methods such as the V Model, the Spiral Model and RUP were developed in response to these issues.
V-Model is considered as an extension of the Waterfall software development model. The phases used in the V Model are much the same as that of the Waterfall Model, but instead of descending from top to bottom, steps in the V Model move down diagonally and then move back up (after the coding phase), forming the shape of the letter V.
After the development of the V Model came RUP (Rational Unified Process). This is an adaptable process framework (not a single concrete process), that can be customized by the development organization according to their needs, making it more flexxible than the Waterfall. Slightly similar to Waterfall, it has fixed phases as inception, elaboration, construction and transition. But unlike Waterfall, RUP is an iterative process.
In comparison, the more modern method of Agile software development was developed to solve shortcomings in traditional software development methods. Agile methods are based on giving high priority to the customer participation early in the development cycle. This participation of the end customer is key and they are involved at each stage of development. Testing is also performed at each point when a stable version becomes available. The foundation of Agile is based on starting testing from the beginning of the project and continuing throughout to the end of the project. Scrum and Extreme programming are two of the most popular variations of Agile methods.
The Agile Method has really taken over from its traditional counterparts, providing the following advantages not afforded by traditional methods:
1. Cooperative -Customers and developers are equally involved at each stage ensuring the customer gets the exact system desired.
2. Incrememental – Delivers releases frequently and enhancements are included.
3. Facilitates Change – Changes can be made and the system can easily be modified at any stage.
4. Straightforward – This is not a complicated method of software development and is very efficient to develop and run.