Understanding the Unified Process (UP)

Sinan Si Alhir

Introduction

The systems engineering discipline focuses on an elegant universe we call reality wherein the two dimensions of time and space establish the landscape for the intertwining dance between the two natural forces of change and complexity. It is within this arena that the key ingredients of teams and people, methodologies and processes, and tools and enabling technologies converge to bridge the chasm between vision and reality. At the core of every mature discipline, from the arts to the sciences and engineering, is a common language and common approaches enabling practitioners to collaborate and the discipline to evolve; and at the heart of this evolution is capturing or acquiring, communicating or sharing, and leveraging or utilizing knowledge. Language establishes the boundaries of thought and behavior, it defines concepts; methodology and process establish behavior within that boundary, they apply concepts; and tools establish the automation of behavior within that boundary, they automate the application of concepts. Quite simply, if we can't think it, we can't do it nor communicate it, and if we can't do it, we can't automate it! Within the information systems and technology industry, the Unified Process (UP), Rational Unified Process (RUP), Unified ModelingLanguage (UML), and Software Process Engineering Metamodel (SPEM) are at the heart of this evolution.

The Unified Process (UP) and Rational Unified Process (RUP)

The Unified Process (UP) is a use-case-driven, architecture-centric, iterative and incremental development process framework that leverages the Object Management Group's (OMG) UML and is compliant with the OMG's SPEM. The UP is broadly applicable to different types of software systems, including small-scale and large-scale projects having various degrees of managerial and technical complexity, across different application domains and organizational cultures.

The UP emerged as the unification of Rational Software Corporation's Rational Approach and Objectory AB's Objectory process in 1995 when Rational Software Corporation acquired Objectory AB. Rational Software Corporation developed the Rational Approach as a result of various customer experiences, and Ivar Jacobson created the Objectory process primarily as a result of his experience with Ericsson in Sweden.

The UP is an "idea," a process framework that provides an infrastructure for executing projects but not all of the details required for executing projects; essentially, it is a software development process framework, a lifecycle model involving context, collaborations, and interactions. The UP is documented in the book entitled "The Unified Software Development Process" by the Three Amigos (Grady Booch, James Rumbaugh, and Ivar Jacobson) (Addison-Wesley, 1999). The Rational Unified Process (RUP) is a process product developed and marketed by Rational Software Corporation that provides the details required for executing projects using the UP, including guidelines, templates, and tool assistance; essentially, it is a commercial process product providing the details or content for the UP framework. When applying the UP or RUP on a project, a Development Case, an instance of the process framework, specifies what elements of the UP or RUP are utilized throughout the project. A "RUP-based" Development Case is an instance of the RUP (and the UP), a configured or tailored subset of the RUP content (which may possibly be further augmented) that addresses the breadth and depth of the UP framework. A "UP-based" Development Case is an instance of the UP that addresses the breadth and depth of the UP framework.

The Unified Modeling Language (UML) and Software Process Engineering Metamodel (SPEM)

The Unified Modeling Language (UML) is an evolutionary general-purpose, broadly applicable, tool-supported, and industry-standardized modeling language or collection of modeling techniques for specifying, visualizing, constructing, and documenting the artifacts of a system-intensive process. The UML is broadly applicable to different types of systems (software and non-software), domains (business versus software), and methods and processes. The UML enables and promotes (but does not require nor mandate) a use-case-driven, architecture-centric, iterative and incremental process.

The UML emerged from the unification that occurred in the 1990s within the information systems and technology industry. Unification was led by Rational Software Corporation and the Three Amigos. The UML gained significant industry support from various organizations via the UML Partners Consortium and was submitted to and adopted by the OMG as a standard (November 1997).

As the UML is an industry-standardized modeling language for communicating about systems, the Software Process Engineering Metamodel (SPEM) is an industry-standardized modeling language for communicating about processes and process frameworks (families of related processes) but it does not describe process enactment (the planning and execution of a process on a project). The SPEM began to emerge after the UML standardization effort, gained significant industry support from various organizations, and was adopted by the OMG as a standard (November 2001).

System Development, Systems, Models, and Views

