The One Ring in Software Development

Three Rings for the Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness bind them
In the Land of Mordor where the Shadows lie.

J.R.R. Tolkien, The Lord of the Rings

As we saw with the Tamagotchi, the life-cycle of the software can be simplified as anything else with a life-cycle, but, like everything else, it isn’t as straightforward. There are a bunch of different ways to approach the life-cycle as described by the end of that post.

To solve that, different groups of people try to unify the different perspectives in a simple, more efficient way of work: a one method to control the complete software development process, One ring to control them all.

RUP

One of these approaches to create a unified process was RUP: Rational Unified Process. This process was created by Rational software (latter bought by IBM), where they approached the software as if everything where objects, using UML as the standard for modeling.

Use cases are also an important part of RUP, because they help to define the limits of the software. For example, we can:

  • Control fire (Narya)
  • Control Air (Nenya)
  • Control water (Vilya)
  • Control animals (not canon).
  • Or maybe we want to control all the other rings (The One).

These use cases are helpful also to define the final requirements of the product.

After this, you start defining the models of your class, these models are the description of the objects that are required to create the system.

If we wanted to create this new ring that controls animals, we define its characteristics:

  • Made of gold
  • It has a shiny ruby in it
  • It looks nice

Also, we need to define what it is going to do:

  • Control animals

Looking at this characteristics we can see that at the end our new ring is created like other rings, with the difference of the power, so we can use the power of Object Modeling Technique and use its inheritance to simplify our work and obtain this kind of diagram:

UML class diagram of the ring example

A simple but powerful diagram that defines the work to do in the rest of the process. How we will develop it, test it, and deploy it.

After this is only a matter of improving what we have done, maybe controlling animals is not that useful, so we decide to add a power to control plants, that’s a new iteration of our ring. And we continue defining improvements until the people around us (a really bothersome fellowship), or we decides our ring should die.

Other “One rings”

Besides RUP, there are other unified processes, like Agile. Agile main difference is that works based on sprints instead of iterations. In a sprint, you will define some of the work that is supposed to be done during that lapse of time, but the product is not going to be finished after each sprint, meanwhile in RUP you define all the tasks for the iteration and the work is expected to be finished at the end of it.

One thought on “The One Ring in Software Development

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.