iterative and incremental dev't

35
Iterative and Incremental Development

Upload: jennyrosesison

Post on 10-Apr-2015

293 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: iterative and incremental dev't

Iterative and Incremental Development

Page 2: iterative and incremental dev't

Definition

is a cyclic software development process developed in response to the weaknesses of the waterfall model.

It is an essential part of the Rational Unified Process, the Dynamic Systems Development Method, Extreme Programming and generally the agile software development frameworks.

Page 3: iterative and incremental dev't

iterative: using repeated routines in a loop as part of a computer program

increment: an addition to or increase in the amount or size of something, especially one of a series of small, often regular or planned increases.

Page 4: iterative and incremental dev't

Iterative vs Incremental Development

Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system.

It does not presuppose incremental development, but works very well with it. A typical difference is that the output from an increment is not necessarily subject to further refinement, and its testing or user feedback is not used as input for revising the plans or specifications of the successive increments.

Page 5: iterative and incremental dev't

On the contrary, the output from an iteration is examined for modification, and especially for revising the targets of the successive iterations.

Page 6: iterative and incremental dev't

Incremental development is a scheduling and staging strategy in which the various parts of the system are developed at different times or rates, and integrated as they are completed.

It does not imply, require nor preclude iterative development or waterfall development - both of those are rework strategies. The alternative to incremental development is to develop the entire system with a "big bang" integration.

Page 7: iterative and incremental dev't

Incremental and Iterative Development

The basic idea behind iterative enhancement is to develop a software system incrementally, allowing the developer to take advantage of what was being learned during the development of earlier, incremental, deliverable versions of the system. Learning comes from both the development and use of the system, where possible.

Page 8: iterative and incremental dev't

Key steps in the process were to start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving sequence of versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added.

Page 9: iterative and incremental dev't

The Procedure itself consists of the Initialization step, the Iteration step, and the Project Control List. The initialization step creates a base version of the system. The goal for this initial implementation is to create a product to which the user can react. It should offer a sampling of the key aspects of the problem and provide a solution that is simple enough to understand and implement easily.

Page 10: iterative and incremental dev't

To guide the iteration process, a project control list is created that contains a record of all tasks that need to be performed.

It includes such items as new features to be implemented and areas of redesign of the existing solution. The control list is constantly being revised as a result of the analysis phase.

Page 11: iterative and incremental dev't

The iteration involves the redesign and implementation of a task from project control list, and the analysis of the current version of the system. The goal for the design and implementation of any iteration is to be simple, straightforward, and modular, supporting redesign at that stage or as a task added to the project control list.

Page 12: iterative and incremental dev't

The level of design detail is not dictated by the interactive approach. In a light-weight iterative project the code may represent the major source of documentation of the system; however, in a mission-critical iterative project a formal Software Design Document may be used.

The analysis of an iteration is based upon user feedback, and the program analysis facilities available. It involves analysis of the structure, modularity, usability, reliability, efficiency, & achievement of goals.

Page 13: iterative and incremental dev't

Figure 1 should really be read backwards, as a dependency diagram: We cannot ship till we debug and validate; we cannot debug until we code; we cannot code until we design, we cannot design until we have decided what to design.

In other words, the validation V is a simple fact of life, and we shall have to deal with it in both incremental and iterative development.

Page 14: iterative and incremental dev't

Figure 1: The Validation V Is a Fact of Life

Page 15: iterative and incremental dev't

Incremental Development: How?

In incremental development, we break up the work into smaller pieces and schedule them to be developed over time and integrated as they are completed. Figures 2-4 illustrate this procedure.

Imagine that the top sheet of blocks represents various user interface components, the middle sheet represents middleware, and the bottom sheet represents back end or database components.

Page 16: iterative and incremental dev't

