BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News The Various Flavors of Unified Process

The Various Flavors of Unified Process

This item in japanese

Bookmarks

The Rational Unified Process® (RUP®) was developed through the 1990's as a framework for software engineering best practices. Key features such as iterations, simplicity, focusing on value and regular feedback were identified as being important for successful software engineering. With the RUP as a starting point a number of authors have built methodologies that adapt UP to different project domains. 

 Background to the Rational Unified Process®    
 
The Rational Unified Process® (RUP®) was originally designed to provide a framework for software engineering. By 1997 Rational Software had articulated a set of seven best practices:
  1. Develop iteratively, with risk as the primary iteration driver
  2. Manage requirements
  3. Employ a component-based architecture
  4. Model software visually
  5. Continuously verify quality
  6. Control changes
  7. Customization
 
Rational built a framework of processes and practices which were embodied in a commercial product that provided three components:
  • a tailorable process that guided development
  • tools that automated the application of that process
  • services that accelerated adoption of both the process and the tools
 
The RUP is based around an iterative approach that defines a set of core and supporting disciplines that are applied over the life of the project. The figure below (referred to as the Hump Chart) shows the likely focus and intensity of the core disciplines across the four phases. 
 
Hump Chart 

Image source: http://en.wikipedia.org/wiki/File:Development-iterative.gif

As well as the core disciplines the RUP® defines supporting the disciplines of Configuration & Change Management, Project Management and Environment Support.  More detail about the RUP® can be found here  

IBM acquired Rational Software in 2003, and continues the commercial development and packaging of the RUP®.
 
In a 2002 paperPhilippe Kruchten, the original architect of the RUP framework, wrote a paper titled “Agility with the RUP”. In the paper he stated
Agility, for a software development organization, is the ability to adapt and react expeditiously and appropriately to changes in its environment and to the demands imposed by this environment. An agile process is one that readily embraces and supports this degree of adaptability. So, it is not simply about the size of the process or the speed of delivery; it is mainly about flexibility. In this article, I will explain how the Rational Unified Process® (RUP®) is a process framework that allows this flexibility.
He states that in addition to the seven core practices, the RUP® is based on a core set of principles, including:
·         Develop only what is necessary.
·         Focus on valuable results, not on how the results are achieved.
·         Minimize the production of paperwork.
·         Be flexible.
·         Learn from your mistakes.
·         Revisit your risks regularly.
·         Establish objective, measurable criteria for progress.
·         Automate what is human intensive, tedious, and error prone.
·         Use small, empowered teams.
·         Have a plan.
 
He concludes that the RUP® provides a framework that aligns well with Agile techniques and methods.
 
Since leaving IBM, Kruchten has gone on to become a Professor of Software Engineering in the Department of Electrical and Computer Engineering at University of British Columbia 

The Essential Unified Process

Ivar Jacobson, one of the original founders of Rational Software, offers the Essential Unified Process (ESSUP):
The Essential Unified Process (EssUP) is a collection of practices that together form the essential knowledge of a complete software development lifecycle. This practice-centric approach to software development incorporates and builds on established best practices. The practices in EssUP integrate successful principles from the unified process, agile and process maturity camps, capitalizing on their different capabilities: structure, agility and process improvement

The ESSUP is delivered as a set of Essential Practices, freely downloadable documents describing each of the practices as a set of Things to Produce, Things to Do and Key Competencies, with descriptions and guidelines for each one.

OpenUP - a lean Unified Process

OpenUP also defines a set of Processes, Practices, Roles, Work Products and Tasks that are needed for delivery of a software project. OpenUP is deployed as an Eclipse Process Framework (EPF) 

OpenUP is a lean Unified Process that applies iterative and incremental approaches within a structured lifecycle. OpenUP embraces a pragmatic, agile philosophy that focuses on the collaborative nature of software development. It is a tools-agnostic, low-ceremony process that can be extended to address a broad variety of project types.

 According to an article in Methods & Tools describing OpenUP by Bjorn Gustafsson

EPF is an open-source initiative that was started in 2006 with contributions by IBM Rational of parts of their RUP content and technology. Since its inception the project has actively involved more than 20 companies, and the first release was made available in September of 2007. Despite being an Eclipse project, EPF can be used to create process descriptions for any type of development, including J2EE on Eclipse or .NET using Microsoft Visual Studio. 

In the article he explains the background to the EPF and how OpenUP is deployed. He concludes: 

The new OpenUP process synthesizes the best practices from RUP and Agile methods into a light-weight and agile alternative to both. Given its RUP roots, it provides a process that is iterative and incremental, use-case driven, risk-driven, and architecture-centric, which at the same time supports the work habits of agile projects. The OpenUP process features practices suitable for many projects right out-of-the-box, but it also provides the basis for adding 3rd party and proprietary practice extensions, using the EPF Composer tool, to tailor the most appropriate process for each project

Enterprise Unified Process

Another derivative of the RUP® is Scott Ambler’s Enterprise Unified Process  

The Enterprise Unified Process (EUP) extends the RUP into additional phases both before the software development project starts and beyond the project into Production and Retirement.  The intent of the EUP is to enable the delivery of projects in more formal environments where governance and support processes are well defined and must be adhered to.
 
According to the EUP website:
Whereas the RUP defines a software development lifecycle, the EUP extends it to cover the entire information technology (IT) lifecycle. The extensions include two new phases, Production and Retirement, and several new disciplines: Operations and Support and the seven enterprise disciplines (Enterprise Business Modeling, Portfolio Management, Enterprise Architecture, Strategic Reuse, People Management, Enterprise Administration, and Software Process Improvement). 
Agile Unified Process
 
At the other extreme, Ambler also defines the Agile Unified Process, focused on lightweight approaches and a minimal set of practices that are driven by the Agile principles and values.  The Agile Unified Process website says that the AgileUP
is a simplified version of the Rational Unified Process (RUP).  It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP.  I've tried to keep the Agile UP as simple as possible, both in its approach and in its description.  The descriptions are simple and to the point, with links to details (on the web) if you want them.  The approach applies agile techniques include test driven development (TDD), Agile Model Driven Development (AMDD), agile change management, and database refactoring to improve your productivity.

On the website he explains the differences between the RUP disciplines and the AgileUP disciplines.

The whole Agile UP product is freely available as a downloadable ZIP file that installs a set of HTML pages that describe the Phases, Disciplines, Milestones, Roles and Deliverables, it also provides Guidance on the technical practices.

These are some of the variations and derivatives of the Unified Process. 

Do you use one of these products, what have your experiences been, and how do they fit in the Agile world?

Rate this Article

Adoption
Style

BT