Home arrow Blogs arrow Agile Junction arrow Agile RUP
Agile RUP PDF Print E-mail
Written by Kirk Knoernschild   
Thursday, 15 February 2007

Introduction 

The Rational Unified Process (RUP) has become a defacto standard for many organizations as they look to improve their software development processes. Unfortunately, transitioning to RUP is an arduous and risky process as teams struggle with adjusting to an iterative style of development. As a witness to many process improvement efforts utilizing RUP, I've found most are little more than reinventions of an organization's existing practices. The result is a pseudo-iterative style of development that favors excessive documentation manifest as RUP artifacts, a predictive and plan-driven approach providing no clear barometer to gauge success, and a tendency to revert to traditionally flawed practices as teams succumb to the pressures of project deadlines. Certainly, RUP should not be blamed for the failure, but often times that's the case, casting a dark shadow on iterative development and making teams ever more leary to consider agile development.

RUP's Beauty 

I must admit that RUP is a beautiful piece of work. Use Case Driven. Architecture Centric. Iterative and Incremental. To the unsuspecting development team, it offers the wonderful promise of traceability. Develop a Use Case Specification. Realize each use case scenario with sequence diagrams through analysis and design. Analyze sequence diagrams for common flows (reuse). Create a view of participating classes for each use case. Allocate classes to components. Architectural analysis and design. And so on. Traceability throughout the development lifecycle. There are even tools available that support the process.

Yet in all its glorious wonder, it is RUP's ceremonial beauty that is also it's downfall. We can unneccessarily argue that it's not an inherent flaw of RUP, but more so due to manifestations of RUP. Teams attempt to stabilize architecture early. They tend to avoid construction until requirements are stable. They create iteration plans but do not deliver after each iteration. But a process with infinite variability and implementation baggage is destined to fail.

Herein lies the problems with many manifestations of RUP.

  • Iterations don't deliver. The purpose of iterative and incremental development is to deliver functional software at the end of each iteration, where each iteration results in incremental growth of the system. All too often, teams fail to achieve this goal, or make adjustements when they don't. Instead, many RUP iterations resemble nothing more than traditional waterfall phases broken down into smaller timeboxes. The result is multiple requirements iterations, following by multiple analysis and design iterations, followed by multiple implementation iterations, etc.
  • Traceability cannot be achieved. Many folks are quite enamored with traceability. Changes to requirements can be traced through the analysis and design model into the code through the components and onto the executable nodes. But traceability is fundamentally flawed due to syncrhonization issues across artifacts. Teams do not possess the discipline necessary to maintain consistency across all artifacts, making the source code the only true artifact representing the current state of the system.
  • Emphasizing process improvement. The complexity and infinite variability of RUP make it a methodologists process, not a developer's process. Passing a CMMI appraisal may be important, but delivering quality software is the ultimate goal. Achieving one does not guarantee the other.
  • Artifact centric. RUP teams utilize Use Cases and Use Case Specifications to gather and elicit requirements and detailed class and sequence diagrams that capture the vision for architecture and design. They create software development plans, test plans, and deployments plans. Probably many others. But in many cases, reviewing how a team works before and after RUP will show that little else has changed other than the artifacts produced.
  • Addressing the wrong problem. In many cases, we hope that RUP will result in more stable requirements and accurate estimates. But it cannot solve problems inherent to software development. Instead of emphasizing process to stabilize requirements, process must emphasize managing change. Instead of improving predictive estimating, process must emphasize measuring based on experience and trends. Neither of these are possible if we aren't delivering iteratively.

Software Matters

