slanted W3C logo

Day 17 — Iterative Development

Requirements Risk

The Auditor General of Canada, Sheila Fraser, released a report on Tuesday that in part examined the purchase of 15 Boeing Chinook helicopters.

all-in cost delivery date
2006 $2.0 billion 2008
yesterday $4.9 billion expected 2013

After the contract was awarded in 2006:

From that moment on, National Defense then spent three years actually defining the requirements, and three years later in 2009, came out with requirements and contract for a helicopter that was very different, totally different, a helicopter that had never flown before, as compared to the one that they had put out in the advance contract award notice.
—Shiela Fraser, CBC interview

Iterative and Incremental Development

Iterative and incremental development is a development process characterized by two features. The first is iteration, meaning the process goes through repeated cycles. The second is incremental, meaning more functionality is added as iterations occur.


Iteration

The figure shows one complete cycle as a waterfall model, but it is common to skip steps in a cycle.

Iteration makes it possible to identify mistakes so that they can be corrected for the next iteration. Also, modifications can be added in the next iteration.


Incremental

Gradually adding new features over iterations allows for incremental growth of the software system. Each incremental release can be given to the customer to evaluate.

Buzzwords

Iterative incremental development is currently very popular. Many frameworks rely on these ideas:

UML Class Diagrams

The Unified Modelling Language (UML) is used to specify, visualize, and document object-oriented systems.

The UML class diagram describes the structure of a software system by showing the classes used in the system, details of the classes (their attributes and methods), and the relationships between the classes.

Class Diagrams I

Very early in the development process it is likely known that a class is needed, but its functionality is largely unknown. In this case, we can use a class diagram containing just the name of the class.


Class Diagrams II

Once more is known about how the class will be used, more details (such as the public attributes) can be added to the class diagram.


Class Diagrams III

When the class needs to be implemented, more features of the class will emerge, such as what methods are required.


Relationships Between Classes

Test 5

Written part will cover regular expressions of simple to very modest complexity. A link will be given to the Pattern documentation.