As a continuation from our Software Development Approaches blog post, we would like to further discuss the benefits and differences between Waterfall and Agile (AKA Rapid Prototyping) Software Development strategies. Understanding the differences between each development strategy will allow you to better plan and communicate the development of your project.
Waterfall Model for Software Development
A frequent form of software development is using the Waterfall model. When using this development approach, typically a complete product design with defined expectations for every aspect of the program is created before launch. Software developers create a full system design, from well-defined requirements and specifications, before any code is written and well before launch. Below are a few interesting aspects of the Waterfall approach to software development:
- Pre-planned, well thought out development, from beginning to end
- Leaves little room for change as the program is launched as a complete system (More likely to stay on budget)
- Software is developed as a complete program with few groups of changes inserted after thorough review with regression testing
- Used with regulated or mission critical development projects
An example where the Waterfall Methodology approach is used for software development would be for a medical device. FDA regulations require a rigorous requirement-design-code-test traceability and the serial step by step approach which Waterfall lends itself to. It is an orderly and well documented development process.
Agile Model for Software Development
The Agile approach to software development has become more popular with mobile device technology and applications. Typically, an Agile development project has flexible plans with less requirements set in stone, but still requires boundaries at a process and task level. Daily scrums, phase reviews, and planning for upcoming phases are always occurring with Agile development. These process checks keep the agility in check, and also feeds the units of work to the development team. Below are a few interesting aspects of the Agile approach to software development:
- Development begins right away with less defined requirements and restrictions
- Project is available to client in phases for frequent review and refinement
- New ideas and revisions can easily be made in between development phases
- Used with development projects that allow for rapidly changing design ideas
An example of the Agile approach in use for software development would be a user driven systems like Ebay, Amazon, or iTunes which frequently have application software updates to improve User Experience (UX) or in response to user demands.
The Agile methodology is also used for rapid prototyping of new products or new features to an existing product.
Each software project will differ from one another. By understanding the information included above, you will be able to work with your developer to choose the best development method for your project.