|
SYS-CON.TV Webcasts
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
Top Links You Must Click On
Product Reviews AccuRev 4.0 Facilitates Effective Team Software Development
Isolating and versioning your code changes until you are ready to integrate them
By: Michael Sayko
Jun. 27, 2006 03:00 PM
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.
Installing AccuRev 4.0
Preparing To Use AccuRev 4.0 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 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 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 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 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.
Limitations
Conclusion 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. Pros:
Reader Feedback: Page 1 of 1
Your Feedback
Enterprise Open Source Magazine Latest Stories . . .
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||