RUP Lifecycle
This page describes the phases and milestones of a typical RUP project lifecycle.
Relationships
Main Description

The phases and milestones of a project

From a management perspective, the software lifecycle of the Rational Unified Process (RUP) is decomposed over time into four sequential phases, each concluded by a major milestone; each phase is essentially a span of time between two major milestones. At each phase-end an assessment is performed to determine whether the objectives of the phase have been met. A satisfactory assessment allows the project to move to the next phase.

Planning Phases

All phases are not identical in terms of schedule and effort. Although this varies considerably depending on the project, a typical initial development cycle for a medium-sized project should anticipate the following distribution between effort and schedule:

  inception elaboration construction transition
Effort ~5 % 20 % 65 % 10%
Schedule 10 % 30 % 50 % 10%

which can be depicted graphically as

Transition Construction Elaboration Inception Click on a phase for more information

This distribution can vary. For example, tools that generate code and test cases can shorten the construction phase. Also, for an evolution cycle, the inception and elaboration phases would be considerably smaller, since a basic vision and architecture are already established.

Planning Strategies

In this section, we introduce a number of lifecycle patterns corresponding to common project profiles.

Lifecycle pattern: Incremental

"The incremental strategy determines user needs, and defines the system requirements, and then performs the rest of the development in a sequence of builds. The first build incorporates parts of the planned capabilities, the next build adds more capabilities, and so on until the system is complete." [DOD94]

The following iterations are characteristic:

  • a short Inception iteration to establish scope and vision, and to define the business case
  • a single Elaboration iteration, during which requirements are defined, and the architecture established
  • several Construction iterations during which the use cases are realized and the architecture fleshed-out
  • several Transition iterations to migrate the product into the user community

Diagram described in accompanying text.

This strategy is appropriate when:

  • The problem domain is familiar.
  • Risks are well-understood.
  • The project team is experienced.

Lifecycle pattern: Evolutionary

"The evolutionary strategy differs from the incremental in acknowledging that user needs are not fully understood, and all requirements cannot be defined up front, they are refined in each successive build." [DOD94]

The following iterations are characteristic:

  • a short Inception iteration to establish scope and vision, and to define the business case
  • several Elaboration iterations, during which requirements are refined at each iteration
  • a single Construction iteration, during which the use cases are realized and the architecture is expanded
  • several Transition iterations to migrate the product into the user community

Diagram described in accompanying text.

This strategy is appropriate when:

  • The problem domain is new or unfamiliar.
  • The team is inexperienced.

Lifecycle pattern: Incremental Delivery 

Some authors have also phased deliveries of incremental functionality to the customer [GIL88]. This may be required where there are tight time-to-market pressures, where delivery of certain key features early can yield significant business benefits.

In terms of the phase-iteration approach, the transition phase begins early on and has the most iterations. This strategy requires a very stable architecture, which is hard to achieve in an initial development cycle, for an "unprecedented" system.

The following iterations are characteristic:

  • a short Inception iteration to establish scope and vision, and to define the business case
  • a single Elaboration iteration, during which a stable architecture is baselined
  • a single Construction iteration, during which the use cases are realized and the architecture fleshed-out
  • several Transition iterations to migrate the product into the user community

Diagram described in accompanying text.

This strategy is appropriate when:

  • The problem domain is familiar:

    • the architecture and requirements can be stabilized early in the development cycle
    • there is a low degree of novelty in the problem
  • The team is experienced.
  • Incremental releases of functionality have high value to the customer.

Lifecycle pattern: "Grand Design"

The traditional waterfall approach can be seen as a degenerated case in which there is only one iteration in the construction phase. It is called "grand design" in [DOD94]. In practice, it is hard to avoid additional iterations in the transition phase.

The following iterations are characteristic:

  • a short Inception iteration to establish scope and vision, and to define the business case
  • a single very long Construction iteration, during which the use cases are realized and the architecture fleshed-out
  • several Transition iterations to migrate the product into the user community

Diagram described in accompanying text.

This strategy is appropriate when:

  • a small increment of well-defined functionality is being added to a very stable product
  • the new functionality is well-defined and well-understood
  • The team is experienced, both in the problem domain and with the existing product

Lifecycle pattern: Hybrid Strategies

In practice few projects strictly follow one strategy. You often end up with a hybrid, some evolution at the beginning, some incremental building, and multiple deliveries. Among the advantages of the phase-iteration model is that it lets you accommodate a hybrid approach, simply by increasing the length and number of iterations in particular phases:

  • For complex or unfamiliar problem domains, where there is a high degree of exploration: increase the number of iterations in the elaboration phase and its length.
  • For more complex development problems, where there is complexity translating the design into code: increase the number of iterations in the construction phase and its length.
  • To deliver software in a series of incremental releases: increase the number of iterations in the transition phase and its length.


Moving from One Cycle to the Next

One pass through the four phases is a development cycle; each pass through the four phases produces a generation of the software. Unless the product "dies," it will evolve into its next generation by repeating the same sequence of inception, elaboration, construction and transition phases, but this time with a different emphasis on the various phases. These subsequent cycles are called evolution cycles. As the product goes through several cycles, new generations are produced.

Initial Development Diagram Chart

Evolution cycles may be triggered by user-suggested enhancements, changes in the user context, changes in the underlying technology, reaction to the competition, and so on. Evolution cycles typically have much shorter Inception and Elaboration phases, since the basic product definition and architecture are determined by prior development cycles.   Exceptions to this rule are evolution cycles in which a significant product or architectural redefinition occurs.