Page 50 -
P. 50
2.1 Software process models 33
Concurrent
Activities
Initial
Specification
Version
Outline Intermediate
Description Development Versions
Final
Validation
Figure 2.2 Incremental Version
development
validation activities are interleaved rather than separate, with rapid feedback across
activities.
Incremental software development, which is a fundamental part of agile
approaches, is better than a waterfall approach for most business, e-commerce, and
personal systems. Incremental development reflects the way that we solve prob-
lems. We rarely work out a complete problem solution in advance but move toward
a solution in a series of steps, backtracking when we realize that we have made a
mistake. By developing the software incrementally, it is cheaper and easier to make
changes in the software as it is being developed.
Each increment or version of the system incorporates some of the functionality
that is needed by the customer. Generally, the early increments of the system include
the most important or most urgently required functionality. This means that the
customer can evaluate the system at a relatively early stage in the development to see
if it delivers what is required. If not, then only the current increment has to be
changed and, possibly, new functionality defined for later increments.
Incremental development has three important benefits, compared to the waterfall
model:
1. The cost of accommodating changing customer requirements is reduced. The
amount of analysis and documentation that has to be redone is much less than is
required with the waterfall model.
2. It is easier to get customer feedback on the development work that has been
done. Customers can comment on demonstrations of the software and see how
much has been implemented. Customers find it difficult to judge progress from
software design documents.
3. More rapid delivery and deployment of useful software to the customer is possi-
ble, even if all of the functionality has not been included. Customers are able to
use and gain value from the software earlier than is possible with a waterfall
process.