We have 6045 guests and 5 members online

Agile Sponsors

HP


CollabNet


TechWell

Agile RUP

E-mail
Written by Kirk Knoernschild   
Thursday, 15 February 2007 05:54

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.

Trackback(0)

Comments (0)Add Comment


Write comment

security code
Write the displayed characters


busy
Last Updated on Friday, 16 February 2007 06:22
 
Cialis

Agile Marketplace - Announcements and Special Offers

Upcoming Webcasts
Sponsored by Urbancode - On Demand
Mastering Complex Application Deployment
Sponsored by CollabNet - Wednesday, August 24, 2011
Closing the Agile Loop: Continuous Integration, Continuous Information

ScrumWorks Pro – The World’s Best Agile Project Management Tool
Simply put, CollabNet’s ScrumWorks Pro is the best Agile project management solution on the market, bar none. More than 150,000 Agile professionals rely on the power and simplicity of ScrumWorks every day.  But don’t take our word for it – try it yourself for free. CollabNet is now providing the first 10 users of ScrumWorks Pro at no charge!
Download ScrumWorks Pro today!

The Business Case for ALM Transformation
Are legacy systems holding your company back?  Breakthrough these technical constraints with an open and scalable environment that meets your unique business need to transform. There is no reason to be locked into an obsolete platform. The output of a number of recent transitions from legacy systems, this is practical white paper shares lessons learned and illustrates how guidance and enablement can pave the way for change.
Download this Whitepaper