Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Software Change Management


July 1999: Project Management :Software Change Management

Change is inevitable in all stages of a software project. Change management will help you direct and coordinate those changes so they can enhance—not hinder—your software.

The only constant in software development is change. From the original concept through phases of completion to maintenance updates, a software product is constantly changing. These changes determine whether the software meets its requirements and the project completes on time and within budget. One of your main goals as project manager is to manage software change.

Change Management and Configuration Management

Your project probably has software configuration management (SCM) in place. If designed well, SCM is a major component of software change management. All too often, however, SCM is an add-on process, focused primarily on capturing the software’s significant versions for future reference. In the worst cases, SCM functions as a specialized backup procedure. If SCM is left at this low level, the unfortunate project manager can only watch the changes as they happen, preach against making bad changes, and hope the software evolves into what it should be. Of course, evolution is difficult to predict and schedule.

Software change management is the process of selecting which changes to encourage, which to allow, and which to prevent, according to project criteria such as schedule and cost. The process identifies the changes’ origin, defines critical project decision points, and establishes project roles and responsibilities. The necessary process components and their relationships are shown in Figure 1. You need to define a change management process and policy within your company’s business structure and your team’s development process. Change management is not an isolated process. The project team must be clear on what, when, how, and why to carry it out.

Figure 1: Software Change Management

The relationship between change tracking and SCM is at the heart of change management. SCM standards commonly define change control as a subordinated task after configuration identification. This has led some developers to see SCM as a way to prevent changes rather than facilitate them. By emphasizing the change tracking and SCM relationship, change management focuses on selecting and making the correct changes as efficiently as possible. In this context, SCM addresses versions, workspaces, builds, and releases.

A change data repository supports any change management process. When tracking changes, developers, testers, and possibly users enter data on new change items and maintain their status. SCM draws on the change data to document the versions and releases, also stored in a repository, and updates the data store to link changes to their implementation.

Software change management is an integral part of project management. The only way for developers to accomplish their project goals is to change their software. Change management directs and coordinates these changes.

Where Changes Originate

A variety of issues drive software changes. Understanding the origins of prospective changes is the first step in prioritizing them. The sources of change can be classified as planned development, unexpected problems, or enhancements.

Planned Software Development. Ideally, all software change would result from your required and planned development effort, driven by requirements and specifications, and documented in your design. However, adding new code is a change you must manage. Adding functions that were not requested (no matter how useful and clever) consumes project resources and increases the risk of errors downstream. Even requested features may range in priority from “mandatory” to “nice to have.” Monitoring the cost to implement each request identifies features that adversely affect the project’s cost-to-benefit ratio.

Unexpected Problems. You will undoubtedly discover problems during any development effort and spend resources to resolve them. The effort expended and the effort’s timing need to be proportional to the problem—small bugs should not consume your project budget.

The team must determine whether the code fails to implement the design properly or whether the design or requirements are flawed. In the latter case, you should be sure to correct design or requirements errors. Integrated change management toolsets, which I’ll discuss later in the article, can make the process seamless: change to a code file can prompt the developer to update the corresponding documentation files. The investment in documentation updates will be recovered many times over when the software is maintained later.

Enhancements. All software projects are a research and development effort to some extent, so you will receive enhancement ideas. Here is where project management is most significant: the idea could be a brilliant shortcut to the project goal, or a wrong turn that threatens project success. As with requirements or design errors, you need to document these types of changes. Adhere to your development standards when implementing an enhancement to assure future maintainability.

Critical Decision Points in Change Progress

You should address changes when they are only potential changes, before they’ve consumed project resources. Like any project task, changes follow a life cycle, or change process, that you must track. In fact, three critical decision points, as shown in Figure 2, drive any change process. These decision points form the framework of change management.

Figure 2: Change Decision Points

Approve the Concept. Change requests come from testers or users identifying problems, and from customers adding or changing requirements. You want to approve all changes before investing significant resources. This is the first key decision point in any change management process. If you accept an idea, assign a priority to ensure appropriate resources and urgency are applied.

