RUP© (IBM Rational Unified Process©) is a customizable process framework for software development and project management. It is a specialization of UP (Unified Process), same way there are others specializations including OpenUP, OpenUP/Basic and Agile Unified Process (AUP). Meanwhile RUP is supported by IBM, OpenUP and OpenUP/Basic are part of EPF (Eclipse Process Framework).
When an enterprise decides to implement RUP© it's recommended to use IBM Rational Method Composer, since it helps in a really heavy discipline - Environment. This composer allows RUP© to be customized in order to meet all project's needs and development styles. You may use a lightweight process or a more formal and regulated processes.
Unified Process is considered an agile methodology, and as such it embraces the idea of collaborative and incremental iterative development. Besides existence of AUP (Agile UP) being truly an agile methodology, RUP© is also considered an agile methodology by some authors. Instead of other methodologies which focuses solely on engineering disciplines or project management disciplines, RUP© is a complete methodology focusing on engineering and support disciplines.
It is important to say that RUP© is a development process, not software process. It has no references to phases such as production and maintenance.
The basic elements of a delivery process are:
- Processes: used to define work breakdown and workflow. It glues activities, tasks and roles in a structured sequence.
- Activities: used to organize the work breakdown structure into a hierarchy.
- Tasks: how to perform the work.
- Capability patterns: re-usable parts of the work breakdown structure.
- Roles: who performs the work.
- Work products: what is produced.
Building blocks for RUP© are roles, work product and tasks.
When the methodology was created it was based on a collection of other methodologies, with their own best practices. From those original methodologies resulted in six best practices adopted in RUP©:
- Develop iteratively, with risk as the primary iteration driver
- Manage requirements
- Employ a component-based architecture
- Model software visually
- Continuously verify quality
- Control changes
In order to have a better comprehension on RUP© and agile methodologies is necessary us to understand a few concepts.
Iterative development refers to rework scheduling strategy “in which time is set aside to revise and improve parts of the system.”. Iterative helps to improve your product and means add-onto.
Incremental is to staging and scheduling strategy “in which the various parts of the system are developed at different times or rates, and integrated as they are completed.”. Incremental helps to improve your process and means re-do.
Continuous integration is a practice where developers integrated their development frequently, usually through a tool which performs unit tests in a daily basis to detect errors as soon as possible.
RUP© itself is iterative and incremental.