SlideShare a Scribd company logo
1 of 88
Software Engineering Process
Disciplined, Modern, and Mature
An Overview Workshop for the Railroad
Commission of Texas
January 21 & 22, 2003
““Freedom to Create”Freedom to Create”
The Value of SoftwareThe Value of Software
• The theme for the most recent Rational User
Conference was “Freedom to Create”
• Indeed, ‘Software is the fuel on which modern
businesses are run, governments rule, and
societies become better connected.’ Grady Booch
• Creativity, innovation, a blending and unifying of
art and science is what software development is all
about
““Freedom to Create”Freedom to Create”
The Value of SoftwareThe Value of Software
• As software professionals, the exciting news is that
software is a critical success factor for many
organizations, whether private of public
• The challenge is that software is expanding in size,
complexity, distribution, and importance
• With so much at stake, software professionals
must seek out, understand, and master the
processes that we need to be success
““Freedom to Create”Freedom to Create”
• While CMM/CMMI describes the principles and
practices underlying software management
process maturity, Rational Software
Corporation’s Rational Unified Process provides a
state-of-the-art software engineering process and a
related process framework that is complimentary
to and supportive of the Key Process Areas
defined in CMM/CMMI
The Value of SoftwareThe Value of Software
““Freedom to Create”Freedom to Create”
• By studying each of these bodies of knowledge, we
can take the best ideas, concepts, and processes
that each has to offer and grow in our ability to
produce quality software
The Value of SoftwareThe Value of Software
Rational Unified ProcessRational Unified Process
Software Engineering Best PracticesSoftware Engineering Best Practices
• The RUP has a rich history with roots that trace
back to the Objectory Process that was first
released in Sweden in 1987
• Many of the leaders in the object-oriented
software engineering industry have contributed to
the evolution of this process including Ivar
Jacobson, Grady Booch, and James Rumbaugh,
all of whom now work for Rational Software
Corporation
Rational Unified ProcessRational Unified Process
Software Engineering Best PracticesSoftware Engineering Best Practices
• Grady Booch, Chief Scientist
• Dr. Ivan Jacobson, Vice President of Process
Strategy
• Dr. James Rumbaugh, Rational Fellow
• Dr. Philippe Kruchten, Director of Process
Development
Rational Unified ProcessRational Unified Process
Software Engineering Best PracticesSoftware Engineering Best Practices
• The RUP is described in detail in Phillipe
Kruchten’s book, The Rational Unified Process:
An Introduction 2nd Edition
• This process describes how to effectively employ
commercially proven software development best
practices within the context of a defined software
engineering process
• RUP is at once disciplined and configurable to the
needs of each unique software project
Rational Unified ProcessRational Unified Process
Software Engineering Best PracticesSoftware Engineering Best Practices
• With the goal of ensuring the production of
quality software systems in a repeatable and
predictable fashion, the software engineering best
practices championed by the RUP include:
 Develop Software Iteratively
 Manage Requirements
 Use Component Architectures
 Visually Model Software
 Continuously Verify Software Quality
 Control Changes to Software
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• Developing software iteratively is a technique that
is used to deliver the functionality of a system in a
successive series of incremental releases of
increasing complexity
• Each release is developed in a specific, fixed time
period called an ‘iteration’
• Each iteration is focused on defining, analyzing,
building and testing some set of requirements
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• An iterative approach to software development
enables an increasing understanding of the
problem through successive refinements
• An effective solution is incrementally grown over
multiple iterations, each of which is an executable
release (internal or external)
• Developing software iteratively is in contrast to a
classical Waterfall approach
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• This approach makes it easier to accommodate
tactical changes in requirements, features, and
schedule as well as address the highest risk items
at every stage in software development lifecycle
• As mentioned above, one of the primary benefits
of this approach is risk mitigation
• Using a classical Waterfall approach, discovery
and mitigation of risks are pushed forward in time
where they are the most costly to correct
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Misunderstandings are made evident early in
the software lifecycle where it is most cost
effective to respond
 This approach enables and encourages user
feedback so as to elicit the system’s real
requirements
 The development team is able to focus on those
issues that are the most critical (e.g., risks)
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Continuous, iterative testing enables an
objective assessment of the project’s status
 Inconsistencies among requirements, designs,
implementations are detected early
 The workload of the team is spread more
evenly throughout the project’s lifecycle
 The team can leverage lessons learned and
therefore continuously improve the process
Develop SoftwareDevelop Software
IterativelyIteratively
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Project Stakeholders can be given concrete
evidence of the project’s status throughout its
life
Manage RequirementsManage Requirements
Software Engineering Best PracticesSoftware Engineering Best Practices
• The Object Management Group describes a
requirement as “a desired feature, property, or
behavior of a system”
• The challenge of requirements is that they are at
once dynamic and difficult to exhaustively state
• As a result, identifying a system’s true
requirements is a continuous process
Manage RequirementsManage Requirements
Software Engineering Best PracticesSoftware Engineering Best Practices
• Requirements management is concerned with:
 Eliciting, organizing, and documenting the
system’s required functionality and
constraints
 Evaluating changes to these requirements and
assessing their impact
 Tracking and documenting trade-offs and
decisions
Manage RequirementsManage Requirements
Software Engineering Best PracticesSoftware Engineering Best Practices
• Eliciting, organizing, and documenting
requirements through a use case driven approach
ensures that the final product meets the end users
needs and fulfills their expectations
• Furthermore, the use case and scenario driven
approach provides a common thread through the
design, implementation, and testing of the
software
Manage RequirementsManage Requirements
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 A disciplined approach is built into
requirements management
 Communications are based on defined
requirements
 Requirements can be prioritized, filtered, and
traced
 An objective assessment of functionality and
performance is possible
Manage RequirementsManage Requirements
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Inconsistencies are detected more easily
 With suitable tool support, it is possible to
provide a repository for a system’s
requirements, attributes, and traces, with
automatic links to external documents
Component-BasedComponent-Based
ArchitecturesArchitectures
Software Engineering Best PracticesSoftware Engineering Best Practices
• Components are cohesive groups of code, in
source or executable form, with well-defined
interfaces and behaviors that provide strong
encapsulation of their contents, and are, therefore,
replaceable
• Architectures based around components tend to
reduce the effective size and complexity of the
solution, and so are more robust and resilient
Component-BasedComponent-Based
ArchitecturesArchitectures
Software Engineering Best PracticesSoftware Engineering Best Practices
• Employing an architecture-centric process, the
focus is on designing a resilient component-based
architecture that is flexible, accommodates
change, is intuitively understandable, and
promotes more effective software reuse
• It enable a systematic approach to defining an
architecture comprised of both new and existing
commercially available component infrastructures
Component-BasedComponent-Based
ArchitecturesArchitectures
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Components facilitate resilient architectures
 Modularity enables a clear separation of
concerns among elements of a system that are
subject to change
 Reuse is facilitated by leveraging standardized
frameworks and commercially available
components
Component-BasedComponent-Based
ArchitecturesArchitectures
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Components provide a natural basis for
configuration management
 Visual modeling tools provide automation for
