Table 4: A Comparison of Software Development Methods
Method / Description / Best Used For / Advantages / Disadvantages /Waterfall / · Uses independent development phases that are completed sequentially
· Serial, “big-bang” solution with one long cycle times / · Programs where the requirements are very well understood at the onset of the project
· Functionality to be delivered is mature and static
· Best fits with Model 5, though also Model 1 (not described here) / · Typically low risk of not meeting contractual requirements if applied correctly
· All functionality is delivered at the same time
· Easiest delivery schedule management / · High risk of user dissatisfaction
· Requires a complete set of requirements at the onset
· Difficult to incorporate user feedback
· Experimental code or prototypes are discarded after use
Incremental / · Development phases can be completed concurrently
· Generally 60-80% of product is initially delivered with incremental deliveries delivered later / · Projects where all requirements are not known at beginning of project
· Best fits with Models 2, 3, and 6 / · Users can provide feedback earlier
· Developers have opportunity to identify potential problems earlier
· Does not require a complete set of requirements at onset of project
· Overlapping deployments or tasks produce usable functionality earlier / · Schedule with concurrent tasks is difficult to manage
· If well managed, project can be delivered earlier
· Experimental code or prototypes are discarded after use
Agile / · Customer satisfaction is highest priority
· Can be thought of as both a set of software development best practice as well as a software development method
· Requirements are prioritized, multiple, rapidly executed Increments are developed and capabilities are released to the customer as soon as possible
· Prototypes may be used as a starting place
· It utilizes a modular, open-systems approach.
· Documentation is kept to an absolute minimum / · Small- to mid-sized applications
· Best fits with Models 3, 4, 6 / · Customers get a workable product more quickly
· Less documentation, more usable code
· Continual involvement of the end user
· Developers are able to easily course correct
· Scope creep virtually eliminated / · Requires dedicated on site customer collaboration
· Difficult to resolve Agile’s lack of documentation required and the DoD’s statutory and regulatory documentation requirements
· Difficult to price because all requirements are not scoped at beginning of project