Rational Unified Process
In the last Kernel Journal we looked at the problem that Barry Boehm was aiming to solve back in 1995 when he first proposed his three standard process milestones (which later gained industry prominence as the milestones in the Unified Software Development Process and the Rational Unified Process), namely that “the proliferation of software process models provides flexibility”, but leaves us “with no common anchor points around which to plan and control.” [Barry Boehm, November 1995]. We looked at how a small set of domain entities with simple state progression models (which we call “Alphas”) can make these common anchor points much more practical and useful while ensuring that they remain process-neutral and do not become “document-driven”.
The alphas, when used with common milestones such as the Unified Process Milestones, can actually give us much more than this – they can provide a project status and health dashboard that can be used by the customer and supplier organizations to assess the current status and health of any / all projects, irrespective of which processes or practices they are following. The graphic below shows just such a dashboard, with a set of kernel alphas and a traffic-light status for each alpha, which is derived by comparing where the project is now (the state machine to the left of each traffic light) with where it needs to be to achieve the next project milestone (the state machine to the right of each traffic light).
In Kernel Journal 5: “Making the Invisible Visible” I described how we can easily “skin” a process kernel, by providing a portal for projects to capture, share and agree the essential project information that is needed to achieve each state progression (for example, using a set of templated Wiki pages). Once we have done this, we can make the alpha dashboard much more useful to the project teams themselves, by flagging which sections of the project portal need to be updated and agreed to get the project to where it needs to go next.
This gives us the equivalent of a Satellite Navigation System for our software projects project that enables us to:
- Set our journey destination and waypoints (milestones)
- Track where we are now, compared to where we want to be
- Get guidance on what to do next in order to progress towards our destination.
Over the years I've come to regard 'templates' as one of the great evils of software process efforts. I was actually leading the Rational Unified Process team about 9 years ago when we made a big push to create templates for all the artifacts. At the time I thought it was a good idea since a lot of people had been asking for them. I now regard the decision as having done a lot of damage.
That statement is likely to shock some - surely I can't be arguing against having standard formats for organizing project information! Of course I am not arguing against this - but I am against the way that templates are used in many organizations.
In these organizations, people have little idea of the purpose of many artifacts or work products - they don't understand what they are doing or why, they just know (or believe) that they need to produce these work products. The templates have been provided as a cheap way of rolling out the process - rather than actually building skills the templates are provided and people are instructed to simply fill out the templates to follow the process.
This approach is wholly ineffective. Organizations fail their people when they require artifacts without explaining why they are needed, or helping them to understand if they are needed, or helping them to improve their skills doing the real work that the artifacts merely document.
The usual result of providing standard templates is that people often blindly fill out the template sections, not knowing what to put in them, feeling compelled to fill out every section because it's there. Mindlessly filling out templates is a waste of time - the results are valueless, albeit standard, and do not contribute to positive project results.
I am not arguing for eliminating templates, however - there is some value in having a standard way of formatting and organizing information, but there needs to be some real information in the results produced. The real problem is lack of knowledge and skills needed to do the work - this is where effort should be spent, not in standardizing templates. Once people have expertise in doing the work, a consensus can be reached in the organization about how to document the work. "Templates" will emerge out of that.
I often get the question: “RUP was your baby, but how do you look upon RUP today?” In an interview a couple of years ago I responded jokingly: “Yes, RUP is my baby, but you know babies grow up and some of them need correction.” RUP was created in Sweden under the name Objectory. This was in 1987.
Objectory was really new since its base could be used to describe all aspects of software development. Our focus was to identify all of the rules that we use when we develop good software: what are good use cases, good components, good test cases, etc. The literature in software engineering was totally empty in this space at the time. In order to do this we used object modeling to describe Objectory. Now we could let the base grow forever – technically speaking. Any company could make their own new process using Objectory.
Objectory became very successful. It survived the merge with Rational in 1995. The next version was named Rational Objectory Process, but after the success of UML, the name was changed to the Rational Unified Process or RUP as we all know it. In the work of merging the two companies, the process content grew significantly. However, hidden behind the size, our innovation of how to create a process base and the rules for goodness survived. The crown jewels of Objectory had survived!
Thus, RUP is one of my babies. The challenges with Objectory and consequently with RUP were serious.
Although our way of working in creating a process base was new and great, adoption became quite expensive. To truly be successful with the adoption and consistent usage was to involve customization, mentoring and consulting which most customers couldn’t afford. Thus the success rate was too low.
RUP was developed inside one company and all new ideas from the outside world had to be filtered by our own people and added to RUP. It goes without saying that ideas come from anywhere in the world and by having a process be company owned makes it difficult to assimilate these great ideas. The use of community much like what has been done with open source models would allow for continuous input and improvement. This also allows for scrutiny.
All processes are paper-ware and often managed by people who don’t use the process. This quickly becomes a problem in most organizations because the process becomes a religious document and not a realistic one. This then has the effect that what teams do and what the process tells them to do is often not in synch. And since the team is in charge (doing the work) the value of process becomes small.
These challenges paved the way for the agile movement. The different agile methodologists have one thing in common: they hate RUP. But that is NOT very smart. There are lots of good ideas in RUP. Many companies have made the effort in adopting RUP and done so quite successfully. This has provided them with a very competent staff and something to build on for the future.
However, “the baby needs correction”, and I and my company have done so. The adoption problem is attacked by focus on the essentials and being light instead of trying to be complete. We use cards and game boards to describe the process. Moreover, you don’t need to adopt a complete process all at once, just adopt a practice at the time. The growth problem is not a problem anymore, since we downplay big process and we make instead practices first class citizens. Practices can come from any source including the RUP and much of the practice work we have done is in support of RUP adoption. Practices can be composed to create your own way of working. Finally, the execution problem which is the hardest to achieve, is for the time being our little secret, but you are welcome to learn more about it by studying EssWork and EssUP.
Trust me, this is very smart.