Unified Process
The Unified Process (UP) is a popular iterative and incremental software development process framework. It is not a single prescriptive process but an adaptable framework, a "process building block" from which specific processes are derived and tailored to a project or organization. Its best-known and most widely used implementation is the Rational Unified Process (RUP), developed and productized by Rational Software, later IBM.
Defining characteristics
At its core, UP is iterative and incremental. Its authors put forward three defining characteristics, often called the hallmarks of the Unified Process, with risk reduction as the organizing principle that all three serve.
- Use-case driven. Requirements are captured and traced as use cases, which drive analysis, design, implementation, and test.
- Architecture-centric. A stable, validated architecture is established early and guides subsequent work, so the system grows around a sound spine rather than collapsing into a big ball of mud.
- Iterative and incremental. The product is built through repeated cycles, with working software produced at the end of each one.
Risk is the thread that ties them together. The highest-risk elements, particularly architectural unknowns, are addressed in early iterations rather than deferred, so the project retires its biggest unknowns first.
Phases
UP structures a project into four sequential phases, each comprising one or more time-boxed iterations. Each iteration cuts across the development disciplines (requirements, analysis and design, implementation, test, deployment), and the emphasis on each shifts by phase.
- Inception. Establish the project’s scope, business case, and vision, and identify the major risks. The output is a rough effort and cost estimate, not a design.
- Elaboration. Stabilize the architecture, refine the requirements, retire the key risks, and produce a credible plan for construction.
- Construction. Build the product iteratively, growing the system through repeated implementation and test cycles until it is ready for deployment.
- Transition. Move the product to its users, through beta testing, training, deployment, and fixing defects found in the field.
The phase boundaries are milestones, not hand-offs. The transition from one phase to the next is a decision point at which the project is evaluated against its objectives and risks, and the plan for the next phase is confirmed or revised.
History
UP was developed in the late 1990s by Ivar Jacobson, Grady Booch, and James Rumbaugh, the "three amigos", at Rational Software, building on the same body of object-oriented design work that also produced the Unified Modeling Language (UML). The method is set out in their 1999 book The Unified Software Development Process. UP and UML were developed together by the same team: UP is the process, UML is the notation it uses. Booch’s earlier Booch method was one of the object-oriented design methods consolidated into both.
Variants
UP is a framework, and several concrete processes have been derived from it.
- Rational Unified Process (RUP). The best-known and most widely adopted implementation, and the reference point most teams mean by "UP" in practice. See that entry for the full treatment.
- Agile Unified Process (AUP). A simplified variant aligned with agile methods, formulated by Scott Ambler, which keeps the UP phases but applies agile practices within them.
- OpenUP. A lighter, agile-leaning application of UP’s core ideas, part of the Eclipse Process Framework.
- Enterprise Unified Process (EUP). An extension of RUP with enterprise-scale concerns such as production operations and governance.
- ICONIX. A related, use-case-driven methodology that keeps a minimal UML subset and an explicit robustness-analysis step, often read as a lightweight response to RUP’s weight.
See also
- Rational Unified Process (RUP)
- Iterative and incremental development
- Use case
- Unified Modeling Language (UML)
- Booch method
- Inception
- ICONIX
- Agile software development
- Waterfall model
References
- Jacobson, I., Booch, G., & Rumbaugh, J. (1999). The Unified Software Development Process. Addison-Wesley.