DEVELOP SOFTWARE ITERATIVELY

DEVELOP SOFTWARE ITERATIVELY

Classic software development processes follow the waterfall life-cycle, as illustrated in Figure 1-1. In this approach, development proceeds linearly from requirements analysis through design, code and unit testing, subsystem testing, and system testing.

Figure 1-1. The waterfall lifecycle
graphics/01fig01.gif

The fundamental problem of this approach is that it pushes risk forward in time so that it's costly to undo mistakes from earlier phases. An initial design will likely be flawed with respect to its key requirements, and, furthermore, the late discovery of design defects tends to result in costly overruns or project cancellation. As Tom Gilb aptly said, "If you do not actively attack the risks in your project, they will actively attack you." [5] The waterfall approach tends to mask the real risks to a project until it is too late to do anything meaningful about them.

[5] Tom Gilb, Priciple of Software Engineering Management . Harlow, UK: Addison-Wesley, 1988, p.73.

An alternative to the waterfall approach is the iterative and incremental process, as shown in Figure 1-2. In this approach, building on the work of Barry Boehm's spiral model, [6] the identification of risks to a project is forced early in the lifecycle, when it's possible to attack and react to them in a timely and efficient manner. This approach is one of continuous discovery, invention, and implementation, with each iteration forcing the development team to drive the project's artifacts to closure in a predictable and repeatable way.

[6] Barry W. Boeham, "A Spiral Model of Software Develpment and Enhancement," IEEE Computer , May 1998, pp. 61 “72.

Figure 1-2. An iterative and incremental process
graphics/01fig02.gif

Developing software iteratively offers a number of solutions to the root causes of software development problems:

  1. Serious misunderstandings are made evident early in the lifecycle, when it's possible to react to them.

  2. This approach enables and encourages user feedback so as to elicit the system's real requirements.

  3. The development team is forced to focus on those issues that are most critical to the project and are shielded from those issues that distract them from the project's real risks.

  4. Continuous, iterative testing enables an objective assessment of the project's status.

  5. Inconsistencies among requirements, designs, and implementations are detected early.

  6. The workload of the team, especially the testing team, is spread more evenly throughout the project's lifecycle.

  7. The team can leverage lessons learned and therefore can continuously improve the process.

  8. Stakeholders in the project can be given concrete evidence of the project's status throughout its lifecycle.



The Rational Unified Process. An Introduction
The Rational Unified Process: An Introduction (3rd Edition)
ISBN: 0321197704
EAN: 2147483647
Year: 1998
Pages: 176

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net