EUP

Enterprise Agile: Process Tailoring and Deployment Strategies

Follow @scottwambler on Twitter!

Tailoring and then deploying your software process is an important aspect of the Enterprise Unified ProcessTM (EUP)'s Software Process Improvement (SPI) discipline. When it comes to software development, one of my philosophies is that you should follow the right process for the situation. Because every situation is different, you will need to follow a unique version of your software process. The implication is that you need to tailor and then deploy the process for each development team, yet at the same time you want to keep this effort as simple and quick as possible. In this article I discuss the concept of organization-level development cases which are tailorings of the RUP/EUP to meet the specific needs of a category of projects. The article then describes three strategies for deploying a tailoring of a software process -- a simple, web-based strategy; an RPW based strategy, and an EPF-based strategy. Finally, it overviews configuration management (CM) issues which are critical to your success.

NOTE: This article will soon be updated to reflect the evolution of EUP to be based on Disciplined Agile Delivery (DAD). Please stay tuned.

Table of Contents

  1. Organization-level development cases
  2. A simple deployment strategy
  3. IBM Rational Method Composer (RMC)
  4. The Eclipse Process Framework (EPF)
  5. Configuration management issues

1. Organization-Level Development Cases

In the cycle of defining/tailoring and implementing, you may identify the need to have slightly different variations of the process. For instance, you may find it beneficial to define different tailorings of the process for green field (new development) and commercial off the shelf (COTS) implementations. With the EUP, these tailorings can be accomplished with organization-level development cases.

A development case is typically defined for each project using RUP. It defines the particular process tailoring that will be used on that specific project. This allows teams to create process definitions to meet their particular needs. An organization-level development case is a development case with a wider scope; it is applicable to many projects. For example, you may have organization-level development cases for new development, for COTS installation projects, for offshoring projects, and for minor enhancement projects. For example, the organization-level development case for new development projects may stress business modeling and architecture efforts because new development projects are riskier, whereas the offshoring organization-level development case would focus on requirements definition, acceptance testing, and relationship management.

There are two fundamental strategies to choose from when documenting organizational-level development cases. One strategy is to define an organizational-level development case that covers 80% of the material the projects will use and have each project use this case as a starting point and modify it as needed. Alternatively, you can develop a fully detailed organizational-level development case and just have each project note deviations from it, usually in their software development plans.

2. A Simple Deployment Strategy

One deployment option is to not tailor the RUP material at all, except perhaps to install plug-ins. As Figure 1 depicts, you can develop a collection of HTML pages that overviews the procedures that you want developers to follow. These pages will reference the RUP material, as well as other process-related materials including the EUP , IEEE standards, your own detailed procedures, as well as agile methodologies such as Agile Modeling and agile database techniques.

Figure 1. A simple process deployment strategy.

There are several advantages to this approach:

  1. Simplicity. You don't need to purchase, learn, or work with complex process authoring tools.
  2. Ease of maintenance. There are fewer maintenance headaches when a new version of RUP comes out, which is at least an annual occurrence. The RUP pages are just like externally developed source code; if you modify them, then you need to merge the changes from new releases of the source into your modifications.
  3. Wide scope. You can easily reference other process material, not just the RUP. This allows you to truly take advantage of all industry best practices, not just the ones included within the RUP.
  4. Ease of tailoring. Your can organization can quickly tailor your own process because you've kept it simple. Project teams can easily tailor their own version of the process, such as by building development cases and by reworking their own copies of these pages.
  5. Organization-level development cases. You can have several sets of process pages, perhaps one for each major type of project within your organization. For example, you could have a set of pages for new projects, a set for maintenance projects, a set for projects taking an agile approach, and a set for outsourcing efforts.
  6. Compatibility with plug-ins. You can still take advantage of plug-ins for Extreme Programming (XP), J2EE, Real Time, and others. IBM Rational maintains an exchange site for RUP plug-ins on the IBM developerWorks site.

The main disadvantages are:

  1. Extensive knowledge is required. Someone needs to initially learn and understand the RUP so that he or she can develop the initial pages. This is also true of the RPW or EPF approaches.
  2. Contradictory advice. Your version may be in contradiction with the RUP, or other process materials, at certain points. Having the source material available "as is" may cause confusion unless people understand that you have overridden portions of it. An effective approach is to set a specific design scheme for your pages and then make sure that everyone is aware that your pages are official and that all other pages are simply reference. Your staff members are adults: they can follow this simple rule.
  3. Complexity. Providing a process where people must understand the base description and then understand the changes to it at another location may be confusing for some people.
  4. You still need to maintain the process. Your organization needs to maintain your specific process pages. When new process materials, such as a new version of the RUP, are released, you will want to evaluate the material and determine what changes (if any) should be made to your tailored pages. All you can hope to achieve is a significant reduction of the maintenance burden, not a complete removal of it.

3. IBM Rational Method Composer (RMC)

RMC enables the creation of RUP extensions using plug-in technology, amongst many other things that RMC does. A RUP plug-in is typically a fraction of a software development process describing a specific domain, technology, or platform. There are two types of plug-ins:

  1. Structural plug-ins. This is a portion of a process that extends the RUP by adding process elements, such as roles, activities, artifacts, and disciplines. You could have an Agile Modeling (AM) plug in which tailors the principles and practices of AM into the RUP, a Data Warehousing (DW) plug in would tailor the RUP for a DW project, or a Support plug in which adds a new discipline to the RUP to capture support processes. Structural plug-ins are typically created using the RUP Modeler, a component of RPW. Structural plug-ins can be expensive and time consuming to build, so you should only create one if you truly feel that many project teams will be able to reuse it.
  2. Thin plug-ins. This is a mechanism to package their organization-specific assets, such as templates, guidance, or examples. Thin plug-ins don't require any modeling and are much easier, and less expensive, to build as a result.

RMC is also process configuration tool which enables you to tailor a process by selecting and deselecting plug ins as appropriate.

4. The Eclipse Process Framework (EPF)

In October 2005 IBM Rational announced its intention to support the EPF, an Eclipse-based open source tool for developing, tailoring, and deploying process-related information. Many organizations around the world have adopted EPF since it was first released. I often recommend that organizations consider it, particularly those that are new to software process improvement (SPI).

5. Configuration Management (CM) Issues

Fundamentally your process materials are important assets which should be kept under CM control just as any other asset would be. Furthermore, in situations where you will be audited to determine whether or not you have a defined process and are actually following that process, you will need to also put your project-level development cases under CM control. For example, American pharmaceutical companies often have IT projects which need to conform to the Food and Drug Administration (FDA)'s compliance regulations, and one of the regulations state that you must be able to prove that you followed your defined process. The implication is that if you have tailored one of your organization-level development cases to meet the specific needs of a project team, then you must put that project-level development case under CM control in case you ever need to prove that the team followed that specific version of your software process.