The system development lifecycle process involves a problem-solving process at a macro-level and the scientific method at a micro-level. Requirements may be characterized as problems. Systems that address requirements may be characterized as solutions. Problem solving involves understanding or conceptualizing the problem or requirements by representing and interpreting the problem, solving the problem by manipulating the representation of the problem to derive or specify a representation of the solution, and implementing or realizing and constructing the solution or system that addresses the requirements by mapping the representation of the solution onto the solution world. Within each problem-solving step, the scientific method involves planning or predicting a hypothesis, executing or empirically testing the hypothesis, evaluating the hypothesis against the results, and deriving a conclusion that is used to update the hypothesis. These macro-level and micro-level processes are very natural and often occur subtly and sometimes unconsciously in system development!

The UML facilitates and enables the problem-solving process. It facilitates specifying, visualizing, understanding, and documenting the problem or requirements; capturing, communicating, and leveraging strategic, tactical, and operational knowledge in solving the problem; and specifying, visualizing, constructing, and documenting the solution or system that satisfies the requirements. It enables capturing, communicating, and leveraging knowledge concerning systems using models, architectural views, and diagrams.

A system is a purposefully organized collection of elements or units. The architecture of a system entails two dimensions, the structural dimension and behavioral dimension, within its context. The structural or static dimension involves what elements constitute the system and their relationships. The behavioral or dynamic dimension involves how these elements collaborate and interact to satisfy the purpose of the system and provide its functionality or behavior.

A model is a complete abstraction of a system that captures knowledge (semantics) about a problem and solution. An architectural view is an abstraction of a model that organizes knowledge in accordance with guidelines expressing idioms of usage. A diagram is a graphical projection of sets of model elements that depicts knowledge (syntax) about problems and solutions for communication. Within the fundamental UML notation, concepts are depicted as symbols and relationships among concepts are depicted as paths (lines) connecting symbols.

Methodologies and Process Frameworks

A program is a collection or portfolio of projects. A project is a specific problem-solving effort that formalizes the "work hard and hope for the best" approach. A method specifies or suggests how to conduct a project. A method's descriptive aspect specifies or suggests what knowledge is captured and communicated regarding a problem and solution. A method's prescriptive aspect specifies or suggests how knowledge is leveraged to solve the problem. A process is the execution of a method on a project.

A methodology is a discipline or taxonomy, or well-organized collection, of related methods that addresses who does what activities on what work products, including when, how, why, and where such activities should be done. Workers (who), activities (how), work products (what), and the heuristics concerning them are commonly known as process elements. Methodologies group methods as a family, methods describe processes, and processes execute methods on projects.

To provide more flexibility and scalability to address increasingly more diverse problems, where applying a single method may be insufficient and applying a whole methodology may be impractical, a subset of a whole methodology may be applied where the methodology is called a process framework and the actual subset of all of its methods that are applied on a specific project is called a process instance.

A process framework specifies or suggests who does what activities on what work products, including when, how, why, and where such activities should be done for various types of projects. A process instance specifies or suggests who does what activities on what work products, including when, how, why, and where such activities should be done for a specific project. Process frameworks describe process instances as a more flexible and scaleable family of related processes, and process instances execute a subset of a process framework on projects. The UP is a process framework and Development Cases are process instances.

The Unified Process (UP)

To effectively and successfully apply the UP, we must understand collaborations, contexts, and interactions. As an effort or project leverages the UP, collaborations focus on the elements of the project, context focuses on the process framework for the project, and interactions focus on the execution of the project. Figure 1 shows the various elements of the UP.

Figure 1: Elements of the Unified Process (UP).

Collaborations

A collaboration involves an interaction within a context. A collaboration captures who does what activities (how) on what work products. Thus, it establishes the elements of a project.

A role is an individual or team who has responsibility for activities and artifacts. An activity is a unit of work, composed of steps, that is performed by a role. An artifact is an element of information that is the responsibility of a role and that is produced or consumed by activities. The UP defines numerous roles, artifacts, and activities.

Contexts

A context emphasizes the structural or static aspect of a collaboration, the elements that collaborate and their conglomeration or spatial relationships. A context captures when and where such activities should be done and work products produced and consumed. Thus, it establishes the context for a project. Figure 2 shows the context established by the UP.

Figure 2: Context established by the Unified Process (UP).