Figure 2 shows that in the first increment, a full piece of functionality is built from the user interface (UI) through to back end (and in this case, additional pieces of the UI are also built). In the second increment (Figure 3), we see that additional functionality is added across all layers of the system. This may be a sufficient point to deploy the system as it is so far to real users and start accruing business benefit. In the third increment (Figure 4), the rest of the system is completed and incremented.

Page 17: iterative and incremental dev't

Figure 2: Incremental Development, Stage1

Page 18: iterative and incremental dev't

Figure 3: Incremental Development, Stage 2

Page 19: iterative and incremental dev't

Figure 3: Incremental Development, Stage 3

Page 20: iterative and incremental dev't

The pattern just described is the one used by most modern projects, Agile or not. It is a staging strategy with a long history of success.

The mistake people make these days is they forget to iterate. They do not factor in the time to learn what they misunderstood when they decided what to build at the very beginning and what needs to be improved in the design.

Page 21: iterative and incremental dev't

This mistake results in the old failure of delivering what people do not want.

The correcting strategy is iterative development.

Page 22: iterative and incremental dev't

Iterative Development: How?

There are two particular, specialized rework strategies:

Develop the system as well as possible in the thinking that if it is done sufficiently well, the changes will be relatively minor and can be incorporated quickly.

Develop the least amount possible before sending out for evaluation, in the thinking that less work will be wasted when the new information arrives.

Page 23: iterative and incremental dev't

Figure 5: The Validation V for an Iterative Cycle

Page 24: iterative and incremental dev't

To show an effective use of the second strategy, we see the example of the painting of the Mona Lisa, imagining the discussion between Leonardo and his patron (Figures 6-8) [4].

Leonardo draws a sketch of what he intends to do (Figure 6) and goes to the patron, asking, “How’s this going to work for you?”

Page 25: iterative and incremental dev't

Figure 6: Iterative Development of the Mona Lisa, Stage 1

Page 26: iterative and incremental dev't

The patron says, “No, no, no. She can’t be looking right, she has to be looking left!” Fortunately, Leonardo has not done too much work yet, so this is easy to change.

Leonardo goes away, reverses the picture and does some color and detail (Figure 7). He goes back to the patron: “By cost, I’m about one-third done. What do you think now?”

Page 27: iterative and incremental dev't

Figure 7: Iterative Development of the Mona Lisa, Stage 2

Page 28: iterative and incremental dev't

, “No, you can’t make her head look that big! Make it look more balanced with her body size.” (Yes, they had the equivalent of Photoshop and airbrushing back then – he was called Leonardo).

Leonardo goes away and finishes the painting (Figure 8).

Page 29: iterative and incremental dev't

Figure 8: Iterative Development of the Mona Lisa, Stage 3

Page 30: iterative and incremental dev't

Both strategies are valid and both fit the iterative tag. In both cases, rework was done on an existing part of the system.

Page 31: iterative and incremental dev't

Blending the two

Incremental and iterative development fit well with each other. Taking advantage of the validation V, we can arrange to alternate incremental Vs with iterative Vs in various ways to get any number of composite iterative/incremental strategies as Figure 9 illustrates.

Page 32: iterative and incremental dev't

Figure 9: Putting Iterative and Incremental Development Together

Page 33: iterative and incremental dev't

Figure 9 shows a strategy in which each incremental section of the system is given two examination/rework periods before being integrated and staged for delivery. The figure shows three incremental development periods, each increment staged as it gets completed, the whole then shipped as a package.

This is one – but only one – of the possible ways to blend the two. As long as they are clearly marked examine and stage (or even better, ship ), the Vs can be mixed in almost any combination.

Page 34: iterative and incremental dev't

Figure 9 shows one added benefit of describing increments and iterations with Vs: The resulting diagram maps easily to a calendar. Each examine, integrate, or ship marker is a milestone in the project manager’s project plan. This allows the project manager to preview and monitor the time spent revising. In this way, we put the validation V fact of life to good use in showing our incremental-iterative development strategy.

Page 35: iterative and incremental dev't