On a previous post I talked about the Software Development Life Cycles, in this post we are going to continue looking through one specific process, called Unified Process (UP).
This well written scientific journal defines it as a system that goes though many iterations, with cyclic feedback and adaptation. Meaning that the whole system is development incrementally over time, and by each iteration the process makes changes based on the feedback received. There are four main phases: Inception, Elaboration, Construction and Transition.
We need to make clear a definition that can commonly lead to misunderstandings, the Rational Unified Process (RUP) it’s one the best known UP, and sometimes authors used this names interchangeably, but the Unified Process is referred as the general concept of the whole framework, since there are many examples of UP’s, the concept just include those elements that all the processes have in common.
Rational Unified Process (RUP)
This process was developed and published by Ivan Jacobson, Grady Booch and James Rumbaugh for IBM, were they combined their methodologies into a single framework based on UML. Probably these names are familiar to you, if not, I recommend you to read more about them, they have created and published a lot of tools and techniques that are used widely in software development, one example is Unified Modeling Language (will explain this topic in a future post).
IBM published a paper were they defined the Rational Unified Process as a disciplined approach to assigning tasks and responsibilities within a software development organization, and its goal is to ensure the production of high quality software, taking into account the needs of the end users, and it has the following characteristics:
- Is a process product.
- Enhances team productivity.
- It’s activities create and maintain models.
- Is a guide of how to effectively use the Unified Modeling Language.
- Is supported by tools, which automate large parts of the process.
- Is a configurable process.
- Captures many of the best practices in modern software development.
To explain each one of the main phases of the process, here’s a quick and great video that summarizes everything you need to know, it you don’t like to watch videos and prefer to read a more in-depth definition, here’s a great blog post that shares information about the process and it’s main phases.
Other Unified Process Examples
As I stated before, there are many more UP-like processes that developed over time and when needs on the industry change, these are inspired on the Rational Unified Process, and make it simpler or with little modifications since sometimes all the elements of RUP are not needed, but maintaining the core of it. We are going to see two quick examples: OpenUP and AUP.
Open Unified Process (OpenUP)
This is a method that is open license (as the name states), were only the fundamental and sufficient elements are included, it was used by the Eclipse Foundation, in other words, OpenUP is a lightweight alternative from RUP. There is a great article called OpenUP – The Best of Two Worlds that briefly explains why it’s useful to use this process. Here’s a diagram presented by the Eclipse Organization on a document that well explains the OpenUP process that I recommend reading:
Agile Unified Process (AUP)
Similar to OpenUP, AUP is a simpler version of RUP developed by Scott Ambler. He actually wrote an open document were the whole process it’s defined. The process uses Agile techniques and concepts such as Test-Driven Development and Agile Modeling, it life cycle phases are defined in the following figure :
It changes a little bit the phases work during the iterations having some other things in considerations, but as you can see, the core patterns are very similar to RUP.
The Rational Unified Process is a great software development that inspired a lot of processes used widely in many organizations, but it can be a killer in smaller projects, that’s why OpenUP and AUP exist, they get rid of the complexity and robustness that the original process has, making it more simpler and only doing the work that is enough, following other principles. It’s important to keep in mind that you use what you need in the environment you are in.
One thought on “Unifying Software Development Methodologies”