Rational Unified Process (RUP)

From apppm
(Difference between revisions)
Jump to: navigation, search
(Test)
(Deployment)
Line 160: Line 160:
  
 
==== Deployment ====
 
==== Deployment ====
 +
 +
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:
 +
 +
* Developing external software releases
 +
* Distributing the software
 +
* Installing the software
 +
* Providing help to the end – users
 +
* Creating an up-to-date user manual
 +
* Conducting beta testing
  
 
== Ten Essentials ==
 
== Ten Essentials ==

Revision as of 06:14, 22 September 2015

The Rational Unified Process (RUP) is an iterative, software development methodology, firstly introduced by the Rational Software Corporation which was acquired by IBM in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of high quality software by providing the development team with a set of guidelines, templates and tool mentors, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the Unified Process, an iterative and incremental software development process framework. Other worth mentioning forms are the OpenUP and Agile Unified Process.

Maybe Mention UML !!!


Contents

Process Overview

Figure 1. The iterative model graph shows how the process is structured along two dimensions

The best possible way to describe the methodology is through a 2 - dimensional graph.

  • The first dimension (horizontal axis) represents the dynamic aspect of the process. It expresses time in terms of phases and iterations.
  • The second dimension (vertical axis) represents the static aspect of the process. It expresses workflows in terms of 6 core and 3 supporting disciplines (more on that on "Disciplines" section).

Time Dimension - Phases and Iterations

When developing software, the project team goes through a multi-step process, from establishing a system's requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.

  • Inception phase
  • Elaboration phase
  • Construction phase
  • Transition phase

Depending on the project, each of these phases can consist of one to a number of iterations. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.

Figure 2. The four phases and milestones of a project

Inception Phase

The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. The expected outcome of the inception phase includes :

  • A vision document: The document states the general vision of the project including its key requirements, features and main constraints.
  • An initial use-case model (10%-20% complete)
  • An initial project glossary
  • An initial business case, including the business context, success criteria and a financial forecast.
  • An initial risk assessment
  • A project plan (phases and iterations)
  • A business model (if necessary)
  • Prototypes

At the end of the inception phase lies the first major project milestone; the Lifecycle Objective Milestone. The inception phase has five evaluation criteria:

  • Stakeholder concurrence on scope definition and cost/schedule estimates.
  • Depth and breadth of any prototype that was developed.
  • Actual expenditures versus planned ones.
  • Requirements understanding.
  • Credibility of the cost/schedule estimates, risks and priorities.

If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.

Elaboration Phase

The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:

  • A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.
  • Supplementary requirements (if any).
  • A clear description of the software architecture.
  • An architectural prototype.
  • A more detailed risk assessment and business case.
  • A development plan for the overall project.
  • A preliminary user manual (optional).

At the end of the elaboration phase lies the second major project milestone; the Lifecycle Architecture Milestone. The elaboration phase has six evaluation criteria:

  • Is the vision stable enough?
  • Is the system architecture stable enough?
  • Have all the major risks been successfully identified and resolved?
  • Is the plan for the construction phase accurate enough?
  • Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?
  • Is the actual vs planned resource expenditure in acceptable levels?

If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.

Construction Phase

The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders' needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:

  • First external release of the software.
  • User manuals.
  • A detailed description of the current release.

At the end of the construction phase lies the third major project milestone; the Initial Operation Capability Milestone. The construction phase has three evaluation criteria:

  • Is the software release stable enough to be given to the user community?
  • Are all the stakeholders ready for the transition to the user community?
  • Is the actual vs planned resource expenditure in acceptable levels?

If the project fails to pass this milestone, transition may have to be postponed by one release.

Transition Phase

The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders' expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:

  • Beta-testing to fix any major software bugs and add any missing features.
  • Conversion of operational databases
  • Training of end users and maintainers.
  • Marketing and distribution of the product.

At the end of the transition phase lies the fourth and final major project milestone; the Product Release. The transition phase has two evaluation criteria:

  • Are the end - users satisfied with the product?
  • Is the actual vs planned resource expenditure in acceptable levels?

Iterations

As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional waterfall approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.

Workflow Dimension - Disciplines

Figure 4. Individuals, Roles and Activities
Figure 5. Example of a workflow

A process describes who is doing what, how and when. RUP addresses those terms with four modelling elements; Roles, Activities, Artifacts and Workflows respectively. The relationships between the role, activity and artifact is shown in Figure 3. A role, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. Activities are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. Artifacts, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called workflows. Examples of workflows can be seen in Figure 5.

RUP identifies nine core process workflows, called disciplines. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.

There are six core "engineering" disciplines:

  • Business Modelling Discipline
  • Requirements Discipline
  • Analysis and Design Discipline
  • Implementation Discipline
  • Test Discipline
  • Deployment Discipline

And three core "supporting" disciplines:

  • Project Management Discipline
  • Configuration and Change Management Discipline
  • Environment Discipline

Business Modelling

Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using "use cases". This assures that all stakeholders share the same understanding of the demanding organization.

Requirements

The purpose of the requirements discipline is to describe in detail what the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system's capabilities, user-interface and the end user's needs.

Analysis and Design

The purpose of the Analysis and Design discipline it to investigate how the system requirements will be translated into a detailed implementation plan. The system needs to:

  • Perform exactly as described in the use-case descriptions.
  • Fulfill all requirements.
  • Have a robust structure.

Analysis and Design result in the creation of a design model. The design model is an abstraction of the system's architecture and acts as a guide of how the source code should be finally written and structured.

Implementation

The purpose of the Implementation discipline is to:

  • Arrange the code into subsystems, organized in layers.
  • Implement classes and objects in terms of components.
  • Uni-test the developed components to ensure quality.
  • Integrate the results into an executable system.

The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.

Test

In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:

  • Functionality.
  • Reliability.
  • Application Performance.
  • System Performance.

Deployment

The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:

  • Developing external software releases
  • Distributing the software
  • Installing the software
  • Providing help to the end – users
  • Creating an up-to-date user manual
  • Conducting beta testing

Ten Essentials

Vision

Plan

Risks

Issues

Business Case

Architecture

Product

Evaluation

Change Requests

User Support

Best Practices

Develop Software iteratively

Manage requirements

Use component-based architectures

Visually model software

Continuously verify software quality

Control changes to software

Limitations

Conclusion

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox