RUP (Rational Unified Process)

The Rational Unified Process (RUP) from the Rational Company is an engineering process based on “best practices” in the software development business. Some of the “best practices” are iterative software development, requirement management, change control and quality assessment. By providing this process with a massive knowledge base it is possible to increase productivity in a project and ensure that every project member understands how software is developed and avoid person-dependant processes. The Rational Unified Process enforces the use of the Unified Modelling Language (UML), which leads to clear communication of requirements, architecture and design.

RUP suits all kinds of organizations and can be tailored after specific needs. The end goal of RUP is to produce quality software within a predictable schedule and budget. The process is built around two dimensions, time and content as shown in the Figure below.

 

 

The Iterative Model graph shows how the process is structured along two dimensions.


The Time Dimension

Development of software can be divided into phases where the focus is on different issues in the different phases. Each phase is, dependent on the size and type of project, divided into one or more iterations. By using the iterative approach a project can get more manageable changes, better quality, mitigate risks earlier and get more knowledge about the problem domain as compared to, for example the waterfall process which basically only runs one iteration. At the end of each phase a number of artefacts should have been produced that provides information about how to proceed with the project. The four phases RUP defines are:

The Content dimension

In a project the members have different roles. To ensure that each person in his role is aware of what he is expected to deliver a number of workflows are defined in RUP. These workflows describe sequences of activities that produce artefacts in the correct order and that are aligned, synchronized to the activities in other workflows.

The core "engineering" workflows:

  1. Business modeling - Using a common language like UML between groups that doesn’t understand each other’s area of proficiency a common understanding for the business process to be supported is assured.
  2. Requirements– Translation of the business model to functional and non-functional requirements, descriptions of what the system is expected to do. 
  3. Analysis & Design– Description of how the system is to be realized to fulfil all requirements. This forms an input to the implementation workflow.
  4. Implementation– Implementation of the design, unit tests and integration of components into executable systems. 
  5. Test - Find defects as early as possible as the cost to correct them increases the later in a software cycle they are found. Tests are focused on three areas, reliability, functionality and performance.
  6. Deployment – Production of product releases, and delivery of them to end-users. Provision of support and migration help.

The core "supporting" workflows:

  1. Project Management – Management of competing objectives, risks to the project and successful delivery of a product.
  2. Configuration and Change Management - Management of parallel development, development done at multiple sites, multiple variants of systems and change requests.
  3. Environment – Provision of tools to a software project and adaptation of RUP to the specific project.