If you've read any of my blogs or articles, you'll know I stand firm on a few key points.

  • Process doesn't matter, practices do. I don't care to debate the merits of process, be it RUP, Scrum, or any other. I find value in the numerous practices embedded within each, but do not feel that adopting any process verbatim is the right solution for any team.
  • agile is always good. Agility is defined by your teams ability to deliver functional software. Unless I'm missing something, the goal of any software development initiative is to deliver software.
  • The source code is the only artifact that matters. Systems are never judged based on the beauty of the architecture diagram or the completeness of the requirements specification. These only provide a false sense of progress and security. Systems are judged based on whether the software delivered meets the user's needs.
  • Increased agility requires more than practice or process. It requires tools, infrastructure, and a codebase that allows the team to respond to change. Yes...the team. That's pretty important too.
  • Iterative ain't always agile. See first bullet, and recognize that if you are forcing people to conform to process over embracing process evolution, you'll find it difficult to realize high degrees of agility.

A Better RUP

RUP and agility are not mutually exclusive. RUP has the potential to increase agility by improving a team's ability to deliver software iterative and incrementally. To do so however requires teams to avoid the common problems when adopting RUP, and focus on that which is truly important - software delivery. Using RUP as a process framework, while complementing it with agile practices such as test driven development, continuous integration, and a strategy for tracking running tested features will yield higher degrees of success. Teams will generate the constant feedback, increase the collaboration, and develop the engaging relationship with business stakeholders that are important to any successful software development effort. Adopting practices to address the pain points on a project will help avoid the problem caused by sudden and radical shifts in development philosophy. Considering the dynamics and strengths of the team throughout the process improvement initiative is imperative. Eliminating waste created by artifacts that don't directly contribute to creating high quality source code will speed software delivery.

Improving a team's development process is good, so long as the folks pushing the process recognize that the goal of the process improvement effort must be delivering quality software over implementing ceremonial processes. RUP is one way to begin. As your team or organization works to improve process, don't be constrained to only RUP. Consider alternatives. The first step in improving your ability to deliver software is recognizing that a problem exists. Begin by understanding the problem. Are you having software quality issues? Are development efforts simply taking too long? Constantly exceeding your budget? Aren't able to meet business objectives? Constrained by resources? Something else? Or everything? Quite simply, you must recognize your pain, identify it's cause, and eliminate it. Then...do it again.

Comments (4)add feed
Supriya: ...
Yes I agree.
We need to focus on the colloborative results and not only on the methododical process. As Kirk mentioned, need to find out waste efforts and bring in agility in all the phases.
1

February 04, 2008
Edward: ...
Meaningful change won't be found in acquiescing to corporate America's "realities." Those in corporate America finding ways to make agile software development practices work for them will gain a competitive advantage.
2

January 25, 2008
Philip: ...
Arrogance?! I passionately agree with Kirk in all that he says. One problem is that most of corporate America lacks "agile thought leaders" and has to fall back on pure process. The type of results-focused team that Kirk describes can only happen when process and talent and commitment come together in one place and time. The real problem is that the person holding the purse strings (i.e. project manager) has to use new, less linear techniques to control agile projects so they just won't commit to it.
3

July 06, 2007
Ex-Big 5: ...
Some good points in this blog, but was hard to get past the arrogance. Until Agile thought leaders can get over their ego and relate to the reality of corporate America's need for a sense of scope, budget, schedule before the onset of a major program it will never get wide-spread adoption.
4

July 04, 2007
Write comment


Write the displayed characters


busy
Tags:
Click to add your tags...,
 
Next >

Video News

Agile Poll

Select all that Apply
How are you building an Agile organization?
 
 
 
 
 
 
 
ThoughtWorks Mingle 2.0
 

Coming Up - Editorial Calendar

  • August 13 - Quality Agile Development
  • September 10 - Agile News
  • October 08 - Valuable Agile Practices
  • November 12 - Introducing Agile to the Organization
  • December 10 - The State of the Agile Community
See the full 2008 Editorial Calendar >
Copyright © 2006 CMC Media, Inc. All rights reserved. All marks are trademarks of CMC Media Reproduction in whole or in part in any form or medium without the express written permission of CMC Media, Inc. is prohibited  
 
 CM Yellow Pages | ALM Expo | CM Today | Configuration Management Journal | CM Crossroads