Tools that help developers to successfully deliver software

Software Configuration Management

Subscribe to Software Configuration Management: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Software Configuration Management: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

SCM Authors: Stackify Blog, Elizabeth White, Mike Raia, John Basso, Derek Weeks

Related Topics: Java Developer Magazine, Software Configuration Management

Java Developer : Article

AccuRev 4.0 Facilitates Effective Team Software Development

Isolating and versioning your code changes until you are ready to integrate them

Sharp tools make software development quicker and more productive. They automate manual tasks to speed development. They provide useful information intuitively to enhance productivity. Eclipse, the powerful and well-designed IDE, is such a tool. Few Java developers would want to return to a text editor, command-line compiler, and standalone debugger after experiencing the power of this integrated development environment. In the same way that an intuitive and elegant IDE aids modern software development, a cutting-edge yet robust software configuration management (SCM) tool enables successful team software development.

AccuRev 4.0 is the latest release of the innovative SCM tool that fosters effective team software development. AccuRev's strength lies in its straightforward client/server architecture, transaction-based and append-only data repository, and stream-based model for managing software configurations. Of these strengths, the powerful stream-based model is what distinguishes it from other SCM tools. It's also the feature that can have the greatest impact on developers and on the productivity of the development team.

Installing AccuRev 4.0
Installing AccuRev 4.0 is quick and simple. For this evaluation, I installed both the AccuRev 4.0.1 server and client on a 1.2GHz Wintel notebook running Windows XP Professional, Service Pack 2. Installing the server and client only took a few minutes. No separate or involved setup was needed for the AccuRev data repository that maintains the files under version control.

Preparing To Use AccuRev 4.0
After installing AccuRev 4.0, the first step in using the tool successfully is to read the documentation. Surprisingly, this is not painful. The Concepts Manual, the Day-to-Day Usage of AccuRev section in the User's Guide, and the Administrator's Guide contain the information essential to start using AccuRev.

The Concepts Manual describes the approach that AccuRev uses to support the effective version management of files in a team environment. The Day-to-Day Usage of AccuRev section in the User's Guide connects the theory in the Concepts Manual with the commands that make AccuRev work. The Administrator's Guide explains the steps that an administrator has to take to ensure the integrity of the data repository and the reliability of the AccuRev server.

What impressed me most about the documentation is the understanding it gave me about how and why AccuRev (the company) designed and developed AccuRev (the tool). While reading the documents, I felt like I was listening to a comprehensive technical overview by AccuRev's designers and developers.

Understanding AccuRev's Approach for Saving Changes and Releasing Changes
Team software development is characterized by several developers making frequent changes to source code files at the same time. Disciplined developers want to save their changes frequently to prevent the loss of their work and to support the roll back of any file to a known state. However, they don't always want to share their changes because the modified code may not be stable. This scenario can pose a problem for a configuration management tool. How do you let developers version files frequently without requiring them to make each version available to other developers?

Using rigid check-in policies with a traditional SCM tool can lead to infrequent versioning because developers delay each check-in until the changed files are stable enough to release to their colleagues. In contrast, following lax check-in policies with a traditional SCM tool can lead to the propagation of unstable code because each check-in may not be reliable enough to share with everybody. Ideally, developers should be able to save (i.e., to version) their changes as frequently as needed, but only release stable changes to other developers.

Java developers familiar with IBM's VisualAge for Java (VAJ), the precursor to its WebSphere Studio Application Developer (WSAD), may recall a built-in configuration management tool called ENVY. By separating the versioning mechanism from the release mechanism, ENVY let developers version frequently but only share the version that was stable enough to be used (and modified) by others.

Like ENVY, AccuRev has a simple yet elegant model that distinguishes saving changes from making these changes public. The model used by AccuRev is based on first-class objects called streams. AccuRev (the company) defines a stream as "a configuration of a collection of version-controlled files." This means a stream is like a list of the version numbers of the files that form a collection. The collection can be large enough to contain the version numbers of all the files in a software release or small enough to contain only the version numbers of the files modified by a developer to fix a bug.

Streams act as public data areas. Typically, they're organized into a hierarchy to mimic the way teams develop software. Streams at the top of the hierarchy contain the versions of files in a software release. Workspaces at the bottom of the hierarchy contain the versions of files changed in each developer's local development environment. Developers promote their changes up the stream hierarchy when they're ready to integrate them with others. Developers update their workspaces from changes that propagate down the stream hierarchy. Figure 1 shows a typical stream hierarchy in AccuRev's StreamBrowser.

Using AccuRev 4.0 To Manage Changes to Files
Developers use four AccuRev commands, Keep, Promote, Update, and Merge, to version file changes and integrate their file changes with changes made by other team members. For this evaluation, I executed these commands from the AccuRev GUI client. These commands are also available in the AccuRev command-line client.

Using an IDE or text editor, a developer modifies and saves one or more files while working on a development task. Since these files reside in a private workspace, the developer uses the Keep command to copy the modified files to an AccuRev data repository called a depot. The Keep command creates a new version of each modified file, but it doesn't release these versions to an integration environment used by other developers.

Eventually the changes made to files in the developer's workspace are stable enough to be shared with others. The developer then uses the Promote command to make the saved versions public. The Promote command makes the changes public by propagating them from the developer's workspace to the backing stream, the public data area connected to the developer's workspace.