A project requires a management perspective to manage the effort and a technical perspective to execute and perform the technical work. The lifecycle of a project is composed of phases wherein iterations involve disciplines. A development cycle is composed of sequential phases resulting in a major system release called a system generation. For example, system generations may include versions 1.0, 2.0, 3.0, and so forth. A phase is a major milestone, a management decision point focused on managing business risk. Phases embody the macro-level problem-solving process. An iteration is a minor milestone, a technical decision point focused on managing technical risk, resulting in a minor system release called a system increment. For example, system increments may include versions 1.1, 1.2, 2.5, and so forth. Iterations embody micro-level applications of the scientific method. A discipline is an area of concern or theme wherein workflows describe the flow of work and wherein workflow details describe the collection of activities (with their associated roles and artifacts) often done together.

The UP defines the following four phases:

The UP defines the following three supporting disciplines:

The distribution of effort across phases, iterations, and disciplines focuses on addressing business and technical risks. During the Inception phase, most of the effort is distributed across the Business Modeling and Requirements disciplines. During the Elaboration phase, most of the effort is distributed across the Requirements, Analysis & Design, and Implementation disciplines. During the Construction phase, most of the effort is distributed across the Analysis & Design, Implementation, and Test disciplines. During the Transition phase, most of the effort is distributed across the Test and Deployment disciplines. The supporting disciplines are generally distributed throughout the four phases. The overall objective is to produce the resulting system; therefore, all of the core disciplines are engaged as soon as possible without introducing risk to the project; that is, practitioners are responsible for determining which disciplines to engage and when they should be engaged.

Interactions

An interaction emphasizes the behavioral or dynamic aspect of a collaboration, the elements that collaborate and their cooperation or temporal communication. An interaction captures when and why such activities should be done and work products produced and consumed. Thus, it establishes the execution of a project as it is governed by various forces.

As minor milestones occur within major milestones, technical decision points occur within management decision points such as to align technical tactics and operations with business strategy and objectives -- essentially, establishing a bridge between business and technical forces.

An iteration is a step or leg along a path or route to a destination. An iteration is planned and is not ad hoc, has evaluation criteria, and results in demonstrable progress. An iteration is iterative in that it is repetitive and involves work and rework, incremental in that it is additive and involves more than rework alone, and parallel in that work may be concurrent within the iteration.

A use-case is a functional requirement. For example, functionality to login or logout of a system, input data, process the data, generate reports, and so forth. As the UP is use-case driven, use cases drive or feed iterations. That is, iterations are planned and evaluated against "chunks" of functionality (or parts thereof) such as to manage agreement with users and trace project activities and artifacts back to requirements. Thus, accounting for business forces by planning and evaluating iterations against functional requirements. Non-functional requirements (usability, reliability, performance, and other such characteristics) are incrementally considered as use cases evolve through the disciplines.

A system has an architecture. For example, the architecture of a system includes a collection of elements and how they collaborate and interact, including various subsystems for handling security, input and output, data storage, external communications, reporting, and so forth. As the UP is architecture-centric, iterations focus on architecture and evolving the system. That is, iterations demonstrate progress by evolving a puzzle of "chunks" such as to manage the complexity and integrity of the system. Thus, accounting for technical forces by demonstrating progress via the production and evolution of the real system.

A risk is an obstacle to success, including human, business, and technical concerns or issues. For example, human risks include having insufficient, untrained, or inexperienced human resources, and so forth; business risks include having insufficient funding, time, or commitment from the business community, and so forth; and technical risks include having an insufficient understanding of the requirements or technology, using unproven technology, using technology that will not sufficiently address the requirements, and so forth. As the UP is risk-confronting, iterations confront risk and leverage feedback from previous iterations to confirm progress and discover other unknown risks. That is, iterations confront risk that is derived from use cases and architecture such as to achieve project success,thus reconciling business and technical forces.

An iteration is a time-box with a fixed beginning and end wherein a collection of collaborations are planned, executed, and assessed in order to progressively demonstrate progress. The beginning and end are negotiated among stakeholders, management and technical members of the project community who impact and are impacted by the effort. Use cases that feed an iteration are selected based on the highest risks they confront. A use case may evolve across any number of iterations and may evolve through any number of core disciplines in an iteration. An iteration results in one or more intermediate builds or operational versions of the system. An iteration results in a single internal or external baselined and evaluated release of the system. The feedback and lessons-learned gained from an iteration feed into future iterations. Within an iterative approach, metrics and estimates are also iteratively derived, and trends across iterations form the basis for metrics and estimation for the overall effort. The duration of an iteration is inversely proportional to the level of risk associated with the effort. As iterations execute, they only minimally overlap. Development cycles and phases may also be time-boxed; as development cycles, phases, and iterations are planned, the further the plans are in the future, the less accurate the estimates.

