Iterative and Incremental – Georgia Tech – Software Development Process
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.