Approve to Proceed. Once you’ve accepted a change request, evaluate it against your project’s current requirements, specifications, and designs, as well as how it will affect the project’s schedule and budget. This analysis may convince you to revise your priorities. Sometimes, the team will discover that a complex problem has an elegant solution or that several bugs have a common resolution. The analysis will also clarify the cost-to-benefit ratio, making the idea more or less desirable. Once you clarify the facts, make sure the change is properly managed with a second formal review.

Approve the Resolution. A change request is completed when the change is folded into the planned development effort. During requirements analysis and design phases, this may occur immediately after you approve the request. During coding, however, you often must conduct separate implementation and testing to verify the resolution for any unplanned changes, including both testing of the original issue and a logically planned regression test to determine if the change created new problems.

After testing, you must still review the change to ensure it won’t negatively affect other parts of the application. For example, the developer may have changed a correct user prompt to match the incorrect software logic. If the testing indicates a risk of further problems, you might want to reject the change request even at this point.

Rejected or Postponed Requests. At any of the decision points, you can decide whether to reject or postpone the change request. In this case, retain the change request and all associated documentation. This is important because if the idea comes up again, you need to know why you decided against it before. And, if circumstances change, you may want to move ahead with the change with as little rework as possible.

Emergency Processing. If a problem has shut down testing—or worse, a production system—you may not have time for a full analysis and formal decision. The change management process should include an emergency path distinct from the flow shown in Figure 2, with shortened analysis and streamlined approval. Focus this process on an immediate resolution, whether a code “hack” or a work-around, that eliminates the shutdown. You can update the change request to document the quick fix and change it to a lower priority. By leaving the change request open, you won’t omit the full analysis and resolution, but you can properly schedule and manage these activities. Alternately, you can close the emergency change request when the fix is in place, and create a new change request to drive a complete resolution.

Roles and Responsibilities

The change management process requires several decision-makers at the various decision points. Your change management process should address the following questions:

• Who will make the decision? Ultimately, the project manager is responsible for these decisions, but you can delegate some of them to other project leaders.

• Who must give input for the decision? Who can give input?

• Who will perform the analysis, implementation, and testing? This can be specified generally, although each issue may require particular contributors.

• Who must be notified once the decision is made? When, how, and in how much detail will the notice be given?

• Who will administer and enforce the procedures? Often this becomes a task for SCM or the release manager, since it directly impacts their efforts.

You don’t need to handle all issues at all project stages the same way. Think of the project as consisting of concentric worlds starting with the development team, expanding to the test team, the quality team, and finally the customer or user. As your team makes requirements, design, and software available to wider circles, you need to include these circles in change decisions. For example, accepting a change to a code module will require retesting the module. You must notify the test team, who should at least have a say in the scheduling. The standard SCM baselines represent an agreement between the customer and the project team about the product: initially the requirements, then the design, and finally the product itself. The customer must approve any change to the agreed-upon items. The change management process helps you maintain good faith with the customer and good communication between project members.

Change Management Tools

Because of the volume of data involved, you often need tool support to manage software change. As with any type of tool, you should get the right tool for your job. Your process should drive the tool; don’t expect the tool to solve the problems alone. Unfortunately, you often don’t know what process you want until you’ve tried using the wrong tool. Keep in mind that if you’re producing software now, you have at least one process already at work. Identifying the best current process and the problems with it are the first steps to defining a better process.

A successful system coordinates people, process, and technology. Once you define the process and tools, ensure that your team is trained and motivated to use them. The best tool is worthless if it is not used properly, whether from lack of skill or resentment over being forced to use it. Process and tool training should make the tool’s benefits clear to your team.

Change management’s most important components are an SCM tool and a problem-report and change-request tracking tool. Increasingly, change management toolsets integrate with one another and with development tools such as requirements or test case tracing. For example, you can link a new version directly to the change request it implements and to tests completed against it.