Although iterations are composed of the same disciplines as a "pure waterfall" approach, there are key distinctions. A waterfall approach aims for one hundred percent completeness of activities and artifacts of a discipline before proceeding to the next discipline; however, an iterative approach involves iterative collaboration and aims for incremental refinement and evolving levels of detail of artifacts throughout the lifecycle. A waterfall approach does not offer explicit opportunities for partial deployment of a system or explicit opportunities for introducing change into the lifecycle, and is therefore quite reactive to change; however, an iterative approach does offer explicit opportunities for partial deployment of a system at the end of an iteration and explicit opportunities for introducing change into the lifecycle at the end of an iteration and before the next iteration, and is therefore quite proactive or responsive to change. A waterfall approach progresses serially through disciplines; however, an iterative approach may progress forward or backward across phases to change focus and involves various disciplines in order to address risk.

Iterations

To effectively and successfully apply the UP, we must understand iterations and how they are applied in linear, sequential, and iterative approaches.

An iteration is planned, executed, and evaluated. Use cases and risks are prioritized, and use cases are ranked against the risks they mitigate. When planning an iteration, those use cases that address the highest risks and can be accommodated given the iteration's limiting factors (funding, time, resources, and so forth) are selected for driving the iteration. When executing an iteration, use cases evolve through the core disciplines and the system and its architecture evolve.

However, use cases need not evolve through every core discipline in a single iteration. When evaluating an iteration, actual results are compared against the planned objectives of the iteration, and plans and risks are updated and adjusted. The overall objective is to produce the resulting system; therefore, all of the core disciplines are engaged as soon as possible without introducing risk to the project; that is, practitioners are responsible for determining which disciplines to engage and when they should be engaged.

Linear Approaches

When the first group of iterations focus primarily on business modeling, next group of iterations focus primarily on requirements; and so on through the core disciplines, the team steadily learns more about the problem before learning about the solution as the effort progresses across phases. The effort results in a complete system only at the end of the development cycle. This is commonly known as a linear approach. Figure 3 shows the overall pattern of how effort is distributed using a linear approach.

Figure 3: Linear Approach.

Linear iterations are too macro-focused towards phases where disciplines are more discretely distributed across phases; thus, the balance between business and technology is skewed by the management members of the community. The effort attempts to force all use cases through a few disciplines in an iteration often because the management members of the community perceive everything as a business risk that must be immediately controlled.

Linear iterations tend to delay architecture-related risk-confrontation and risk-resolution while perceiving everything as a business-related or use-case-related risk. However, this approach delays necessary validation of the system and its architecture, and precludes opportunistic deployment of the system throughout the lifecycle. Essentially, this is a "pure waterfall" approach where disciplines are distributed across iterations.

Sequential Approaches

When use cases evolve through every core discipline in a single iteration, the team steadily learns more about the solution for a limited portion of the problem as the effort progresses across phases. The effort results in a system that only addresses a subset of the requirements, which may or may not be deployable or usable throughout the development cycle, and results in a complete system only at the end of the development cycle. This is commonly known as a sequential approach.

Figure 4 shows the overall pattern of how effort is distributed using a sequential approach.

Figure 4: Sequential Approach.

Sequential iterations are too micro-focused towards iterations where disciplines are more discretely distributed within iterations; thus, the balance between business and technology is skewed by the technical members of the community. The effort attempts to force a few use cases through all disciplines in an iteration often because the technical members of the community perceive everything as a technical risk that must be immediately addressed.

Sequential iterations tend to delay use-case-related risk-confrontation and risk-resolution while perceiving everything as a technology-related or architecture-related risk. However, this approach results in a system that may be difficult to integrate and validate, and delays sufficient coverage when exercising the architecture. Essentially, a lack of architectural coverage increases the probability of encountering a use case that completely invalidates the architecture derived from preceding iterations.

Iterative Approaches