component-based development
Visually Model SoftwareVisually Model Software
Software Engineering Best PracticesSoftware Engineering Best Practices
• A model is a simplified view of a system
• It shows the essentials of the system from a
particular perspective while hiding the non-
essential details
• Using the industry standard Unified Modeling
Language (UML), the RUP emphasizes the visual
modeling of software to capture the structure and
behaviors of the architecture and components
Visually Model SoftwareVisually Model Software
Software Engineering Best PracticesSoftware Engineering Best Practices
• Software models are useful because:
 They provide visual abstractions that promote
communication
 Enable a better understanding of how the
system fits together
 Ensure the software building blocks are
consistent with the code
 Help maintain consistency between design and
implementation
Visually Model SoftwareVisually Model Software
Software Engineering Best PracticesSoftware Engineering Best Practices
• Important models within the RUP include, but are
not limited to:
 Use Case Diagrams
 Sequence Diagrams
 Collaboration Diagrams
 Class Diagrams
 Deployment Diagrams
Visually Model SoftwareVisually Model Software
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Use cases and scenarios unambiguously specify
behavior
 Models unambiguously capture software
design
 Non-modular and inflexible architectures are
exposed
 Unambiguous designs reveal their
inconsistencies more readily
Visually Model SoftwareVisually Model Software
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Application quality starts with good design
 Visual modeling tools provide support for
UML modeling (e.g., Rational Rose)
Continuously VerifyContinuously Verify
Software QualitySoftware Quality
Software Engineering Best PracticesSoftware Engineering Best Practices
• To address the consequences that result from poor
performance and poor quality, quality assessment
is built into every phase and activity of the RUP
• From the perspective of RUP, software quality is
multi-dimensional and it is the responsibility of
every member of the project team
• Product quality is concentrated on building the
right product, whereas process quality is focused
on building the product correctly
Continuously VerifyContinuously Verify
Software QualitySoftware Quality
Software Engineering Best PracticesSoftware Engineering Best Practices
• Using objective measurements and criteria that
are directly linked to the use case driven
approach, software quality is not an afterthought
• This focus on quality results in software systems
that are:
 Reliable
 Fulfill their functional requirements
 Meet all non-functional requirements at both
an application and system level
Continuously VerifyContinuously Verify
Software QualitySoftware Quality
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Project status assessment is made objective,
and subjective, because test results, and not
paper documents, are evaluated
 This objective assessment exposes
inconsistencies in requirements, designs, and
implementations
 Defects are identified early, thus reducing the
cost of fixing them
Continuously VerifyContinuously Verify
Software QualitySoftware Quality
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 Testing and verification are focused on areas
of highest risk, thereby increasing the quality
and effectiveness of those areas
Control Changes toControl Changes to
SoftwareSoftware
Software Engineering Best PracticesSoftware Engineering Best Practices
• Managing change is a critical-success factor for
every software project particularly given that
change is inevitable
• Change can occur in all software artifacts
including requirements, documents, models, etc.
• Understanding that change is inevitable,
controlling, tracking, and monitoring change is
essential in order to enable successful software
development in a project team environment
Control Changes toControl Changes to
SoftwareSoftware
Software Engineering Best PracticesSoftware Engineering Best Practices
• This best practice offers the following benefits:
 The workflow of requirements change is
defined and repeatable
 Change requests facilitate clear
communication
 Change rate statistics provide good metrics for
objectively assessing project status
 Changes can be maintained in a robust,
customizable system
Exercise #2Exercise #2
Software Engineering Best PracticesSoftware Engineering Best Practices
• Organize into your same groups and identify a
group facilitator
• Discuss and Rank the Best Practices 1 Thru 6
 Develop Software Iteratively
 Manage Requirements
 Use Component Architectures
 Visually Model Software
 Continuously Verify Software Quality
 Control Changes to Software
• After each group has completed its ranking, the
rankings will be presented and discussed
Development ProcessDevelopment Process
A Development Process Should:
• Be based upon the cumulative experience of
software professionals, with specific guidance to
convey those experience
• Define the sequence of steps that lead to
deliverables and who is responsible for them
• Provide assistance regarding who and how to
produce the deliverables it defines
• Help to control the project and reduce confusion
Development ProcessDevelopment Process
A Development Process Should:
• Help project management to resource, plan, and
measure project
• Provide a structure which works to mitigate and
reduce risk
• Make software development predictable,
repeatable, and measurable
• Not be another process gathering dust
Development ProcessDevelopment Process
Communication, Communication, Communication
• Communication lies at the heart of any process
• Process helps project team members speak the
same development language
• Process helps project team members understand
their common goals (e.g., deliverables)
RUP Structure andRUP Structure and
ContentContent
According to Grady Booch, and consistent with the
previous, a software development process has four
roles:
 Provide guidance as to the order of a team’s
activities
 Specify which artifacts should be developed
and when they should be developed
 Direct the task of individual developers and
the team as a whole
 Offer criteria for monitoring and measuring
the project’s products and activities
RUP Structure andRUP Structure and
ContentContent
• Without a well defined process, a development
team will, in all likelihood, develop software in an
ad hoc manner
• As pointed out by the CMM, success in these
circumstances is dependent upon the skill and
heroic efforts of a few dedicated individuals
• Under such circumstances, success can not be
repeated and no learning occurs between projects
RUP Structure andRUP Structure and
ContentContent
• In contrast, mature organizations employ both
well defined software management process and
well defined software engineering processes
• Doing so enables the development of complex
software in a repeatable and predictable fashion
• A mature and well defined software engineering
process enables and encourages all of the best
practices described earlier
• This is the approach taken by the RUP
RUP Structure andRUP Structure and
ContentContent
• RUP is a software engineering process that
provides a disciplined approach to assigning tasks
and responsibilities
• RUP is also a process product that is developed
and maintained by the Rational Software
Corporation
• As a process product, it is integrated with
Rational’s suite of software development tools
• RUP is also a process framework that can be
adapted and extended by an organization
Rational Unified ProcessRational Unified Process
A Process Product
• RUP is a software engineering process that
provides a disciplined approach to assigning
tasks and responsibilities
• RUP is also a process framework that can be
adapted and extended by an organization
• RUP is also a process product that is developed
and maintained by the Rational Software
Corporation
Rational Unified ProcessRational Unified Process
A Process Product
• This process product provides a Web-enabled,
searchable knowledge base that captures the
combined experience of software professionals
• It can be used as a online mentor covering the
full project lifecycle
• RUP is integrated with Rational Software
Corporation’s suite of software development
tools
Rational Unified ProcessRational Unified Process
A Process Product
• Its tool mentors provide guidance on how to
effectively use Rational tools in the context of the
Rational Unified Process
• As such, it provides education, consulting, and
mentoring when an organization adopts the
process
Rational Unified ProcessRational Unified Process
Role of UML in RUP
• In order to reap the full benefits of the UML,
organizations need to know how to use this
language effectively
• RUP was developed hand-in-hand with the UML
• Many of the artifacts within RUP have a UML
representation
• The process product provides mentoring and
guidance for UML concepts
Rational Unified ProcessRational Unified Process
RUP Structure
• RUP is structured along two dimensions:
 Organization along time
 Organization based on content
