iterative
Iteration is the repetition of a process in order to generate a (possibly unbounded) sequence of outcomes. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration.
...
software development process
In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
framework created by the
Rational Software
Rational Machines is an enterprise founded by Paul Levy and Mike Devlin in 1981 to provide tools to expand the use of modern software engineering practices, particularly explicit modular architecture and iterative development. It changed its n ...
Corporation, a division of
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs. RUP is a specific implementation of the Unified Process.
History
Rational Software originally developed the rational unified process as a software process product. The product includes a hyperlinked knowledge-base with sample artifacts and detailed descriptions for many different types of activities. RUP is included in the IBM Rational Method Composer (RMC) product which allows customization of the process.
Philippe Kruchten, an experienced Rational technical representative was tasked with heading up the original RUP team.
These initial versions combined the Rational Software organisation's extensive field experience building object-oriented systems (referred to by Rational field staff as the Rational Approach) with Objectory's guidance on practices such as use cases, and incorporated extensive content from Jim Rumbaugh's Object Modeling Technology (OMT) approach to modeling, Grady Booch's
Booch method
Grady Booch (born February 27, 1955) is an American software engineer, best known for developing the Unified Modeling Language (UML) with Ivar Jacobson and James Rumbaugh. He is recognized internationally for his innovative work in software archit ...
, and the newly released UML 0.8.
To help make this growing knowledge base more accessible, Philippe Kruchten was tasked with the assembly of an explicit process framework for modern software engineering. This effort employed the
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
-based process delivery mechanism developed by Objectory. The resulting "Rational Unified Process" (RUP) completed a strategic tripod for Rational:
* a ''tailorable process'' that guided development
* ''tools'' that automated the application of that process
* ''services'' that accelerated adoption of both the process and the tools.
This guidance was augmented in subsequent versions with knowledge based on the experience of companies that Rational had acquired.
In 1997, a requirements and test discipline were added to the approach, much of the additional material sourced from the Requirements College method developed by Dean Leffingwell et al. at Requisite, Inc., and the SQA Process method developed at SQA Inc., both companies having been acquired by Rational Software.
In 1998 Rational Software added two new disciplines:
# business modeling, much of this content had already been in the Objectory Process
# a Configuration and Change Management discipline, sourced through the acquisition of Pure Atria Corporation.
These additions lead to an overarching set of principles that were defined by Rational and articulated within RUP as the six ''best practices'' for modern software engineering:
# Develop iteratively, with risk as the primary iteration driver
# Manage requirements
# Employ a component-based architecture
# Model software visually
# Continuously verify quality
# Control changes
These best practices were tightly aligned with Rational's product line, and both drove the ongoing development of Rational's products, as well as being used by Rational's field teams to help customers improve the quality and predictability of their software development efforts.
Additional techniques including performance testing, UI Design, data engineering were included, and an update to reflect changes in UML 1.1.
In 1999, a project management discipline was introduced, as well as techniques to support real-time software development and updates to reflect UML 1.3. Besides, the first book to describe the process, ''The Unified Software Development Process'' () by
Ivar Jacobson
Ivar Hjalmar Jacobson (; born September 2, 1939) is a Swedish computer scientist and software engineer, known as a major contributor to UML, Objectory, Rational Unified Process (RUP), aspect-oriented software development, and Essence.
Biog ...
James Rumbaugh
James E. Rumbaugh (born August 22, 1947) is an American computer scientist and object-oriented methodologistAgile projects - released as an OpenSource method called OpenUP through the
Eclipse
An eclipse is an astronomical event which occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ...
web-site.
Rational unified process topics
RUP building blocks
RUP is based on a set of building blocks and content elements, describing what is to be produced, the necessary skills required and the step-by-step explanation describing how specific development goals are to be achieved. The main building blocks, or content elements, are the following:
* Roles (who) – A role defines a set of related skills, competencies and responsibilities.
* Work products (what) – A work product represents something resulting from a task, including all the documents and models produced while working through the process.
* Tasks (how) – A task describes a unit of work assigned to a Role that provides a meaningful result.
Within each iteration, the tasks are categorized into nine disciplines:
* Six "engineering disciplines"
** Business modelling
** Requirements
** Analysis and design
** Implementation
** Test
** Deployment
* Three supporting disciplines
** Configuration and change management
**
Project management
Project management is the process of supervising the work of a Project team, team to achieve all project goals within the given constraints. This information is usually described in project initiation documentation, project documentation, crea ...
The RUP has determined a project life-cycle consisting of four phases. These phases allow the process to be presented at a high level in a similar way to how a 'waterfall'-styled project might be presented, although in essence the key to the process lies in the iterations of development that lie within all of the phases. Also, each phase has one key objective and milestone at the end that denotes the objective being accomplished. The visualization of RUP phases and disciplines over time is referred to as the RUP hump chart.
Inception phase
The primary objective is to scope the system adequately as a basis for validating initial costing and budgets.
In this phase the business case which includes business context, success factors (expected revenue, market recognition, etc.), and financial forecast is established. To complement the business case, a basic use case model, project plan, initial risk assessment and project description (the core project requirements, constraints and key features) are generated.
After these are completed, the project is checked against the following criteria:
* Stakeholder concurrence on scope definition and cost/schedule estimates.
* Requirements understanding as evidenced by the fidelity of the primary use cases.
* Credibility of the cost/schedule estimates, priorities, risks, and development process.
* Depth and breadth of any architectural prototype that was developed.
* Establishing a baseline by which to compare actual expenditures versus planned expenditures.
If the project does not pass this milestone, called the life cycle objective milestone, it either can be cancelled or repeated after being redesigned to better meet the criteria.
Elaboration phase
The primary objective is to mitigate the key risk items identified by analysis up to the end of this phase.
The elaboration phase is where the project starts to take shape. In this phase the problem domain analysis is made and the architecture of the project gets its basic form.
The outcome of the elaboration phase is:
* A use-case model in which the use-cases and the actors have been identified and most of the use-case descriptions are developed. The use-case model should be 80% complete.
* A description of the software architecture in a software system development process.
* An executable architecture that realizes architecturally significant use cases.
* Business case and risk list which are revised.
* A development plan for the overall project.
* Prototypes that demonstrably mitigate each identified technical risk.
* A preliminary user manual (optional)
This phase must pass the lifecycle architecture milestone criteria answering the following questions:
* Is the vision of the product stable?
* Is the architecture stable?
* Does the executable demonstration indicate that major risk elements are addressed and resolved?
* Is the construction phase plan sufficiently detailed and accurate?
* Do all stakeholders agree that the current vision can be achieved using current plan in the context of the current architecture?
* Is the actual vs. planned resource expenditure acceptable?
If the project cannot pass this milestone, there is still time for it to be canceled or redesigned. However, after leaving this phase, the project transitions into a high-risk operation where changes are much more difficult and detrimental when made.
The key domain analysis for the elaboration is the system architecture.
Construction phase
The primary objective is to build the software system.
In this phase, the main focus is on the development of components and other features of the system. This is the phase when the bulk of the coding takes place. In larger projects, several construction iterations may be developed in an effort to divide the use cases into manageable segments to produce demonstrable prototypes.
Transition phase
The primary objective is to 'transit' the system from development into production, making it available to and understood by the end user.
The activities of this phase include training the end users and maintainers and beta testing the system to validate it against the end users' expectations. The system also goes through an evaluation phase, any developer which is not producing the required work is replaced or removed. The product is also checked against the quality level set in the Inception phase.
If all objectives are met, the product release milestone is reached and the development cycle is finished.
The IBM Rational Method Composer product
The IBM Rational Method Composer product is a tool for authoring, configuring, viewing, and publishing processes. See IBM Rational Method Composer and an open source version Eclipse process framework (EPF) project for more details.
Certification
In January 2007 the new RUP certification examination for ''IBM Certified Solution Designer - Rational Unified Process 7.0'' was released which replaces the previous version of the course called ''IBM Rational Certified Specialist - Rational Unified Process''. The new examination will not only test knowledge related to the RUP content but also to the process structure elements.
To pass the new RUP certification examination, a person must take IBM's ''Test 839: Rational Unified Process v7.0''. You are given 75 minutes to take the 52 question exam. The passing score is 62%.
Six best practices
Six best
software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
practices are defined for software projects to minimize faults and increase productivity. These are:Rational Unified Process white paper
; Develop iteratively:It is best to know all requirements in advance; however, often this is not the case. Several software development processes exist that deal with providing solutions to minimize cost in terms of development phases.
; Manage requirements: Always keep in mind the requirements set by users.
; Use components: Breaking down an advanced project is not only suggested but in fact unavoidable. This promotes ability to test individual components before they are integrated into a larger system. Also, code reuse is a big plus and can be accomplished more easily through the use of
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
.
; Model visually: Use diagrams to represent all major components, users, and their interaction. "UML", short for
Unified Modeling Language
The Unified Modeling Language (UML) is a general-purpose visual modeling language that is intended to provide a standard way to visualize the design of a system.
UML provides a standard notation for many types of diagrams which can be roughly ...
, is one tool that can be used to make this task more feasible.
; Verify quality: Always make testing a major part of the project at any point of time. Testing becomes heavier as the project progresses but should be a constant factor in any software product creation.
; Control changes: Many projects are created by many teams, sometimes in various locations, different platforms may be used, etc. As a result, it is essential to make sure that changes made to a system are synchronized and verified constantly. (See
Continuous integration
Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state.
Typically, developers Merge (version control), merge changes to an Branching (revisio ...
Agile modeling
Agile modeling (AM) is a methodology for Software development process models, modeling and documentation, documenting software systems based on best practices. It is a collection of values and principles that can be applied on an (agile) software d ...
Disciplined agile delivery
Disciplined agile delivery (DAD) is the software development portion of the Disciplined Agile Toolkit. DAD enables teams to make simplified process decisions around incremental and iterative solution delivery. DAD builds on the many practices es ...
(DAD)
*
Dynamic systems development method
Dynamic systems development method (DSDM) is an Agile management, agile project delivery framework, initially used as a software development methodology, software development method. First released in 1994, DSDM originally sought to provide some ...
(DSDM)
*
Computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
*
Feature-driven development
Feature-driven development (FDD) is an iterative and incremental software development process. It is a lightweight or agile method for developing software. FDD blends several best practices into a cohesive whole. These practices are driven from ...
(FDD)
*
Project life cycle
Project management is the process of supervising the work of a team to achieve all project goals within the given constraints. This information is usually described in project documentation, created at the beginning of the development process ...
*
Quality control
Quality control (QC) is a process by which entities review the quality of all factors involved in production. ISO 9000 defines quality control as "a part of quality management focused on fulfilling quality requirements".
This approach plac ...
and
quality assurance
Quality assurance (QA) is the term used in both manufacturing and service industries to describe the systematic efforts taken to assure that the product(s) delivered to customer(s) meet with the contractual and other agreed upon performance, design ...
agile software development
Agile software development is an umbrella term for approaches to software development, developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented ...
methods such as
extreme programming
Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,"Human Centred Technology Workshop 2006 ", 2006, ...
(XP)
*
Software architecture
Software architecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements a ...
*
Software component
A software component is a modular unit of software that encapsulates specific functionality. The desired characteristics of a component are reusability and maintainability.
Value
Components allow software development to assemble software ...
*
Software development process
In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
*
Software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
*
Software testing
Software testing is the act of checking whether software satisfies expectations.
Software testing can provide objective, independent information about the Quality (business), quality of software and the risk of its failure to a User (computin ...
*
Test-driven development
Test-driven development (TDD) is a way of writing source code, code that involves writing an test automation, automated unit testing, unit-level test case that fails, then writing just enough code to make the test pass, then refactoring both the ...
Ivar Jacobson
Ivar Hjalmar Jacobson (; born September 2, 1939) is a Swedish computer scientist and software engineer, known as a major contributor to UML, Objectory, Rational Unified Process (RUP), aspect-oriented software development, and Essence.
Biog ...
James Rumbaugh
James E. Rumbaugh (born August 22, 1947) is an American computer scientist and object-oriented methodologistGary Pollice, Liz Augustine, Chris Lowe, and Jas Madhur (2003). ''Software Development for Small Teams: A RUP-Centric Approach''
* Per Kroll, Philippe Kruchten (2003). ''Rational Unified Process Made Easy, The: A Practitioner's Guide to the RUP''
* Per Kroll, Bruce Mac Isaac (2006). ''Agility and Discipline Made Easy: Practices from OpenUP and RUP''
* Philippe Kruchten (1998). ''The Rational Unified Process: An Introduction''
* Ahmad Shuja, Jochen Krebs (2007). ''RUP Reference and Certification Guide''
* Walker Royce, ''Software Project Management, A Unified Framework''
* Paul Szymkowiak, Philippe Kruchten (2003). ''Testing: The RUP Philosophy''