What is it?
In Software Engineering, most process models are better used when the software and its context is correspondent to the model itself. Process models itself are very hard to be universal and to work for every possible software and business.
However, RUP, which stands for Rational Unified Process, was created with this exact thought in mind: to be a universal, flexible and hybrid process model.
RUP phases
RUP has four main phases, which are:
-
Inception
This phase gathers all information about **user’s requirements, potential risks, and contribution of the project to the business. In other words, it’s about understanding what is being developed and for what.
-
Elaboration
This phase analyzes the requirements to design the system architecture and features, also planning how it’s going to work in the insides. In other words, it’s about understanding how it will be developed.
-
Construction
This phase is about creating a prototype of the product. Most development will be done here, building the product in ascending iterations until most of the product is done.
-
Transition
After the product is operational and ready to be used, it should be deployed to the user, being strategically introduced to its end user.
Workflows in RUP
For each of the four phases demonstrated above, the RUP model also presents nine main workflows, which are elements of the iteration of each phase. Each workflow can be more or less used depending on which of the main phase is the project at. But most commonly, it follows the following pattern:
-
Business modelling
Studies the business which the product will be used, determining the business needs.
-
Requirements
Creates the functionality requirements and the interface for interaction with the user.
-
Analysis and design
Focuses on detailing the requirements for better elaboration of the system.
-
Implementation
Actual development work: **coding and Unit Testing.
-
Testing
Removes the unit tests of the past workflow, and adds integration tests which focus on connecting different modules and program units.
-
Deployment
Development of production-ready versions of the system.
-
Configuration and change management
Management of multiple developers working together, tracking build versions, and enforcement of development rules and policies.
-
Project management
Planning of the project as a whole, applying a framework for managing software projects, like Agile.
-
Environment
Support the developer with infrastructure and tools for development. Basically, DevOps.