• The time structure refers to the lifecycle aspect
of the process
• That is, how the process rolls out within the
context of a software development project
• The content structure refers to the Disciplines,
which group activities logically by nature
Rational Unified ProcessRational Unified Process
Organization Along Time
• The time aspect of the process is described in
terms of phases, iterations, and milestones
• RUP phases include:
 Inception
 Elaboration
 Construction
 Transition
• The phase boundaries in RUP correspond to
significant decision points in the life of project
Rational Unified ProcessRational Unified Process
Organization Along Time
• Milestones help project stakeholders asses the
progress of a project at key points
• Milestones give project stakeholders the
opportunity to change the course of a project
Rational Unified ProcessRational Unified Process
Inception Phase
• The overriding goal of the inception phase is to
achieve concurrence among all stakeholders on
the objectives for the project
• The inception phase is of significance primarily
for new development efforts
• For projects focused on enhancements to an
existing system, the inception phase is more brief
• The milestone for this phase is concerned with
evaluating the basic viability of the project
Rational Unified ProcessRational Unified Process
Elaboration Phase
• The goal of the elaboration phase is to baseline
the architecture of the system in order to provide
a stable basis for the bulk of the design and
implementation effort in the construction phase
• The architecture evolves out of a consideration
of the most significant requirements and an
assessment of risk
• The stability of the architecture is evaluated
through one or more architectural prototypes
Rational Unified ProcessRational Unified Process
Elaboration Phase
• The milestone for this phase is concerned with
establishing a managed baseline for the
architecture of the system
Rational Unified ProcessRational Unified Process
Construction Phase
• The goal of the construction phase is on
clarifying the remaining requirements and
completing the development of the system based
upon the baselined architecture
• The management mindset undergoes a transition
from the development of intellectual property
during inception and elaboration, to the
development of deployable products during
construction and transition
Rational Unified ProcessRational Unified Process
Construction Phase
• The milestone for this phase is concerned
milestone determines whether the product is
ready to be deployed into a beta-test
environment
Rational Unified ProcessRational Unified Process
Transition Phase
• The focus of the Transition Phase is to ensure
that software is available for its end users
• The Transition Phase can span several iterations,
and includes testing the product in preparation
for release, and making minor adjustments
based on user feedback
• User feedback should focus mainly on fine
tuning the product – behavioral/structural issues
should have been refined much earlier
Rational Unified ProcessRational Unified Process
Transition Phase
• By the end of the Transition Phase lifecycle
objectives should have been met and the project
should be in a position to be closed out
• In some cases, the end of the current life cycle
may coincide with the start of another lifecycle
on the same product, leading to the next
generation or version of the product
Rational Unified ProcessRational Unified Process
What is an Iteration?
• According to RUP, an iteration is a pass through
all the disciplines resulting in a release (internal
or external)
• Each iteration can be seen as a mini-project with
a plan (i.e., and Iteration Plan), deliverables, and
assessment
• Each iteration can also be seen as a mini-
waterfall
Rational Unified ProcessRational Unified Process
Iteration: Number and Duration
• The duration of each iteration will be project
dependent and defined, in part, by the overall
project ‘timebox’
• The number of iterations is also project
dependent, but Rational recommends 6, plus or
minus 3
 Inception: 0 .. 1
 Elaboration: 1 .. 3
 Construction: 1 .. 3
 Transition: 1 .. 2
Rational Unified ProcessRational Unified Process
Organization Along Content
• The content of RUP is organized into Disciplines
• Each Discipline is a logical grouping of roles,
activities, and artifacts
 Roles: the who
 Activities: the how
 Artifacts: the what
• A Role performs certain Activities and is
responsible for certain Artifacts, or the work
products of the process
Rational Unified ProcessRational Unified Process
Organization Along Content
• The grouping activities into disciplines is mainly
an aid to understanding the project from a
‘traditional’ waterfall perspective
• For example, it is more common to perform
certain requirements activities in close
coordination with analysis and design activities
Rational Unified ProcessRational Unified Process
RUP’s Nine Disciplines
• Business Modeling
• Requirements
• Analysis and Design
• Implementation
• Test
• Deployment
• Configuration and Change Management
• Project Management
• Environment
Rational Unified ProcessRational Unified Process
Business Modeling - Purpose
• To understand the structure and the dynamics of
the organization in which a system is to be
deployed (the target organization)
• To understand current problems in the target
organization and identify improvement
potentials
• To ensure that customers, end users, and
developers have a common understanding of the
target organization
Rational Unified ProcessRational Unified Process
Business Modeling - Purpose
• To derive the system requirements needed to
support the target organization
Rational Unified ProcessRational Unified Process
Requirements - Purpose
• To establish and maintain agreement with the
customers and other stakeholders on what the
system should do
• To provide system developers with a better
understanding of the system requirements
• To define the boundaries of (delimit) the system
• To provide a basis for planning the technical
contents of iterations
Rational Unified ProcessRational Unified Process
Requirements - Purpose
• To provide a basis for estimating cost and time
to develop the system
• To define a user-interface for the system,
focusing on the needs and goals of the users
Rational Unified ProcessRational Unified Process
Analysis and Design - Purpose
• To transform the requirements into a design of
the system-to-be
• To evolve a robust architecture for the system
• To adapt the design to match the implementation
environment (e.g., J2EE), designing it for
performance
Rational Unified ProcessRational Unified Process
Implementation - Purpose
• To define the organization of the code, in terms
of implementation subsystems organized in
layers
• To implement classes and objects in terms of
components
• To test the developed components as units
• To integrate the results produced by individual
implementers, into an executable system
Rational Unified ProcessRational Unified Process
Test - Purpose
• The Test discipline acts in many respects as a
service provider to the other disciplines
• Testing focuses primarily on the evaluation or
assessment of product quality realized through a
number of core practices:
 Finding and documenting defects in software
quality
 Generally advising about perceived software
quality
Rational Unified ProcessRational Unified Process
Test - Purpose
• The Test discipline acts in many respects as a
service provider to the other disciplines
• Testing focuses primarily on the evaluation or
assessment of product quality realized through a
number of core practices:
 Proving the validity of the assumptions made
in design and requirement specifications
through concrete demonstration
Rational Unified ProcessRational Unified Process
Test - Purpose
• The Test discipline acts in many respects as a
service provider to the other disciplines
• Testing focuses primarily on the evaluation or
assessment of product quality realized through a
number of core practices:
 Validating the software product functions as
designed
 Validating that the requirements have been
implemented appropriately
Rational Unified ProcessRational Unified Process
Deployment - Purpose
• The Deployment Discipline describes the
activities associated with ensuring that the
software product is available for its end users
• The Deployment Discipline describes three
modes of product deployment:
 The custom install
 The "shrink wrap" product offering
 Access to software over the internet
Rational Unified ProcessRational Unified Process
Configuration and Change Management - Purpose
• To paraphrase the SEI’s CMM ‘Configuration
and Change Management controls change to,
and maintains the integrity of, a project’s
artifacts’
• This Discipline involves:
 Identifying configuration items
 Restricting changes to those items
 Auditing changes made to those items
 Defining and managing configurations of
