We just saw two of the three distinguishing aspects of
the rational unified process. The fact that it is used
case driven and the fact that it is architecture centric.
The third and final distinguished aspect of R.U.P. is that
it is iterative and incremental. So let's see what that
means by considering the lifetime of a software project. Basically,
the lifetime of a rational unified process consists of a
series of cycles, such as the ones that are represented here.
Cycle one, cycle two, through cycle n. And as
you can see, these cycles can also be called increments.
And each one of the cycles involves all of
the main phases of software development. In addition, each cycle
results in a product release which can be internal
or external. More precisely, each cycle terminates with a product
release that includes a complete set of artifacts for
the project. That means code, manuals, use cases, non-functional
specification, test cases, and so on. So, I've just
said, that each cycle involves all of the main phases
of software development. Specifically, each cycle is further divided
in four phases. Inception, elaboration, construction and transition. In a
minute, we will look at each one of these
phases in detail and see how they relate to the
traditional activities of software development. Before that, I want
to mention the last level of these iterations, which happens
within these individual phases More precisely, inside each of these
phases, there might be multiple iterations. So what are these
iterations? Well, basically, each iteration corresponds to a group of
use cases that are selected so as to deal with
the most important risks first. So if you have a
set of use cases that you're considering, which means that
you have a set of features that you need to
implement, you will select for each iteration the most risky
ones that you still haven't realized, and realize them in that
iteration. And then continue in the following iterations with less and
less risky ones. So basically what happens in the end is
that essentially each iteration extends
the functionality beyond the previous iteration.