You are on page 1of 24

Software Design

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


Aerospac

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 Architecture Product sufficiently Acceptance
Case agreement
baselined mature for customers or end of life
to use

LCO LCA IOC PR

Inception
Inception Elaboration
Elaboration Construction
Construction Transition
Transition

Time Preliminary Architecture Architecture Developm. Developm. Developm. Transit. Transit.


Iteration Iteration Iteration Iteration Iteration Iteration Iteration Iteration
Internal Minor First External Release Final
Release Milestone (e.g. beta) 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 Business Risk
Vision
Requests Case List

Software
Supplementary
Glossary Development
Specification
Plan

Software
Deployment
Use-Case Architecture
Test Plan
Model Document
Plan
Software
Requirements Product
Specification
Analysis Design Implementation
Model Model Model
Disciplines Produce and Share
Models
Business
Business Analysis
Analysis&&
Requirements
Requirements Implementation
Implementation Test
Test
Modeling
Modeling Design
Design

Business Use-Case Design Implementation Test Suite


Use-Case Model Model Model Model

Business Use-Case Design Implementation


Domain Model Model Model Model

Use cases defined for a


system are the basis for the
Business Design entire development process.
Process Model Model

You might also like