those items
Rational Unified ProcessRational Unified Process
Project Management - Purpose
• To provide a framework for managing software-
intensive projects
• To provide practical guidelines for planning,
staffing, executing, and monitoring projects
• To provide a framework for managing risk
• Within RUP, however, not every aspect of the
Project Management Discipline is covered (e.g.,
managing people, budget, and contracts)
Rational Unified ProcessRational Unified Process
Environment - Purpose
• Focuses on the activities necessary to configure
the process for a project
• Describes the activities required to develop the
guidelines in support of a project
• Provides the software development organization
with the software development environment,
both processes and tools, that will support the
development team
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Introduction
 Concepts
 Workflow
 Activity Overview
 Artifact Overview
 Guidelines Overview
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Introduction
Purpose of the discipline and its relationship
to other disciplines
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Concepts
Key concepts that are important for
understanding the discipline
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Workflow
A conditional flow of events when conducting
the discipline, expressed in terms of
workflow details
A workflow detail is a grouping of activities
that are done together
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Activity Overview
The activities that are performed in this
discipline, and the roles that are responsible
Rational Unified ProcessRational Unified Process
Organization of Disciplines
• Within RUP, each Discipline consists of the
following:
 Guidelines Overview
More detailed explanation on how to use and
produce the artifacts of the process
The rules and recommendations that support
activities and their steps
Rational Unified ProcessRational Unified Process
Additional Process Elements – Tool Mentors
• Explain how to use a specific tool to perform an
activity or steps in an activity
• Linked by default to Rational tools:
 RequisitePro – requirements management
 Rational Rose – visual modeling using UML
 ClearQuest – change management and defect
tracking
Rational Unified ProcessRational Unified Process
Additional Process Elements – Templates
• Predefined artifact prototypes in the following
formats:
 Documents – MS Word, Adobe Framemaker
 MS Project
 HTML
• The templates have been tailored for the process
Rational Unified ProcessRational Unified Process
Additional Process Elements – White Papers
• RUP’s knowledge base is extended through the
provision of various White Papers
• For example, White Papers are provided for:
 A Comparison of RUP and XP
 Requirements Management with Use Cases
 Modeling Web Application Architectures
with UML
 Reaching CMM Levels 2 and 3
 The Estimation of Effort base on Use Cases
Rational Unified ProcessRational Unified Process
Additional Process Elements – Work Guidelines
• Provide practical information on techniques to
help you perform certain tasks throughout the
process
• Guidelines are provided for:
 Workshops
 Requirements Elicitation
 Testing
 Reviews
Rational Unified ProcessRational Unified Process
Process Product Demonstration
ResourcesResources
• Ivan Jacobson, Grady Booch, James Rumbaugh
(1999). The Unified Software Development Process.
Addison Wesley Longman, Inc.
• Philippe Kruchten (2000). The Rational Unified
Process: An Introduction 2nd
Edition . Addison
Wesley.
• Rational University (2002). Rational Unified
Process Fundamentals: Student Manual. Rational
Software Corporation.
ResourcesResources
• Rational Software Corporation – RUP White
Papers available on the Web at:
www.rational.com/products/rup/whitepapers.jsp

More Related Content

What's hot

Software Development Life Cycle – SDLC
Software Development Life Cycle – SDLCSoftware Development Life Cycle – SDLC
Software Development Life Cycle – SDLCShwetha-BA
 
Guiding Principles & Methodology for Cloud Computing Adoption
Guiding Principles & Methodology for Cloud Computing AdoptionGuiding Principles & Methodology for Cloud Computing Adoption
Guiding Principles & Methodology for Cloud Computing AdoptionKumar Arikrishnan
 
system development life cycle
system development life cycle system development life cycle
system development life cycle Sumit Yadav
 
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfSDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfOpenLearningLab
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spmmeena466141
 
Lect2 conventional software management
Lect2 conventional software managementLect2 conventional software management
Lect2 conventional software managementmeena466141
 
Alliance 2017 3891-University of California | Office of The President People...
Alliance 2017  3891-University of California | Office of The President People...Alliance 2017  3891-University of California | Office of The President People...
Alliance 2017 3891-University of California | Office of The President People...Smart ERP Solutions, Inc.
 
Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Jkumararaja
 
Requirements engineering for agile methods
Requirements engineering for agile methodsRequirements engineering for agile methods
Requirements engineering for agile methodsSyed Zaid Irshad
 
Agile architecture
Agile architectureAgile architecture
Agile architecturePaul Preiss
 
Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)ShudipPal
 
Software engineering introduction
Software engineering   introductionSoftware engineering   introduction
Software engineering introductionDr. Loganathan R
 
Software engineering by Dr. vishnu sharma
Software engineering by Dr. vishnu sharmaSoftware engineering by Dr. vishnu sharma
Software engineering by Dr. vishnu sharmaVishnu Sharma
 
Daniel.dvorak
Daniel.dvorakDaniel.dvorak
Daniel.dvorakNASAPMC
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptxAmna Ch
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles sathish sak
 
OO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesOO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesRandy Connolly
 
Beit 381 se lec 3 - 46 - 12 feb14 - sd needs teams to develop intro
Beit 381 se lec 3 - 46  - 12 feb14 - sd needs teams to develop introBeit 381 se lec 3 - 46  - 12 feb14 - sd needs teams to develop intro
Beit 381 se lec 3 - 46 - 12 feb14 - sd needs teams to develop introbabak danyal
 

What's hot (20)

Software Development Life Cycle – SDLC
Software Development Life Cycle – SDLCSoftware Development Life Cycle – SDLC
Software Development Life Cycle – SDLC
 
Guiding Principles & Methodology for Cloud Computing Adoption
Guiding Principles & Methodology for Cloud Computing AdoptionGuiding Principles & Methodology for Cloud Computing Adoption
Guiding Principles & Methodology for Cloud Computing Adoption
 
system development life cycle
system development life cycle system development life cycle
system development life cycle
 
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfSDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spm
 
Lect2 conventional software management
Lect2 conventional software managementLect2 conventional software management
Lect2 conventional software management
 
Alliance 2017 3891-University of California | Office of The President People...
Alliance 2017  3891-University of California | Office of The President People...Alliance 2017  3891-University of California | Office of The President People...
Alliance 2017 3891-University of California | Office of The President People...
 
UCPath at UCOP
UCPath at UCOPUCPath at UCOP
UCPath at UCOP
 
Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)
 
Requirements engineering for agile methods
Requirements engineering for agile methodsRequirements engineering for agile methods
Requirements engineering for agile methods
 
Agile architecture
Agile architectureAgile architecture
Agile architecture
 
Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)
 
Software engineering introduction
Software engineering   introductionSoftware engineering   introduction
Software engineering introduction
 
Software engineering by Dr. vishnu sharma
Software engineering by Dr. vishnu sharmaSoftware engineering by Dr. vishnu sharma
Software engineering by Dr. vishnu sharma
 
Sda 6
Sda   6Sda   6
Sda 6
 
Daniel.dvorak
Daniel.dvorakDaniel.dvorak
Daniel.dvorak
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles
 
