Unified Software Process

It is a software development process that can be differentiated from others with three main characteristics that compose it: Use-case driven, architecture centric and iterative and incremental.

Use-case driven:

 It means the software process revolves around use cases. These will actually define how the program will work, what will be its functionalities and limitations. Use-case driven means use cases are also responsible for the method of implementation, testing and design. 

Architecture centric:

The software architecture defines how the functionalities of the program interact or integrate with each other. This means the architecture of the software has influence on how use cases are integrated into the software.

Iterative and incremental:

This means that the software will be developed through a series of versions of it. It is thought to “evolve” into the final product as a whole instead of building each part fully and separately. This part can be divided into 5 phases: Requirement gathering, Analysis, Designing, Implementation and finally testing. These phases will repeat themselves in a loop, these loops are called iterations.

Unified Software process is separated into 2 main types: Open Unified Process and Rational Unified Process which actually divide into 4 phases, similar to the 5 phases we saw before.

  1. Inception – The idea for the project is stated. The development team determines what resources will be needed.
  2. Elaboration – The project’s architecture and required resources are evaluated.
  3. Construction – The project is developed and completed. The software is designed, written, and tested.
  4. Transition – The software is released to the public.

These processes are helpful to effectively plan ahead with intervals. The diference between the two is Open unified process is more focused in planning ahead and giving oversight, so that decisions can be taken before a mistake is made, promoting a fast pace development,  and Rational unified process focuses on optimization of resources, trying to waste as little as possible and make the best program that can be made.

Which one is better:

Personally I find both processes very similar, following the same phases and dividing themselves in iterations. The difference between the 2 of them is not so big; the only thing it changes is the focus of the software treatment. Do you want to be fast and steady? Or do you want to have the best version of your software? In reality, a team of developers could mix or intercalate between the two of them to adapt to the environment and thus trying to create the desired product.

Leave a comment

Design a site like this with WordPress.com
Get started