Page 51 -
P. 51
34 Chapter 2 Software processes
Problems with incremental development
Although incremental development has many advantages, it is not problem-free. The primary cause of the
difficulty is the fact that large organizations have bureaucratic procedures that have evolved over time and there
may be a mismatch between these procedures and a more informal iterative or agile process.
Sometimes these procedures are there for good reasons—for example, there may be procedures to ensure
that the software properly implements external regulations (e.g., in the United States, the Sarbanes-Oxley
accounting regulations). Changing these procedures may not be possible so process conflicts may be
unavoidable.
http://www.SoftwareEngineering-9.com/Web/IncrementalDev/
Incremental development in some form is now the most common approach for the
development of application systems. This approach can be either plan-driven, agile,
or, more usually, a mixture of these approaches. In a plan-driven approach, the system
increments are identified in advance; if an agile approach is adopted, the early incre-
ments are identified but the development of later increments depends on progress and
customer priorities.
From a management perspective, the incremental approach has two problems:
1. The process is not visible. Managers need regular deliverables to measure
progress. If systems are developed quickly, it is not cost-effective to produce
documents that reflect every version of the system.
2. System structure tends to degrade as new increments are added. Unless time and
money is spent on refactoring to improve the software, regular change tends to
corrupt its structure. Incorporating further software changes becomes increas-
ingly difficult and costly.
The problems of incremental development become particularly acute for large,
complex, long-lifetime systems, where different teams develop different parts of the
system. Large systems need a stable framework or architecture and the responsibili-
ties of the different teams working on parts of the system need to be clearly defined
with respect to that architecture. This has to be planned in advance rather than devel-
oped incrementally.
You can develop a system incrementally and expose it to customers for comment,
without actually delivering it and deploying it in the customer’s environment.
Incremental delivery and deployment means that the software is used in real, opera-
tional processes. This is not always possible as experimenting with new software can
disrupt normal business processes. I discuss the advantages and disadvantages of incre-
mental delivery in Section 2.3.2.