OO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesOO Development 2 - Software Development Methodologies
OO Development 2 - Software Development Methodologies
 
Beit 381 se lec 3 - 46 - 12 feb14 - sd needs teams to develop intro
Beit 381 se lec 3 - 46  - 12 feb14 - sd needs teams to develop introBeit 381 se lec 3 - 46  - 12 feb14 - sd needs teams to develop intro
Beit 381 se lec 3 - 46 - 12 feb14 - sd needs teams to develop intro
 

Viewers also liked (14)

HST 201 Term Paper
HST 201 Term PaperHST 201 Term Paper
HST 201 Term Paper
 
learn to grow your money with 30% monthly with MMM
learn to grow your money with 30% monthly with MMMlearn to grow your money with 30% monthly with MMM
learn to grow your money with 30% monthly with MMM
 
Cv Dr. Mostafa Abdel Azim April 2015
Cv Dr. Mostafa Abdel Azim April  2015Cv Dr. Mostafa Abdel Azim April  2015
Cv Dr. Mostafa Abdel Azim April 2015
 
RRC AD
RRC ADRRC AD
RRC AD
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Tipos de cable
Tipos de cableTipos de cable
Tipos de cable
 
الصفوة
الصفوةالصفوة
الصفوة
 
The Crest Of Westwood - Press Kit
The Crest Of Westwood - Press KitThe Crest Of Westwood - Press Kit
The Crest Of Westwood - Press Kit
 
School in britain unit 2
School in britain unit 2School in britain unit 2
School in britain unit 2
 
Office 365 02
Office 365 02Office 365 02
Office 365 02
 
Alcoholismo en las intituciones educativas
Alcoholismo en las intituciones educativasAlcoholismo en las intituciones educativas
Alcoholismo en las intituciones educativas
 
RRC Requirements and Use Cases
RRC Requirements and Use CasesRRC Requirements and Use Cases
RRC Requirements and Use Cases
 
TEA Presentation
TEA PresentationTEA Presentation
TEA Presentation
 
RRC Testing
RRC TestingRRC Testing
RRC Testing
 

Similar to RRC RUP

Software Engineering - Introdution.ppt
Software Engineering - Introdution.pptSoftware Engineering - Introdution.ppt
Software Engineering - Introdution.pptSasiR18
 
When agility meets software quality
When agility meets software qualityWhen agility meets software quality
When agility meets software qualityBabak Khorrami
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Raj vardhan
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software EngineeringPurvik Rana
 
Moving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMoving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMark Sigler
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economicsmeena466141
 
Recent and-future-trends spm
Recent and-future-trends spmRecent and-future-trends spm
Recent and-future-trends spmPrakash Poudel
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdfMODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdfJayanthi Kannan MK
 
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptx
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptxUNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptx
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptxLeahRachael
 
Chapter 10
Chapter 10Chapter 10
Chapter 10bodo-con
 
Testing throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & ImplementationTesting throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & Implementationyogi syafrialdi
 
software configuration management
software configuration managementsoftware configuration management
software configuration managementFáber D. Giraldo
 

Similar to RRC RUP (20)

Software Development
Software DevelopmentSoftware Development
Software Development
 
Software Engineering - Introdution.ppt
Software Engineering - Introdution.pptSoftware Engineering - Introdution.ppt
Software Engineering - Introdution.ppt
 
When agility meets software quality
When agility meets software qualityWhen agility meets software quality
When agility meets software quality
 
lect1.pdf
lect1.pdflect1.pdf
lect1.pdf
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2
 
A Software Engineer
A Software EngineerA Software Engineer
A Software Engineer
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
 
SE notes by k. adisesha
SE notes by k. adiseshaSE notes by k. adisesha
SE notes by k. adisesha
 
ecse ppt.pptx
ecse ppt.pptxecse ppt.pptx
ecse ppt.pptx
 
ecse ppt.pptx
ecse ppt.pptxecse ppt.pptx
ecse ppt.pptx
 
Moving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMoving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating Architectures
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economics
 
Seminar on Project Management by Rj
Seminar on Project Management by RjSeminar on Project Management by Rj
Seminar on Project Management by Rj
 
Recent and-future-trends spm
Recent and-future-trends spmRecent and-future-trends spm
Recent and-future-trends spm
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdfMODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
 
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptx
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptxUNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptx
UNIT 1-IDENTIFY THE NEED FOR SOFTWARE ENGINEERING DEVELOPMENT.pptx
 
Chapter 10
Chapter 10Chapter 10
Chapter 10
 
Testing throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & ImplementationTesting throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & Implementation
 
software configuration management
software configuration managementsoftware configuration management
software configuration management
 

