You are on page 1of 23

Rational Unified

Process

Whats Up?!
G. Booch: The bad news is that the expansion of the
software systems in size, complexity, distribution, and
importance pushes the limits of what we in the software
industry know how to develop. Trying to advance legacy
systems to more modern technology brings its own set
of technical and organizational problems. Compounding
the problem is that businesses continue to demand
increased productivity and improved quality with faster
development and demployment. Additionally, the supply
of qualified development personnel is not keeping pace
with demand.
The net result is that building and maintaining software
is hard and getting harder; building quality software in a
repeatable and predictable is harder still.

Common Software Development


Problems

Inaccurate understanding of end-user needs


Inability to deal with changing requirements
Modules dont integrate
It is difficult to maintain or extend the software
Late discovery of flaws
Poor quality and performance of the software
No coordinated team effort

Wrong Assumptions That Cause


Failure
Wrong Assumption 1:
Requirements Will Be Frozen

Wrong Assumption 2:
We Can Get the Design Right on Paper before Proceeding

Software Best Practices


Commercially proven approaches to software
development that, when used in combination, strike at
the root causes of software development problems. *

Develop software iteratively


Manage requirements
Use component-based architectures
Visually model software
Verify software quality
Control changes to software

Classic Software Development


Classic software development processes follow the
waterfall lifecycle. Development proceeds linearly from
requirements analysis, design, implementation, and
testing.

It takes too long to see


results.
It depends on stable, correct
requirements.
It delays the detection of
errors until the end.
It does not promote software
reuse and prototyping.

Iterative and Incremental Process


This approach is one of continuous discovery, invention, and
implementation, with each iteration forcing the development
team to drive the desired product to closure in a predictable
and repeatable way.

An iteration is a complete
development loop resulting
in a release (internal or
external) of an executable
product, a subset of the
final product under
development, which grows
incrementally from iteration
to iteration to become the
final system.

Benefits of an Iterative Approach

Risk Mitigation an iterative process lets developers mitigate risks


earlier than a sequential process where the final integration is the only
time that risks are discovered or addressed.
Accommodating Changes an iterative process lets developers take
into account requirements, tactical and technological changes
continuously.
Learning as You Go an advantage of the iterative process is that
developers can learn along the way, and the various competencies and
specialties are employed during the entire lifecycle.
Increased Opportunity for Reuse an iterative process facilitates reuse
of project elements because it is easy to identify common parts as they
are partially design and implemented instead of identifying all commonality
in the beginning.
Better Overall Quality the system has been tested several times,
improving the quality of testing. The requirements have been refined and
are related more closely to the user real needs. At the time of delivery, the
system has been running longer.

The Rational Unified Process


The Rational Unified Process (RUP) is a Software Engineering
Process. It provides a disciplined approach to assigning tasks and
responsibilities within a development organization. Its goal is to
ensure the production of high-quality software that meets the needs of
its end-users, within a predictable schedule and budget.

RUP is a process product. It is developed and maintained by Rational


Software and integrated with its suite of software development tools
available from IBM.
By Treating the RUP as product implies that RUP is never obsolete
RUP is a process framework that can be adapted and extended to suit the
needs of an adopting organization.
RUP captures many of best practices mentioned before (develop software
iteratively, manage requirements, use component-based architectures,
visually model software, continuously verify software quality, control
changes to software).

The Rational Unified Process as a


Product

IBM releases regular upgrades.

It is delivered online using Web technology, so it is literally at


the fingertips of the developers.

It can be tailored and configured to suit the specific needs of a


development organization.

It is integrated with many of the software development tools in


the IBM Rational Suites so that developers can access
process guidance from within the tool they are using.

Key Features of the RUP

Use-Case-Driven Development
Process Configuration
Tools Support

Who Is Using the Rational Unified


Process?

Telecommunications: Ericsson, Alcatel

Transportation, aerospace, defense: Lockheed-Martin, British


Aerospace

Manufacturing: Xerox, Volvo, Intel

Finances: Visa, Merrill Lynch, Schwab

System integrators: CAP Gemini Ernst & Young, Oracle, Deloitte


& Touche

Phases and Iterations


Each phase can be further broken down into iterations. An iteration
is a complete development loop resulting in a release (internal or
external) of an executable product, a subset of the final product
under development, which grows incrementally from iteration to
iteration to become the final system.
Scope and Business
Case agreement

LCO

Inception
Inception
Time

Preliminary
Iteration
Internal
Release

Product sufficiently
mature for customers
to use

Architecture
baselined
LCA

Elaboration
Elaboration

Acceptance
or end of life
IOC

Construction
Construction

PR

Transition
Transition

Architecture Architecture Developm. Developm. Developm. Transit. Transit.


Iteration
Iteration
Iteration
Iteration
Iteration Iteration Iteration
Minor
Milestone

First External Release


(e.g. beta)

Final
Release

Duration of an Iteration

An iteration starts with planning and requirements and


finishes with an internal or external release.
Ideal duration of an iteration is from two to six weeks,
depending on your project size and complexity.
Factors that affect duration of an iteration:
Size, stability and maturity of organization
Familiarity with the iterative process
Size of project
Technical simplicity of project
Level of automation used to manage code, distribute
information, perform testing

Conditions that Increase Number


of Iterations

Inception - working with new functionality, unknown business


environment, highly volatile scope, make-buy decisions
Elaboration - working with new system environment (new
architectural features), untested architectural elements, need
for system prototypes
Construction - lots of code to write and verify, new
technology or development tools
Transition - need for alphas and betas, conversions of
customer database, incremental delivery to customers

Typical Distribution of Time in


RUP

For example, a two-year project would have the following:


A 2-month inception phase
A 7-month elaboration phase
A 12-month construction phase
A 2-month transition phase

Major Artifacts
Stakeholder
Requests

Supplementary
Specification

Use-Case
Model

Risk
List

Business
Case

Vision

Software
Development
Plan

Glossary
Software
Architecture
Document

Test
Plan

Deployment
Plan

Software
Requirements
Specification

Product
Analysis
Model

Design
Model

Implementation
Model

Disciplines Produce and Share


Models
Business
Business
Modeling
Modeling

Requirements
Requirements

Analysis
Analysis&&
Design
Design

Implementation
Implementation

Business
Use-Case Model

Use-Case
Model

Design
Model

Implementation
Model

Business
Domain Model

Use-Case
Model

Design
Model

Implementation
Model

Business
Process Model

Design
Model

Test
Test

Test Suite

Use cases defined for a


system are the basis for the
entire development process.

You might also like