Welcome!

SOA & WOA Authors: Jeremy Geelan, Kevin Jackson, Maureen O'Gara, John Savageau, Greg Ness

Related Topics: SOA & WOA

SOA & WOA: Article

The Change Management Balancing Act

The Change Management Balancing Act

Managing change in a software system is a lot like balancing your personal finances. With or without a resource allocation plan, the assets available and the demands placed on them change constantly. Whether it's your code or your checkbook, the result of mismanaging change over time is likely to be the same: disaster.

The complexity and volatility of today's business demands have rendered "traditional" (i.e., ad hoc) methods for software change management obsolete. Distributed teams, multiple platforms, strict cost accountability, compressed release cycles: these mounting pressures dramatically escalate the risks of deploying new applications and integrating existing ones. With technology now serving as the primary interface to customers and partners, an organization may literally "bet the business" on the outcome of a software development effort. Now more than ever, the need to effectively control the impact of change is among the most critical aspects of software project management.

Done right, change management reduces complexity and maximizes efficiency. Done wrong, change mismanagement can bust budgets, trash schedules, and undermine team efforts. The question is not whether to manage change, but how to do it in a way that facilitates rapid response while providing adequate control.

Change Management 101
The ultimate goal of change management tools and processes is to mitigate risk. The underlying key to risk reduction is the ability to make informed decisions about what changes are most critical, in line with the organization's resources and revenue goals. The laws of physics notwithstanding, finite resources equate to a finite potential for change per unit of time. Balancing that equation to maximize the return on investment is the essence of successful change management.