RRC RUP

  • 1. Software Engineering Process Disciplined, Modern, and Mature An Overview Workshop for the Railroad Commission of Texas January 21 & 22, 2003
  • 2. ““Freedom to Create”Freedom to Create” The Value of SoftwareThe Value of Software • The theme for the most recent Rational User Conference was “Freedom to Create” • Indeed, ‘Software is the fuel on which modern businesses are run, governments rule, and societies become better connected.’ Grady Booch • Creativity, innovation, a blending and unifying of art and science is what software development is all about
  • 3. ““Freedom to Create”Freedom to Create” The Value of SoftwareThe Value of Software • As software professionals, the exciting news is that software is a critical success factor for many organizations, whether private of public • The challenge is that software is expanding in size, complexity, distribution, and importance • With so much at stake, software professionals must seek out, understand, and master the processes that we need to be success
  • 4. ““Freedom to Create”Freedom to Create” • While CMM/CMMI describes the principles and practices underlying software management process maturity, Rational Software Corporation’s Rational Unified Process provides a state-of-the-art software engineering process and a related process framework that is complimentary to and supportive of the Key Process Areas defined in CMM/CMMI The Value of SoftwareThe Value of Software
  • 5. ““Freedom to Create”Freedom to Create” • By studying each of these bodies of knowledge, we can take the best ideas, concepts, and processes that each has to offer and grow in our ability to produce quality software The Value of SoftwareThe Value of Software
  • 6. Rational Unified ProcessRational Unified Process Software Engineering Best PracticesSoftware Engineering Best Practices • The RUP has a rich history with roots that trace back to the Objectory Process that was first released in Sweden in 1987 • Many of the leaders in the object-oriented software engineering industry have contributed to the evolution of this process including Ivar Jacobson, Grady Booch, and James Rumbaugh, all of whom now work for Rational Software Corporation
  • 7. Rational Unified ProcessRational Unified Process Software Engineering Best PracticesSoftware Engineering Best Practices • Grady Booch, Chief Scientist • Dr. Ivan Jacobson, Vice President of Process Strategy • Dr. James Rumbaugh, Rational Fellow • Dr. Philippe Kruchten, Director of Process Development
  • 8. Rational Unified ProcessRational Unified Process Software Engineering Best PracticesSoftware Engineering Best Practices • The RUP is described in detail in Phillipe Kruchten’s book, The Rational Unified Process: An Introduction 2nd Edition • This process describes how to effectively employ commercially proven software development best practices within the context of a defined software engineering process • RUP is at once disciplined and configurable to the needs of each unique software project
  • 9. Rational Unified ProcessRational Unified Process Software Engineering Best PracticesSoftware Engineering Best Practices • With the goal of ensuring the production of quality software systems in a repeatable and predictable fashion, the software engineering best practices championed by the RUP include:  Develop Software Iteratively  Manage Requirements  Use Component Architectures  Visually Model Software  Continuously Verify Software Quality  Control Changes to Software
  • 10. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • Developing software iteratively is a technique that is used to deliver the functionality of a system in a successive series of incremental releases of increasing complexity • Each release is developed in a specific, fixed time period called an ‘iteration’ • Each iteration is focused on defining, analyzing, building and testing some set of requirements
  • 11. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • An iterative approach to software development enables an increasing understanding of the problem through successive refinements • An effective solution is incrementally grown over multiple iterations, each of which is an executable release (internal or external) • Developing software iteratively is in contrast to a classical Waterfall approach
  • 12. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • This approach makes it easier to accommodate tactical changes in requirements, features, and schedule as well as address the highest risk items at every stage in software development lifecycle • As mentioned above, one of the primary benefits of this approach is risk mitigation • Using a classical Waterfall approach, discovery and mitigation of risks are pushed forward in time where they are the most costly to correct
  • 13. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Misunderstandings are made evident early in the software lifecycle where it is most cost effective to respond  This approach enables and encourages user feedback so as to elicit the system’s real requirements  The development team is able to focus on those issues that are the most critical (e.g., risks)
  • 14. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Continuous, iterative testing enables an objective assessment of the project’s status  Inconsistencies among requirements, designs, implementations are detected early  The workload of the team is spread more evenly throughout the project’s lifecycle  The team can leverage lessons learned and therefore continuously improve the process
  • 15. Develop SoftwareDevelop Software IterativelyIteratively Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Project Stakeholders can be given concrete evidence of the project’s status throughout its life
  • 16. Manage RequirementsManage Requirements Software Engineering Best PracticesSoftware Engineering Best Practices • The Object Management Group describes a requirement as “a desired feature, property, or behavior of a system” • The challenge of requirements is that they are at once dynamic and difficult to exhaustively state • As a result, identifying a system’s true requirements is a continuous process
  • 17. Manage RequirementsManage Requirements Software Engineering Best PracticesSoftware Engineering Best Practices • Requirements management is concerned with:  Eliciting, organizing, and documenting the system’s required functionality and constraints  Evaluating changes to these requirements and assessing their impact  Tracking and documenting trade-offs and decisions
  • 18. Manage RequirementsManage Requirements Software Engineering Best PracticesSoftware Engineering Best Practices • Eliciting, organizing, and documenting requirements through a use case driven approach ensures that the final product meets the end users needs and fulfills their expectations • Furthermore, the use case and scenario driven approach provides a common thread through the design, implementation, and testing of the software
  • 19. Manage RequirementsManage Requirements Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  A disciplined approach is built into requirements management  Communications are based on defined requirements  Requirements can be prioritized, filtered, and traced  An objective assessment of functionality and performance is possible
  • 20. Manage RequirementsManage Requirements Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Inconsistencies are detected more easily  With suitable tool support, it is possible to provide a repository for a system’s requirements, attributes, and traces, with automatic links to external documents
  • 21. Component-BasedComponent-Based ArchitecturesArchitectures Software Engineering Best PracticesSoftware Engineering Best Practices • Components are cohesive groups of code, in source or executable form, with well-defined interfaces and behaviors that provide strong encapsulation of their contents, and are, therefore, replaceable • Architectures based around components tend to reduce the effective size and complexity of the solution, and so are more robust and resilient
  • 22. Component-BasedComponent-Based ArchitecturesArchitectures Software Engineering Best PracticesSoftware Engineering Best Practices • Employing an architecture-centric process, the focus is on designing a resilient component-based architecture that is flexible, accommodates change, is intuitively understandable, and promotes more effective software reuse • It enable a systematic approach to defining an architecture comprised of both new and existing commercially available component infrastructures
  • 23. Component-BasedComponent-Based ArchitecturesArchitectures Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Components facilitate resilient architectures  Modularity enables a clear separation of concerns among elements of a system that are subject to change  Reuse is facilitated by leveraging standardized frameworks and commercially available components
  • 24. Component-BasedComponent-Based ArchitecturesArchitectures Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Components provide a natural basis for configuration management  Visual modeling tools provide automation for component-based development
  • 25. Visually Model SoftwareVisually Model Software Software Engineering Best PracticesSoftware Engineering Best Practices • A model is a simplified view of a system • It shows the essentials of the system from a particular perspective while hiding the non- essential details • Using the industry standard Unified Modeling Language (UML), the RUP emphasizes the visual modeling of software to capture the structure and behaviors of the architecture and components
  • 26. Visually Model SoftwareVisually Model Software Software Engineering Best PracticesSoftware Engineering Best Practices • Software models are useful because:  They provide visual abstractions that promote communication  Enable a better understanding of how the system fits together  Ensure the software building blocks are consistent with the code  Help maintain consistency between design and implementation
  • 27. Visually Model SoftwareVisually Model Software Software Engineering Best PracticesSoftware Engineering Best Practices • Important models within the RUP include, but are not limited to:  Use Case Diagrams  Sequence Diagrams  Collaboration Diagrams  Class Diagrams  Deployment Diagrams
  • 28. Visually Model SoftwareVisually Model Software Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Use cases and scenarios unambiguously specify behavior  Models unambiguously capture software design  Non-modular and inflexible architectures are exposed  Unambiguous designs reveal their inconsistencies more readily
  • 29. Visually Model SoftwareVisually Model Software Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Application quality starts with good design  Visual modeling tools provide support for UML modeling (e.g., Rational Rose)
  • 30. Continuously VerifyContinuously Verify Software QualitySoftware Quality Software Engineering Best PracticesSoftware Engineering Best Practices • To address the consequences that result from poor performance and poor quality, quality assessment is built into every phase and activity of the RUP • From the perspective of RUP, software quality is multi-dimensional and it is the responsibility of every member of the project team • Product quality is concentrated on building the right product, whereas process quality is focused on building the product correctly
  • 31. Continuously VerifyContinuously Verify Software QualitySoftware Quality Software Engineering Best PracticesSoftware Engineering Best Practices • Using objective measurements and criteria that are directly linked to the use case driven approach, software quality is not an afterthought • This focus on quality results in software systems that are:  Reliable  Fulfill their functional requirements  Meet all non-functional requirements at both an application and system level
  • 32. Continuously VerifyContinuously Verify Software QualitySoftware Quality Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Project status assessment is made objective, and subjective, because test results, and not paper documents, are evaluated  This objective assessment exposes inconsistencies in requirements, designs, and implementations  Defects are identified early, thus reducing the cost of fixing them
  • 33. Continuously VerifyContinuously Verify Software QualitySoftware Quality Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  Testing and verification are focused on areas of highest risk, thereby increasing the quality and effectiveness of those areas
  • 34. Control Changes toControl Changes to SoftwareSoftware Software Engineering Best PracticesSoftware Engineering Best Practices • Managing change is a critical-success factor for every software project particularly given that change is inevitable • Change can occur in all software artifacts including requirements, documents, models, etc. • Understanding that change is inevitable, controlling, tracking, and monitoring change is essential in order to enable successful software development in a project team environment
  • 35. Control Changes toControl Changes to SoftwareSoftware Software Engineering Best PracticesSoftware Engineering Best Practices • This best practice offers the following benefits:  The workflow of requirements change is defined and repeatable  Change requests facilitate clear communication  Change rate statistics provide good metrics for objectively assessing project status  Changes can be maintained in a robust, customizable system
  • 36. Exercise #2Exercise #2 Software Engineering Best PracticesSoftware Engineering Best Practices • Organize into your same groups and identify a group facilitator • Discuss and Rank the Best Practices 1 Thru 6  Develop Software Iteratively  Manage Requirements  Use Component Architectures  Visually Model Software  Continuously Verify Software Quality  Control Changes to Software • After each group has completed its ranking, the rankings will be presented and discussed
  • 37. Development ProcessDevelopment Process A Development Process Should: • Be based upon the cumulative experience of software professionals, with specific guidance to convey those experience • Define the sequence of steps that lead to deliverables and who is responsible for them • Provide assistance regarding who and how to produce the deliverables it defines • Help to control the project and reduce confusion
  • 38. Development ProcessDevelopment Process A Development Process Should: • Help project management to resource, plan, and measure project • Provide a structure which works to mitigate and reduce risk • Make software development predictable, repeatable, and measurable • Not be another process gathering dust
  • 39. Development ProcessDevelopment Process Communication, Communication, Communication • Communication lies at the heart of any process • Process helps project team members speak the same development language • Process helps project team members understand their common goals (e.g., deliverables)
  • 40. RUP Structure andRUP Structure and ContentContent According to Grady Booch, and consistent with the previous, a software development process has four roles:  Provide guidance as to the order of a team’s activities  Specify which artifacts should be developed and when they should be developed  Direct the task of individual developers and the team as a whole  Offer criteria for monitoring and measuring the project’s products and activities
  • 41. RUP Structure andRUP Structure and ContentContent • Without a well defined process, a development team will, in all likelihood, develop software in an ad hoc manner • As pointed out by the CMM, success in these circumstances is dependent upon the skill and heroic efforts of a few dedicated individuals • Under such circumstances, success can not be repeated and no learning occurs between projects
  • 42. RUP Structure andRUP Structure and ContentContent • In contrast, mature organizations employ both well defined software management process and well defined software engineering processes • Doing so enables the development of complex software in a repeatable and predictable fashion • A mature and well defined software engineering process enables and encourages all of the best practices described earlier • This is the approach taken by the RUP
  • 43. RUP Structure andRUP Structure and ContentContent • RUP is a software engineering process that provides a disciplined approach to assigning tasks and responsibilities • RUP is also a process product that is developed and maintained by the Rational Software Corporation • As a process product, it is integrated with Rational’s suite of software development tools • RUP is also a process framework that can be adapted and extended by an organization
  • 44. Rational Unified ProcessRational Unified Process A Process Product • RUP is a software engineering process that provides a disciplined approach to assigning tasks and responsibilities • RUP is also a process framework that can be adapted and extended by an organization • RUP is also a process product that is developed and maintained by the Rational Software Corporation
  • 45. Rational Unified ProcessRational Unified Process A Process Product • This process product provides a Web-enabled, searchable knowledge base that captures the combined experience of software professionals • It can be used as a online mentor covering the full project lifecycle • RUP is integrated with Rational Software Corporation’s suite of software development tools
  • 46. Rational Unified ProcessRational Unified Process A Process Product • Its tool mentors provide guidance on how to effectively use Rational tools in the context of the Rational Unified Process • As such, it provides education, consulting, and mentoring when an organization adopts the process
  • 47. Rational Unified ProcessRational Unified Process Role of UML in RUP • In order to reap the full benefits of the UML, organizations need to know how to use this language effectively • RUP was developed hand-in-hand with the UML • Many of the artifacts within RUP have a UML representation • The process product provides mentoring and guidance for UML concepts
  • 48. Rational Unified ProcessRational Unified Process RUP Structure • RUP is structured along two dimensions:  Organization along time  Organization based on content • The time structure refers to the lifecycle aspect of the process • That is, how the process rolls out within the context of a software development project • The content structure refers to the Disciplines, which group activities logically by nature
  • 49. Rational Unified ProcessRational Unified Process Organization Along Time • The time aspect of the process is described in terms of phases, iterations, and milestones • RUP phases include:  Inception  Elaboration  Construction  Transition • The phase boundaries in RUP correspond to significant decision points in the life of project
  • 50. Rational Unified ProcessRational Unified Process Organization Along Time • Milestones help project stakeholders asses the progress of a project at key points • Milestones give project stakeholders the opportunity to change the course of a project
  • 51. Rational Unified ProcessRational Unified Process Inception Phase • The overriding goal of the inception phase is to achieve concurrence among all stakeholders on the objectives for the project • The inception phase is of significance primarily for new development efforts • For projects focused on enhancements to an existing system, the inception phase is more brief • The milestone for this phase is concerned with evaluating the basic viability of the project
  • 52. Rational Unified ProcessRational Unified Process Elaboration Phase • The goal of the elaboration phase is to baseline the architecture of the system in order to provide a stable basis for the bulk of the design and implementation effort in the construction phase • The architecture evolves out of a consideration of the most significant requirements and an assessment of risk • The stability of the architecture is evaluated through one or more architectural prototypes
  • 53. Rational Unified ProcessRational Unified Process Elaboration Phase • The milestone for this phase is concerned with establishing a managed baseline for the architecture of the system
  • 54. Rational Unified ProcessRational Unified Process Construction Phase • The goal of the construction phase is on clarifying the remaining requirements and completing the development of the system based upon the baselined architecture • The management mindset undergoes a transition from the development of intellectual property during inception and elaboration, to the development of deployable products during construction and transition
  • 55. Rational Unified ProcessRational Unified Process Construction Phase • The milestone for this phase is concerned milestone determines whether the product is ready to be deployed into a beta-test environment
  • 56. Rational Unified ProcessRational Unified Process Transition Phase • The focus of the Transition Phase is to ensure that software is available for its end users • The Transition Phase can span several iterations, and includes testing the product in preparation for release, and making minor adjustments based on user feedback • User feedback should focus mainly on fine tuning the product – behavioral/structural issues should have been refined much earlier
  • 57. Rational Unified ProcessRational Unified Process Transition Phase • By the end of the Transition Phase lifecycle objectives should have been met and the project should be in a position to be closed out • In some cases, the end of the current life cycle may coincide with the start of another lifecycle on the same product, leading to the next generation or version of the product
  • 58. Rational Unified ProcessRational Unified Process What is an Iteration? • According to RUP, an iteration is a pass through all the disciplines resulting in a release (internal or external) • Each iteration can be seen as a mini-project with a plan (i.e., and Iteration Plan), deliverables, and assessment • Each iteration can also be seen as a mini- waterfall
  • 59. Rational Unified ProcessRational Unified Process Iteration: Number and Duration • The duration of each iteration will be project dependent and defined, in part, by the overall project ‘timebox’ • The number of iterations is also project dependent, but Rational recommends 6, plus or minus 3  Inception: 0 .. 1  Elaboration: 1 .. 3  Construction: 1 .. 3  Transition: 1 .. 2
  • 60. Rational Unified ProcessRational Unified Process Organization Along Content • The content of RUP is organized into Disciplines • Each Discipline is a logical grouping of roles, activities, and artifacts  Roles: the who  Activities: the how  Artifacts: the what • A Role performs certain Activities and is responsible for certain Artifacts, or the work products of the process
  • 61. Rational Unified ProcessRational Unified Process Organization Along Content • The grouping activities into disciplines is mainly an aid to understanding the project from a ‘traditional’ waterfall perspective • For example, it is more common to perform certain requirements activities in close coordination with analysis and design activities
  • 62. Rational Unified ProcessRational Unified Process RUP’s Nine Disciplines • Business Modeling • Requirements • Analysis and Design • Implementation • Test • Deployment • Configuration and Change Management • Project Management • Environment
  • 63. Rational Unified ProcessRational Unified Process Business Modeling - Purpose • To understand the structure and the dynamics of the organization in which a system is to be deployed (the target organization) • To understand current problems in the target organization and identify improvement potentials • To ensure that customers, end users, and developers have a common understanding of the target organization
  • 64. Rational Unified ProcessRational Unified Process Business Modeling - Purpose • To derive the system requirements needed to support the target organization
  • 65. Rational Unified ProcessRational Unified Process Requirements - Purpose • To establish and maintain agreement with the customers and other stakeholders on what the system should do • To provide system developers with a better understanding of the system requirements • To define the boundaries of (delimit) the system • To provide a basis for planning the technical contents of iterations
  • 66. Rational Unified ProcessRational Unified Process Requirements - Purpose • To provide a basis for estimating cost and time to develop the system • To define a user-interface for the system, focusing on the needs and goals of the users
  • 67. Rational Unified ProcessRational Unified Process Analysis and Design - Purpose • To transform the requirements into a design of the system-to-be • To evolve a robust architecture for the system • To adapt the design to match the implementation environment (e.g., J2EE), designing it for performance
  • 68. Rational Unified ProcessRational Unified Process Implementation - Purpose • To define the organization of the code, in terms of implementation subsystems organized in layers • To implement classes and objects in terms of components • To test the developed components as units • To integrate the results produced by individual implementers, into an executable system
  • 69. Rational Unified ProcessRational Unified Process Test - Purpose • The Test discipline acts in many respects as a service provider to the other disciplines • Testing focuses primarily on the evaluation or assessment of product quality realized through a number of core practices:  Finding and documenting defects in software quality  Generally advising about perceived software quality
  • 70. Rational Unified ProcessRational Unified Process Test - Purpose • The Test discipline acts in many respects as a service provider to the other disciplines • Testing focuses primarily on the evaluation or assessment of product quality realized through a number of core practices:  Proving the validity of the assumptions made in design and requirement specifications through concrete demonstration
  • 71. Rational Unified ProcessRational Unified Process Test - Purpose • The Test discipline acts in many respects as a service provider to the other disciplines • Testing focuses primarily on the evaluation or assessment of product quality realized through a number of core practices:  Validating the software product functions as designed  Validating that the requirements have been implemented appropriately
  • 72. Rational Unified ProcessRational Unified Process Deployment - Purpose • The Deployment Discipline describes the activities associated with ensuring that the software product is available for its end users • The Deployment Discipline describes three modes of product deployment:  The custom install  The "shrink wrap" product offering  Access to software over the internet
  • 73. Rational Unified ProcessRational Unified Process Configuration and Change Management - Purpose • To paraphrase the SEI’s CMM ‘Configuration and Change Management controls change to, and maintains the integrity of, a project’s artifacts’ • This Discipline involves:  Identifying configuration items  Restricting changes to those items  Auditing changes made to those items  Defining and managing configurations of those items
  • 74. Rational Unified ProcessRational Unified Process Project Management - Purpose • To provide a framework for managing software- intensive projects • To provide practical guidelines for planning, staffing, executing, and monitoring projects • To provide a framework for managing risk • Within RUP, however, not every aspect of the Project Management Discipline is covered (e.g., managing people, budget, and contracts)
  • 75. Rational Unified ProcessRational Unified Process Environment - Purpose • Focuses on the activities necessary to configure the process for a project • Describes the activities required to develop the guidelines in support of a project • Provides the software development organization with the software development environment, both processes and tools, that will support the development team
  • 76. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Introduction  Concepts  Workflow  Activity Overview  Artifact Overview  Guidelines Overview
  • 77. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Introduction Purpose of the discipline and its relationship to other disciplines
  • 78. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Concepts Key concepts that are important for understanding the discipline
  • 79. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Workflow A conditional flow of events when conducting the discipline, expressed in terms of workflow details A workflow detail is a grouping of activities that are done together
  • 80. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Activity Overview The activities that are performed in this discipline, and the roles that are responsible
  • 81. Rational Unified ProcessRational Unified Process Organization of Disciplines • Within RUP, each Discipline consists of the following:  Guidelines Overview More detailed explanation on how to use and produce the artifacts of the process The rules and recommendations that support activities and their steps
  • 82. Rational Unified ProcessRational Unified Process Additional Process Elements – Tool Mentors • Explain how to use a specific tool to perform an activity or steps in an activity • Linked by default to Rational tools:  RequisitePro – requirements management  Rational Rose – visual modeling using UML  ClearQuest – change management and defect tracking
  • 83. Rational Unified ProcessRational Unified Process Additional Process Elements – Templates • Predefined artifact prototypes in the following formats:  Documents – MS Word, Adobe Framemaker  MS Project  HTML • The templates have been tailored for the process
  • 84. Rational Unified ProcessRational Unified Process Additional Process Elements – White Papers • RUP’s knowledge base is extended through the provision of various White Papers • For example, White Papers are provided for:  A Comparison of RUP and XP  Requirements Management with Use Cases  Modeling Web Application Architectures with UML  Reaching CMM Levels 2 and 3  The Estimation of Effort base on Use Cases
  • 85. Rational Unified ProcessRational Unified Process Additional Process Elements – Work Guidelines • Provide practical information on techniques to help you perform certain tasks throughout the process • Guidelines are provided for:  Workshops  Requirements Elicitation  Testing  Reviews
  • 86. Rational Unified ProcessRational Unified Process Process Product Demonstration
  • 87. ResourcesResources • Ivan Jacobson, Grady Booch, James Rumbaugh (1999). The Unified Software Development Process. Addison Wesley Longman, Inc. • Philippe Kruchten (2000). The Rational Unified Process: An Introduction 2nd Edition . Addison Wesley. • Rational University (2002). Rational Unified Process Fundamentals: Student Manual. Rational Software Corporation.
  • 88. ResourcesResources • Rational Software Corporation – RUP White Papers available on the Web at: www.rational.com/products/rup/whitepapers.jsp