February 4, 2012

BigVisible Blog

RUP isn’t agile but some of its principles are worthwhile

Why RUP isn’t Agile?

I work with a number of people who come from a RUP background and who claim that RUP is Agile because RUP calls for iterative development. While a cursory reading of RUP literature may show that the RUP framework doesn’t really mandate anything — it is a framework not a process — and leaves things up to the team and organization, it’s spirit couldn’t be further from Agile. I just have a hard time reconciling some of  the ideas behind RUP to Agile values and principles

Consider the following:

RUP is predictive and calls for component based architecture, use of use cases for specifying requirements, and UML as the language for specifying design.

While RUP proponents may claim that official RUP literature doesn’t really mandate that use cases are the only way to specifying requirements, every explanation, presentation, or book always depicts RUP as use case driven. They also contain diagrams that mention the percentage of the use case model that should be completed by the end of each phase of the RUP. Moreover, the official documentation cleary states that “The Rational Unified Process is a use-case-driven approach” and the entire set of documentation refers to use cases and the use case model — use cases play a major role in several of the critical process workflows.

RUP calls for iterative development within a waterfall process. It does not aim for frequent releases at the end of each iteration; releases are done at the end of a transition phase after cycling through the Inception, Elaboration, Construction, and Transition phases, each of which is composed of multiple iterations. It basis reeks of Waterfall development — gather requirements, design, implement, and transition to production.

RUP encourages granular division of labor where specialists hand off documents to one another at specific points in the process. Their roles depend on the quality of documentation to guide their work. Agile teams look for generalizing specialists and makes no distinction between roles. All team members are accountable for the product! RUP roles are accountable only for their portion of the process.

Agile teams are assigned to one project at a time and everyone is busy during an iteration. During RUP phases, what is one group of roles doing in the other phases? Are people multitasking and working on different projects at the same time?

XP requires TDD and Scrum encourages adherance to good engineering practices like those followed by XP; RUP doesn’t and is instead a mini waterfall.

Agile methods call for aggressive refactoring and the discovery of a final design; RUP calls for an initial candidate architecture, UML to elaborate use cases and other design artifacts that become the basis for construction.

RUP prioritizes based on risk; agile on business value, which is a function of scope, quality, cost, and time. Too often projects in companies that adopt RUP seem to have an architecture/IT focus; business value is rarely if ever mentioned. This is also evident from how the use cases are written; they have an IT slant to them and are rarely written from a user’s perspective.

RUP is silent on the active removal of roadblocks; agile is chiefly concerned with identifying and removing roadblocks whether created by the team, management, or the organization.

Companies that adopt RUP often have a number of related heavy-weight Rational/IBM tools. It seems like a discussion of tools is often a major topic for RUP speakers these days. Agile teams on the other hand like to travel light and use the simplest tools possible — whiteboards, sticky notes, index cards, agile models, etc.

So can we learn anything from RUP?

This is not to say that we cannot learn anything from RUP. An initial focus on architecture and risk identification and mitigation is a good strategy especially when the project involves a degree of novelty (new technologies, new domains) or when the team is not composed of Journeymen or higher (“The Seven Stages of Expertise in Software Engineering” by Meilir Page-Jones ). Far too often, I have seen Agile teams struggle with the implemented architecture iteration-after-iteration; a short initial focus on specifying a candidate architecture would have been beneficial in most situations. Most probably, if the team was composed of superstars I wouldn’t have seen this problem. But there aren’t too many teams of that nature that I have come across.

Use cases though maligned by some, and bastardized by others, have their place. There has been a recent trend by Agile teams and Product Owners to write smaller-and-smaller stories to fit into shorter-and-shorter iterations. The result has been over-fragmentation and a loss of unity and cohesion; it becomes difficult to quickly see how the pieces fit together and how the process flows together. Use cases (if written properly) help us see the forest for the trees (see Alistair Cockburn’s writings and Craig Larman’s POS example in “Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development” for good examples and principles to follow).

Considering risk and developing strategies for tackling them early is a smart idea. Spiking and implementing risky portions of the infrastructure and architure helps drive out risk early and prevents surprises later.

Modeling is a useful exercise if it doesn’t become an end to itself. Instead of UML, team members can gain much more insight by drawing simple, informal models on whiteboards (see Scott Ambler’s Agile Modeling Web site at http://www.agilemodeling.com/ for creating effective and light-weight models).

Comments

  1. Shaun Forgie says:

    Alex, from your very one sided review of RUP based development practices I can’t help but assume you have never used the RUP on a real project, or if you have it was put in place by someone with little experience of the core principles of RUP. The RUP is best viewed as a process library that can be assembled into a wide array of different configurations. In fact Rational Method Composer is a tool that has been built exactly for this purpose.

    Rgs
    S

  2. Alan Parrish says:

    Shaun, I actually agree with Alex. I understand that RUP is a framework that you can tailor into whatever you want. But that fact doesn’t make it Agile. And you actually prove Alex’s point by immediately talking about the tools that you can use — Agile is not about tools but about delivering value faster. RUP doesn’t deliver value (shippable code) until after Tranisition; it does deliver a lot of interim artifacts though. ;-)

    Cheers,
    Alan

  3. Ruud says:

    Hi,
    Please study RUP a little bit more. The stages within RUP do not depict a waterfall, they focus on the risk to take a way in that phase of the project. Every iteration withing elaboration, and construction leads to working software!

  4. Mike Ratliff says:

    Ruud,

    It is precisely the over emphasis of risk removal that is one of the weaknesses of the RUP approach. Put simply, there are significant risks all around our projects that are not worth addressing because the business value is not there to support it.

    While I agree that this fallacy may be a smell left by someone miss-using RUP, it is such a common pitfall that we have to begin to look at the framework itself as a root cause of the problem.

    I spent years delivering projects via RUP, teaching RUP tactics and being frustrated by the very problems outlined very well in this short article.

    Agile is not the end solution, but it does address many of the short comings in our current toolbox.

    Just a few cents…

  5. Alex,

    you do make some correct points that on the surface the RUP comes across as a little bit predictive, complex, and prescriptive.

    That being said, the RUP is a process framework and there has been plenty of work to offer more agile mixtures of the RUP.

    When really looking at the RUP you should take a look at its principles which in my opinion can be quite compliant with agile principles with a little bit of alteration.

    The problem with agile is that although it does recommend that you “perform just enough documentation/architecture/etc.” to make your project successful, it doesn’t really provide any good concrete advice on what this means. Some RUP practitioners who are also known as being agile (like Scott ambler for instance) have stepped in to fill the void.

    Personally, I am a huge fan of agile, and push for it on every product on the part of. I also do things like use cases, (following Alastair Cockburn’s approach would you have correctly mentioned) architecture envisioning, and architecture prototyping and modeling.

    I do make sure there’s a real stakeholder who’s a real client for any of this work.

    I invite you to take a look @ my post on agile over RUP where I discuss how to mix the two together.

    Regards
    Jeff

Speak Your Mind

*