Managing change entails more than just tools and training - it also requires a commitment to process. Vastly outweighing these investments are bottom-line benefits like:

  • Protection of code investments
  • Improved system quality
  • Faster time-to-market via parallel development
  • Support for cross-functional collaboration and distributed development
  • Reproducibility of deliverables
  • Greater development scalability

    Each organization must apply best practices in line with existing business and development processes. There is, however, a short list of factors that are common to nearly all successful change management solutions.

    Success Factors
    When faced with a complex challenge like managing software change, it's human nature to look for a silver bullet. A common mistake is to roll out a software configuration management (SCM) or defect tracking product, and call it a day. But even the best tools are only as good as the process behind them. Just installing Quicken, for instance, does not mean you have a sound financial plan. Each business should first examine how change takes place in its unique environment, and then apply the tools that best augment that process.

    Take, for example, the management of software configurations. Here you must be concerned not only with storing files, but also with your overall integration strategy. If you place all your project code under version control, and 10 developers are making changes to that code base, how do you intend to build the next release of your product from the pool of versions that are being created? Control over checking files in and out is essential; but, in itself, that's not change management. You also need to implement an integration/build strategy. This could be as simple as building the latest code that has been checked in every Friday night, or organizing a multitier promotion model.

    However your change management approach ultimately works, it must be flexible enough to strike an appropriate balance between efficient control and over-control. Many organizations attempt to address the problem of change by, in effect, resisting it with rigid controls. This usually hinders the individual's ability to efficiently make changes.

    Change management tools and processes ought to be carefully tailored to the task at hand. If you've got three developers working on a prototype that's scheduled for delivery in six months, and they all sit next to one another, a fairly relaxed process is adequate. If you're an IT organization building a mission-critical application using distributed internal and outsourced development resources, you need to control change much more tightly.

    These considerations lay the groundwork for the successful implementation of change management tools and processes. Some proven and practical ways to put change management into action include:

  • Storing important project artifacts in a central repository, and controlling access to them via a straightforward and reliable process
  • Implementing some form of version control to enable parallel development
  • Grouping related files logically, such as by component, and managing those files together
  • Tracking system requirements, defects, and requests for enhancement end-to-end to ensure traceability

    Let's look at each of these in more detail.

    Store Artifacts in a Central Repository
    The most fundamental element in any change-management strategy is basic file management. You need to store software and related project artifacts in a central repository, such as a version control or SCM system. To ensure that valuable work is protected from loss or corruption, you also need to control access to the repository via a simple and reliable check-in/checkout process.

    Think about what happens when teams don't have this basic level of file management in place. Critical project code and documents reside on various servers and on individuals' laptops. Even with centralized file storage, developers can accidentally copy over each other's changes, wasting time, reintroducing bugs, and causing testing nightmares. Versions needed later, such as to rebuild a previous release, may be unrecoverable.

    Beyond basic version control, two additional SCM capabilities are extremely useful. The first is workspaces, which greatly simplify keeping even the smallest development teams in sync. A workspace is basically either a copy or (preferably) a "virtual view" of some part of the central code repository, stored on individual developers' desktop systems. Periodically, the version control system can automatically update each workspace with the latest versions of everyone's files. This saves developers time by providing the most up-to-date versions.

    In addition to workspaces, the availability of an audit history is also important. Most SCM tools provide some level of auditing. Audit histories let team members quickly see who made what change to what artifact, and when they made it. This simplifies both traceability and reproducibility.

    Implement Version Control
    In line with managing a central repository, a related necessity is some form of version control. This ability to manage concurrent changes to files is the foundation for parallel development, as well as baseline management. Without it, technical managers cannot shorten the "critical path" by breaking the serial task of developing complex software into multiple, parallel tasks.

    Version control must be addressed on two levels:

  • First, you need to control the process whereby two or more developers make changes to the same file at the same time. This requires a check-in/out mechanism, as well as automated support to resolve and merge multiple sets of changes.
  • Second, once you've moved beyond the initial release, you'll most likely need procedures that enable two teams of people to work in parallel on two different releases of the system, using the same code base.

    Figure 1 illustrates a common example of the cost and risk associated with a lack of adequate version control. Two teams are working in parallel: one on Release 2.0, the other on bug fixes to Release 1.0. Unfortunately, some of the defects fixed in Release 1.0 were not properly merged into Release 2.0. As a result, customers uncover problems in Release 2.0 that they reported and found to be fixed in point Release 1.1.

     

    To develop code in parallel, version control tools must be flexible enough to allow fine-tuning of those policies that balance individual isolation against the pace of integration. If each engineer saw every change that someone else made when they clicked "Save," the changes would pile up so quickly that a stable release could never be built. Likewise, working in isolation for long periods can make integration unacceptably difficult: issues like misunderstandings about interface design need to be rectified early and often. The deeper you get into the development life cycle, the more important it is to integrate changes frequently. When everyone is working on skeleton code, the ability to view or work with others' changes is less important than when you are fixing a defect two days before "code freeze."

    Group Files Logically
    Another factor in effective SCM is the logical grouping of files in support of component-based development, software reuse, and baseline control. A logical file organization simplifies the process of integrating a complete change "activity," as opposed to working with random versions of individual files. The organization of artifacts around versioned components also enables a team to manage its code baseline relatively naturally after each testing/integration step, provided sufficient energy is devoted up-front to aligning the file organization with the system architecture.

    In general, the more intuitively a code base is organized, the less process that is needed to ensure that whatever code changes comprise a fix or enhancement, they are baselined together and included (or not) in a build together. Good file organization also simplifies the tracking of defects and enhancements by making it much easier to tie the delivery of new functionality to changes in the code base. I once worked with a customer who had organized their code base alphabetically, by file name. You can imagine the uselessness of statements like, "We're going to baseline files F through H on Friday."

    Track Defects and Enhancements
    Most development organizations realize that defects and enhancements "should" be tracked. For some, it suffices to do this somewhat informally, such as through spreadsheets. But whatever it takes to do it - do it.

    Note that the process implemented to track defects is likely to differ from the process for tracking enhancements. Enhancements often involve more up-front evaluation because of the amount of work they can require. Bug fixes become increasingly important in the end game. But in either case, the decision-making process is at least as important as the tools involved. What is critical to the customer? What is possible in the time allotted? What must the next release look like relative to the competition?

    The relationship between traceability and product planning also revolves around change management information. What data do you need to determine when a product is ready to ship? What do you need to know to assess risk? Is a defect related to complex, breakable code; or to a more robust or isolated component?

    What is the acceptable quality level you're striving for? This is where defect and enhancement tracking meets requirements management, because quality is ultimately measured by the relationship between the system's functionality and what the customer wanted in the first place.

    The Balance Point
    Software systems only grow in complexity. A successful change management solution helps deal with that complexity, while mitigating project risk. Remember: the question is not whether to manage change, but how to do it in a way that balances rapid response with adequate control. The challenge is to maintain that balance across systems both simple and complex, and across the entire development life cycle.

  • More Stories By Brian White

    Brian A. White has a decade of hands-on experience with software configuration management tools and methods. During his career, he has deployed SCM solutions in the industrial controls and telecommunications industries, many of them to meet ISO 9000 and SEI CMM objectives. He is currently director of enterprise change management product strategy for IBM software group.


    Publications Book Published:
    Software Configuration Management Strategies and Rational ClearCase: A Practical Introduction (TheADDP9 Object Technology Series)

    Comments (0)

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.