The Rational Unified Process (RUP) (Krutchen, 2003) is an adaptable process model that has been derived from work on the UML and the associated Unified Software Development Process (Rumbaugh, et al., 1999) (Arlow and Neustadt, 2005). It brings together elements from all of the generic process models discussed in Section 2.1, illustrates good practice in specification and design (Section 2.2) and supports prototyping and incremental delivery (Section 2.3).
The RUP recognizes that conventional process models present a single view of the process. In contrast, the RUP is normally described from three perspectives:
- A dynamic perspective, which shows the phases of the model over time.
- A static perspective, which shows the process activities that are enacted.
- A practice perspective, which suggests good practices to be used during the process.
Most descriptions of the RUP attempt to combine the static and dynamic perspectives in a single diagram (Krutchen, 2003). I think that makes the process harder to understand, so I use separate descriptions of each of these perspectives.
The RUP is a phased model that identifies four discrete phases in the software process. However, unlike the waterfall model where phases are equated with process activities, the phases in the RUP are more closely related to business rather than technical concerns.
Iteration within the RUP is supported in two ways. Each phase may be enacted in an iterative way with the results developed incrementally. In addition, the whole set of phases may also be enacted incrementally, as shown by the looping arrow from Transition to Inception in the above diagram.
The static view of the RUP focuses on the activities that take place during the development process. These are called workflows in the RUP description. There are six core process workflows identified in the process and three core supporting workflows. The RUP has been designed in conjunction with the UML, so the workflow description is oriented around associated UML models such as sequence models, object models, etc. The core engineering and support workflows are:
|Business modelling||The business processes are modelled using business use cases.|
|Requirements||Actors who interact with the system are identified and use cases are developed to model the system requirements.|
|Analysis and design||A design model is created and documented using architectural models; component models; object models and sequence models.|
|Implementation||The components in the system are implemented and structured into implementation sub-systems. Automatic code generation from design models helps accelerate this process.|
|Testing||Testing is an iterative process that is carried out in conjunction with implementation. System testing follows the completion of the implementation.|
|Deployment||A product release is created; distributed to users and installed in their workplace.|
|Configuration and change management||This supporting workflow managed changes to the system (see Chapter 25).|
|Project management||This supporting workflow manages the system development (see Chapters 22 and 23).|
|Environment||This workflow is concerned with making appropriate software tools available to the software development team.|
The advantage in presenting dynamic and static views is that phases of the development process are not associated with specific workflows. In principle at least, all of the RUP workflows may be active at all stages of the process. In the early phases of the process, most effort will probably be spent on workflows such as business modelling and requirements and, in the later phases, in testing and deployment.
Krutchen, P. (2003). The Rational Unified Process – An Introduction (3rd edition). Reading, MA: Addison-Wesley.
Arlow, J. and Neustadt, I. (2005). UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition). Boston: Addison-Wesley.
Rumbaugh, J., Jacobson, I. and Booch, G. (1999). The Unified Software Development Process. Reading, Mass.: Addison-Wesley.