At the simple and inexpensive end of the tool scale are SCCS (part of most UNIX systems) and RCS, which define the basics of version control. Various systems build on these, including CVS and Sun’s TeamWare, adding functions such as workspace management, graphical user interface, and (nearly) automatic merging. In the midrange are products such as Microsoft’s SourceSafe, Merant’s PVCS, MKS Source Integrity, and Continuus/CM, which generally provide features to organize artifacts into sets and projects. Complete SCM environments are represented by Platinum’s CCC/Harvest and Rational’s ClearCase, giving full triggering and integration capabilities.

SCM Tools

SCM tools range from simple version engines, like SCCS, to sophisticated environments, like Rational’s ClearCase, that provide for all SCM functions. Generally, the most significant selection factor is the complexity of your development plan: how much parallel work the tool must support and how many versions it must track. If your project involves changing the same code in two different ways simultaneously (for example, maintaining the production version while developing the next release), carefully review how the tool handles branches and merges. Most tools lock files while they are being updated; if simultaneous change is your norm, look for tools that provide either a change-and-merge or a change-set process model. Performance and scalability are also issues for large projects. The larger the number of files in your project, the more you need features like directory archival and logical links between artifacts. These links that let code updates prompt the developer to update documentation. With a large project team, you need triggers to automate notification and other coordinated actions.

You should go into demos with a sketch of how your development process works, especially if you’re considering a significant tool expenditure. This lets you ask specifically how the tool could handle your needs. The tool budget will need to include the effort to define and document procedures, write scripts and integration artifacts, and train the team. If the tool is new to your organization, verify that the vendor can support your implementation or recommend a consultant who can.

Problem-Report and Change-Request Tracking

The key to a good issue tracking system is the ability to tailor it to your process and standards. Every project tends to want different report fields, called by different names, taking different values. Too much variation from these expectations cause even a good tracking tool to seem counterintuitive and frustrating. If your team doesn’t like to use the tool, you won’t get the complete tracking that you need. If you currently have a tracking system (even paper-based), use it as a pattern for what you want. If you’re starting from scratch, think through the change process and ask what information the participants need.

As with other tools, estimate the volume of data the tool needs to handle and verify that it will perform at that level. Consider how many individuals need to use the tool at one time and whether you need strict controls over who can change various parts of the data. If you conduct your reviews in meetings, report generation will be a significant part of tool use. For an electronic approval cycle, the e-mail interface is vital. Increasingly, tools are providing a web interface to simplify distributed use.

Key to Change Management

Change management lets you control software evolution and provides the basis for metrics and process improvement. Data collected under a consistent process supports estimating and planning, reducing risk, and making development more predicable. In the long run, managed change reduces the time to market, improves quality, and increases customer satisfaction. By understanding the origins of change, the critical decision points, and the roles in the decision process, you will gain enough control to manage, rather than just watch, software change.

CHANGE TRACKING TOOLS AND SCM TOOLS

Continuus/CM (SCM)
Continuus/PT
(Change Tracking)
Continuus Software
Irvine, Calif.
Tel: (949) 453-2200
www.continuus.com
SourceSafe (SCM)
Microsoft Corp.
Redmond, Wash.
Tel: (800) 426-9400
msdn.microsoft.com/ssafe
Source Integrity Professional (SCM and Change Tracking)
MKS Inc.
W. Waterloo, Ont. Canada
Tel: (800) 265-2797
[email protected]
PVCS (SCM and Change Tracking)
Merant (Intersolv/Micro Focus)
Beaverton, Ore.
Tel: (503) 645-1150
[email protected]
RCS (SCM)
Free Software Foundation
Boston, Mass.
[email protected]
ClearCase (SCM)
ClearDDTS (Change Tracking)
Rational Software Corp.
Lexington, Mass.
Tel: (617) 676-2400
[email protected]
CCC/Harvest (SCM)
Apriori (Change Tracking)
Platinum Technologies
Oakbrook Terrace, Ill.
Tel: (800) 442-6861
www.platinum.com
 


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.