The developer uses the Update command to stay current with the changes released by other developers. The Update command refreshes the developer's private workspace with changes from its backing stream.

There are times when the Promote and Update commands won't make changes because the file to promote or update was modified in the backing stream. When this happens, the developer uses the Merge command to combine the change in the developer's private workspace with the change in the backing stream. The Merge command opens a three-way merge tool (shown in Figure 2) that lets the developer combine the changes made to the two variants of the file. AccuRev automatically issues a Keep command when the developer exits from the merge tool.

Together, the Keep, Promote, Update, and Merge commands nicely implement the promotion model used by AccuRev. Alternatively, AccuRev supports file locking for serial development. However, using AccuRev for serial development circumvents the tool's conceptually clean and easy-to-use promotion model.

Using Streams to Support Concurrent and Parallel Software Development
Concurrent changes to the same files are likely when a team develops a software system. Concurrent changes are almost inevitable when one or more teams develop or maintain parallel releases of a software system.

I used branches, created from labeled configurations in a traditional SCM tool, to support concurrent and parallel development. Branching from a labeled configuration at the project-level is most meaningful because it lets changes be viewed from the perspective of the entire software system. Although many traditional SCM tools support project-oriented branching, it's still implemented using metadata at the file-level. Using file-level metadata makes branching resource intensive, particularly for branches that contain several thousand files. For this reason, adept development teams use branches sparingly.

Streams in AccuRev are conceptually equivalent to project-oriented branches. However AccuRev implements streams more efficiently than traditional SCM tools implement project-oriented branches. Traditional SCM tools store file version and branch information in the same data structure. In contrast AccuRev uses one data structure to model file versions and another data structure to model streams.

Streams in AccuRev can be nested in a hierarchy to model the promotion of code from developers' private workspaces to integration environments to test environments. The hierarchy can also be changed as needed. For example, an administrator can use the AccuRev GUI client to re-parent a developer's private workspace or an integration stream from one backing stream to another.

Using Issues to Support Task-Based Development
Modern software development entails more than following a code-compile-test-debug cycle. No matter what kind of software development methodology you use, from the rigid waterfall model to an adaptive, iterative model, you make code changes to satisfy a development task. The task is typically either a new enhancement or a bug fix.

A software configuration management tool supports your development approach by letting you identify development tasks and tie each new version of a file to a development task. Task-based development is the term used to describe developing a software system by completing a series of tasks.

AccuRev enables task-based development through change packages in its issue management facility, AccuWork. AccuRev users create issues to identify development tasks to be completed, such as new enhancements and bug fixes. As developers work, they associate file changes with an issue. The file versions are recorded in a change package that's displayed on the Changes tab of an issue record. Change packages are available only in the AccuRev Enterprise product. Figure 3 shows the change package for an issue.

AccuRev 4.0's main limitation is that it's not a standalone application lifecycle management (ALM) solution. Competing SCM tools integrate version control with sophisticated change management capabilities in a single product. For example, SCM tools marketed as an ALM solution use process items to automate software development (or business process) workflow. While AccuRev lacks a built-in workflow modeling tool it does provide an API called AccuBridge that integrates with other issue tracking and workflow automation products, including Serena TeamTrack, MKS Integrity Manager, Rational ClearQuest Atlassian JIRA, and Bugzilla. AccuRev (the company) is also a member of the Eclipse Application Lifecycle Framework (ALF) project, which is working on developing an interoperability framework that supports the logical exchange of information between development tools.

AccuRev is a powerful software configuration management tool that employs an elegant model to support team software development, particularly team development that is highly parallel and geographically distributed. AccuRev's conceptual model is extremely well suited for facilitating team development because it lets developers save changes as needed, but only release changes when they're ready. Its stream hierarchy supports the efficient integration of changes across a development team.

JDJ Product Snapshot

Target Audience: All members of the software development team including developers, build and release engineers, and project managers.

Level: All levels from beginner to expert.


  • AccuRev's elegant yet straightforward stream-based model is ideally suited for team software development, especially development that's highly parallel.
  • AccuRev is well designed. Its software architecture is clean and modern.
  • AccuRev is easy to use and easy to administer. A team of highly specialized tool administrators isn't needed to keep the tool running.
  • Since AccuRev follows a best-of-breed strategy,the product isn't a standalone application lifecycle management (ALM) solution. However, AccuRev provides an ALM solution when it's linked to third-party products using the AccuBridge SDK.
Platforms: Intel and AMD x86-based systems:
  • Windows XP, 2003, 2000, NT 4.0
  • Windows 98/ME (client-only)
  • Linux (kernel versions 2.4.9+, Red Hat AS/ES 2.1+)
  • FreeBSD (version 3.3+)
  • Sun Solaris and Solaris x86 (version 2.5.1+, including Solaris 10)
  • Apple OS/X+ (client-only)
  • HP-UX (version 11.0 +)
  • IBM AIX (RS/6000) (version 4.3.2+)
  • SGI Irix (version 6.2+)
  • Alpha Compaq Tru64 Unix (version 4.0+)
  • AccuRev Enterprise - $1,495 per seat
  • AccuRev Professional - $795 per seat

More Stories By Michael Sayko

Michael Sayko is a software configuration management consultant based in Austin, Texas. He is experienced with the practice of software configuration management from having served as a configuration manager on large, fast-paced software projects. Michael helps software development organizations practice software configuration management by applying SCM patterns to solve real world problems.

Comments (1)

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.