Hello, welcome to my third mastery post which will continue on the subject of software development, more specific it’s going to be about the Unified Software Process known as UP or USP. I’m going to try to explain my understanding of it.
So to start of what is UP?
Unified Process is a framework that is focused on the development and refinement of a software. The general UP framework divides the development project into four phases: Inception, Elaboration, Construction and Transition. These phases contain a variety of processes and tasks that are done in iterations with incremental deliveries, which are small releases of the product that could for example be an added or improved function of the software.
Inception is the first and usually the shortest phase. During this phase the developers prepare basis for the project such as the business case and project scope boundaries. The focus is on outlining the key requirements, identifying risks, and create the initial project plan and schedule with goals and cost estimates. I think it’s important to not stress this phase, because if the goals and vision are too unclear or unrealistic it could cause problems later on in the development process.
Then we have the Elaboration phase in which the project team is expected to expand upon the activities from the Inception phase. During this phase the goal is based on finalizing the software requirements (use-cases), analyzing the identified risks, creating a detailed architecture and planning of risk management to reduce their impact on final schedule and product.
Construction comes next and is the longest phase. During this phase, the actual code is being written and implemented in a iterative way and delivered as increments each iteration. This means that each iteration should result in an executable release of the software. The last iteration should result in a completed software that is ready to be deployed.
Transition is the final project phase in which the software or system is delivers to the end users. This phase can also include solving eventual bugs and other issues occurring after the implementation.
Rational Unified Process (RUP)
Developing software can be a very complex task, not every project can work in the same way. Because of this there are a variety of different implementations of the UP framework. One of the most recognized today is the Rational Unified Process RUP. RUP was developed by a division in IBM called Rational Software. Most of the time when i read blogs and websites discussing UP they are usually referring to RUP. RUP uses all the four phases described above and the six engineering disciplines: Business modelling, Requirements, Analysis and design, Implementation, Test, Deployment.
You could argue that the RUP model is very similar to the waterfall model with it’s way of moving through the four phases in a sequential way. But in fact it’s important to note that this framework actually emphasizes that the processes are done in iterations and increments.
One of the tools which is popular within RUP is ”UML”, short for Unified Modeling Language, which is used for representing major components, users, and their interaction visually. You have probably seen or used this modelling tool too if you every programmed in an object oriented language like java. I have used it for almost every project with java and in my opinion it helps give a good overlook of the project and make the development of the software more feasible .
As i said before there a more implementations for UP then just RUP.
Agile Unified Process (AUP) is simplified version Of RUP that was created by Scott Ambler. This implementation applies Agile techniques and concepts such as Test-Driven Development and Agile Modeling.
If you look at the figure above, the model looks very similar to RUP. One big difference though is the disciplines . If you look to the left on the figure the disciplines are different . In AUP there is disciplines like Project Management, Configuration management, Enviroment and so on.
If you want to read more about the other UP implementations use these links below.
- Basic Unified Process (BUP), a lightweight variation developed by IBM and a precursor to OpenUP
- Enterprise Unified Process (EUP), an extension of the Rational Unified Process
- Essential Unified Process (EssUP), a lightweight variation developed by Ivar Jacobson
- Open Unified Process (OpenUP), the Eclipse Process Framework software development process