Wednesday, January 26, 2005

Phases and Iterations

Ok, you’ve taken the quiz, lets start defining the phases. You may have heard definitions before, but as promised, I believe that you will find a clearer definition here than you have found before!

First off, how do the phases relate to iterations? That was the topic of question 5. Basically, the best way to understand the phases is to first get rid of them altogether. A project can be iterative without following the RUP. Imagine that you decide, based on some criteria, that you want to try to build a complete product in nine iterations.

Each iteration, if you are truly doing iterative development, you would travel through all nine software disciplines (Project Management, Requirements, Analysis and Design, Implementation, Test, Deployment, etc.) in each iteration. Each iteration would result in a partial solution until the whole solution was at last available.

But a question usually comes up when people first look at this approach. “How do we select what we do in each iteration?” That is where the phases come in to play.

RUP can guide any project, even those that have NO software component. This is why they have an “implementation” discipline instead of a “coding” discipline. Implementation = coding if you are doing a software project. But if you are doing a non software project, implementation would be whatever it takes to go from detailed designs into a real tangible solution.

Basically every RUP guided project, software or otherwise, goes sequentially through a set of four phases. A phase is sequential and you can’t go backwards. These four phases are Inception, Elaboration, Construction and Transition. By understanding what happens in each phase, you can then understand how to choose what work to perform in each of your nine iterations.

At this point, it should be clear that the answer to question 5 is A, not B. In ‘A’ the project goes through each of the four phases once. In B, you go through the four phases again and again, and this is not possible.

For example, let’s imagine we are talking about a human’s life. Inception = Infancy, Elaboration = Teenager, Construction = Mid Life and Transition = Senior Citizen. If in your Mid Life, you realize you wished you did things differently when you were a Teen, you can take corrective action in your Mid Life, but you can’t go back to being a Teen!

There are two reasons people sometimes pick B. 1. They equate each iteration to a “generation” of the project that is to be externally released. Under this interpretation, each iteration is actually a full project, and each project goes through IECT.

2. They equate I to Planning and Requirements, E to Design, C to Code and T to Deployment. In each iteration you really do go through all those disciplines, but equating the RUP phases to waterfall phases is actually incorrect. More on why later, but this should tip you off that the answer to Q4 is actually No. I’ll provide more justification on that later too.

0 Comments:

Post a Comment

<< Home