User:Robaix/Two Tracks Unified Process

Two Tracks Unified Process

The Two Tracks Unified Process (2TUP [ tu ti yu pi ] ) is a process for the software development, based on the Rational Unified Process (| RUP). It is also called Y-Process.

Like in other UPs in the 2TUP the SW life cycle is splitted in cycles (i.e. iterations) in which the SW is developed incrementally. One development cycle is divided in four consecutive phases: Inception phase, Elaboration phase, Construction phase, Transition phase.

The development activities are defined in six domains (or fields of knowledge): needs acquisition (here needs is meant as a sysnonym of requirements and acquisition as sysnonym of specification), analysis and conception, implementation (here as sysnonym of development), test and deployment.

The 2TUP separates the technical from the functional aspects of SW development. These two aspects are then joined in the realization phase.



The first step of the 2TUP is a Preliminary Study, which consists in
 * identifying the actors that interacts with the system to be developed and the messages exchanged between the actors and the system;
 * delivering both the functional and technical specifications; and
 * modeling the context.

In this step the system is seen as a Black-Box. The actors communicate with the system and are interconnected with it. When designing such a context, one should put, on the axes connecting the actors with the system, the messages they exchange with the direction of communication.

The process is the divided in three main phases (see also picture on the right):
 * a technical branch (the upper right branch of the Y),
 * a functional branch (the upper left branch of the Y), and
 * a realization phase (from the center of the Y and below).

The Technical Specification (in the picture referred to as Technical Architecture and represented by the upper right branch of the Y) includes the Generic Deisgn.

The Functional Specification (in the picture referred to as Analysis and represented by the upper left branch of the Y) is focussed on the high level concept and the Business Services. It includes the Category and the Dynamic as well as the Static Model.

The Realization Phase (represented in the picture by the the center and the lower branch of the Y and referred to as Design) is focussed on the detailed concept and more granular technical issues.

Entering the Design Phase it may be reasonable to split the project into several parallel subprojects (e.g. one sub-project per Business Service). In this case every subproject could create an individual instance of the Y-Model.

As prolongation of the lower branch of the Y, the Realization Phase can be considered to include a Development Phase and an Handover Phase too.

=Characteristics=

Reutilization
The upper left branch of the Y allows to capitalize the gained knowledge. It is an investment for the mid and long time, because the functional specifications are independent from the used technology and can be used when technologies change or when the system must be developed with another technology.

Please notice that changes in legislations, practices, and/or in customer needs may lead to changes also in the functional specifications.

The upper right branch of the Y allows to capitalize the technical know-how. It is an investment for the short and mid time. It allows to develop other systems (e.g. for another customer, in another field of business) using the same technology.

As a matter of fact, the technical architecture can be reutilized at once for other functional components of the same system.

Iteration and Increment
An iteration is a sequence of distinct activities with a basis plan and evaluation criteria, which procuce a (intern or extern) release.

Through iterations the system can be improved and can evolve step-by-step.

The iterations allow for a progressive evaluation of the system and its utilization.

An increment is the difference (Δ [delta]) between two releases delivered at the end of two consecutive iterations.

The Y-Process will be duplicated at different levels of advancement, delivering at each step a new release.

Typically an advancement scenario will look like following:
 * Iteration 1: Preliminary Study,
 * during Iteration 1 the validation functions of the initial system are developed.
 * Iteration 2 and 3: Elaboration,
 * Iteration 2 is focused on the architecture. It can be considered as the prototype of the technical realization.
 * In Iteration 3 the functions will be realized according to their priority
 * Iteration 4, 5, and 6: Construction.
 * in the remaining iterations the other functions will be developed, so that in the last iteration the systm will be completly developed.