An iterative approach involves using a mixture of sequential and linear approaches where linear approaches focus on the problem and sequential approaches focus on the solution. Figure 5 shows the overall pattern of how effort is distributed using an iterative approach, resulting in a parallelogram shape where the corners of the parallelogram are adjusted based on the specific project. When all of the sides of the parallelogram "collapse" into a diagonal line, a "pure waterfall" approach results with disciplines are distributed across iterations.

Figure 5: Iterative Approach.

An iterative approach focuses on a stepwise refinement of knowledge throughout the lifecycle. During the Inception phase, linear approaches focus on scope and sequential approaches focus on an architectural proof-of-concept. During the Elaboration phase, linear approaches gain architectural coverage and sequential approaches focus on addressing architectural risk. During the Construction phase, sequential approaches promote deployment opportunities. During the Transition phase, linear and sequential approaches focus on system completion and project closure.

Generally, an effort ramps up at the start of a development cycle, reaches an optimum where all core disciplines are being performed in parallel and all supporting disciplines are operating as appropriate, and then ramps down at the end of the development cycle. As iterations execute, their content involves collaborations among roles, activities, and artifacts where activities are related via a producer-consumer relationship and may overlap in time such that a consumer activity may start as soon as its inputs from producer activities are sufficiently mature.

Effectively and Successfully Applying the Unified Process (UP)

To effectively and successfully apply the UP, we ought to be aware of various guidelines (lessons learned) for applying the process framework.

Given the collaboration among roles, activities, and artifacts, the principal dynamics occur between the roles of the Project Manager, Architect, and Process Engineer. The other roles are not particularly secondary to these roles, but collate around these roles. The Project Manager is responsible for the overall project. The Architect is responsible for the system and its architecture. The Process Engineer is responsible for applying the UP and Development Case. The quintessential factor for effectively and successfully applying the UP is the collaboration and interaction among these roles in the context of a specific project. Their collaboration involves the Architect defining the system, the Process Engineer suggesting the roles, activities, and artifacts required for delivering the system, and the Project Manager applying resources for executing the activities against the artifacts to deliver the system. Their interaction involves leveraging each other's knowledge to successfully execute the effort. These roles must focus on bridging the chasm between culture and vision while balancing various contextual forces in a stepwise approach; that is, they must focus, balance, and iterate to achieve success. Otherwise, linear iterations result if the Project Manager is overly rigid, sequential iterations result if the Architect is overly rigid, and general anarchy results if the Process Engineer is overly rigid. Such rigidity results in compromising and failing to realize the benefits of an iterative approach.

Traditionally, projects have combined the Project Manager and Process Engineer roles, which distorts these principal dynamics and causes a "conflict of interest" amongst these roles (as each role has a distinct focus, objectives, and so forth); thus, increasing the potentiality of project failure. Figure 6 shows the principal dynamics of the UP.

Figure 6: Principal Dynamics of the Unified Process (UP).

While guidelines (lessons learned) concerning specific roles, activities, and artifacts are beyond the scope of this paper, guidance regarding focus, balance, and iterations is provided.

Focus

When applying the UP, we ought to focus and be aware of the following guidelines:

Even though many guidelines apply to the Process Engineer specifically, they may apply to other roles. Furthermore, other guidelines may be applied in addition to those above.

Balance

When applying the UP, we ought to be balanced and be aware of the following guidelines:

Even though many guidelines apply to the Process Engineer specifically, they may apply to other roles. Furthermore, other guidelines may be applied in addition to those above.

Iterate

When applying the UP, we ought to iterate and be aware of the following guidelines:

Furthermore, other guidelines may be applied in addition to those above.

Conclusion

Unequivocally, people are the "original ingredient" necessary for success. Don't standardize and enforce the UP, but empower people to leverage the UP! Don't focus on process then projects, but focus on teams because when teams succeed, their projects succeed using their process! Likewise, the UP is "scientifically" defined, but "artistically" applied!

As the Unified Process (UP) is a use-case-driven, architecture-centric, iterative and incremental development process framework that leverages the OMG's UML and SPEM, by understanding the UP, iterations, and being aware of various guidelines (lessons learned), we have a sound foundation for effectively and successfully applying the UP. Furthermore, it is experience, experimentation, and application of the UP and its various elements that will enable us to realize its benefits.

Related Methods & Tools articles

More Unified Modeling Language (UML) Knowledge


Click here to view the complete list of archived articles

This article was originally published in the Spring 2002 issue of Methods & Tools