ALM with UCM

The ALMActivity record includes a Unified Change Management tab. This is an optional setting for teams that are using UCM.

Unified Change Management (UCM) is a feature of HCL VersionVault that:
  • Provides a flexible, out-of-the-box source code management (SCM) model for managing change across activities and associated assets
  • Provides a level of abstraction that helps with code assets
  • Eliminates the need to develop and maintain scripts in a HCL VersionVault environment
  • Automates project and developer workspace setup.
  • Integrates with other Rational® tools providing a suite of development tools to enhance the development process

When the ClearCase/ClearQuest UCM integration is used with HCL VersionVault ALM, as developers check out and check in files, the ALMActivity records track the work done. The ALMActivity record is related to an ALMTask that points to a particular ALMProject. The ALMActivity record is similar to the UCM activity and all activity types are UCM enabled.

An ALMActivity maps to a UCM activity, an ALMBaseline maps to a UCM baseline, and a BTBuild maps to an actual build. When activities are completed, you create a UCM baseline, and then create an ALMBaseline as needed. If you create a build using the latest ALMBaseline, you must create a corresponding BTBuild record. The BTBuild record contains a reference to the ALMBaseline from which the build was created.

For Projects using UCM Integration, set Project > UCMProject. When the UCM integration is turned on for a UCM project, all UCM activities are tracked by ALMActivity records. When a UCM activity is delivered to the UCM project integration stream, the corresponding ALMActivity is completed.

By using the ALMBaseline record type to map UCM baselines, when a baseline is created in UCM, you can find the new activities in the baseline. This list of UCM activities can be populated in the ALMBaseline record. If you are not using UCM, you can use queries to identify the list of activities, and then manually add the activities to the baseline record.

The ALMBaseline record lists the ALMActivities delivered to the integration stream since the last baseline was created. The release engineer then creates a build using the last baseline. A corresponding BTBuild record is also created. The BTBuild record lists the baseline used to create this build. The record also lists the ALMActivities included since the last build.
Note: In UCM a stream is similar to a branch in other asset or software configuration management systems. The baseline records are threaded on the stream for sequencing.
When delivering an activity to any stream with a project policy for transitioning to Complete after delivering, the activity is transitioned to the Complete state, even if a developer still needs to continue working on the activity. This state transition prevents additional checkouts. The developer can:
  • Do an alternate deliver to only share changes with another developer and to continue making changes using the same activity.
  • Deliver to a feature stream for sharing the changes with the team working on the same features.

HCL VersionVault provides support for parallel development and for multisite deployments. Parallel development is the ability for multiple developers to simultaneously modify copies of the same file. Merge tools are used later to resolve merge conflicts when multiple sets of changes to the same file need to be delivered to the source. This is a very different environment from purely sequential development, where only one developer can check out a given file from source control at a time. For example, for an organization of hundreds of developers working on a number of interdependent components, parallel development must be enabled; otherwise, overall productivity could suffer. Multi-siting refers to the placement of local replicas of the source code at each participating site to minimize the need for WAN communication by individual developers.

For example, a Developer using UCM logs in and finds UCM activities, specifies a default activity, or adds a file to a development stream and adds it to source control. The Developer can also view the activity in HCL Compass as an ALMActivity (with State = Activated).
  • The Developer can use a HCL VersionVault client to deliver changes and then complete the delivery. After the Activity is completed, the release engineer (or Builder) creates a baseline of the code.
  • The Builder, logs in to HCL VersionVault and creates a new ALMBaseline. The Builder specifies project VOB, Project, Release values, and Activity IDs for the new baseline.
  • Given a UCM baseline, one or more builds may be created from it. For each build, the Builder creates a BTBuild record.
  • The Tester completes Test type Activities. The Test Activity includes a reference to the BTBuild containing the Developer fix (if a build was created). The Tester installs the build, and completes the Test Activity.

Creating baselines and ALMBaseline records

For milestones or nightly builds you create a UCM baseline, and then create a new ALMBaseline record. The creation of the ALMBaseline record checks for the last baseline record created. If this is the second baseline on the given PVOB and stream, the first record would be the initial baseline. Given the current baseline, and the last baseline found, a HCL VersionVault UCM comparison (diffbl operation) is used to compare the two baselines. All ALMActivities delivered since the last baseline record are added to the new baseline record.

Given a UCM project, create an initial baseline, and then create an initial ALMBaseline record to anchor the UCM stream and PVOB to a series of ALMBaseline records.

Define a meaningful convention for naming baselines. You may want to include some or all of the following information in a baseline name:
  • Project name
  • Component name
  • Milestone or phase of development schedule
  • Date created

For more information about setting a baseline naming template, see http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/com.ibm.rational.clearcase.cc_proj.doc/c_u_pln_bl_nm_cnvntn.htm.

Existing UCM projects

Older projects that were not created as ALM projects may have many existing activities and baselines. You may want to import some or all of these. Of the baselines you import you must import them in order from their stream. Not every baseline needs to be imported, but they do need to be imported in the order they were created. The create_baseline_record.pl script when given a baseline finds the new activities in the baseline, by comparing the baseline with the previous baseline record in ALM on the same stream.

If you want only new activities tracked, you can create a new ALMBaseline record on the same stream and this new baseline, rather than the original baseline from the older project will be the previous baseline for a new comparison. Only activities created since this new initial baseline will show on the new passed in baseline record. You can create this initial baseline record in either of these ways:
  • Manually create it in ALM, by filling out the PVOB or Location and Stream fields so the create_baseline_record.pl script can find it.
  • Use create_baseline_record.pl to create the initial baseline. The create_baseline_record.pl can create an initial seed baseline record by passing in the appropriate options. The -nodiffbl option specifies to create the passed in baseline and not try to find and run a comparison with a previous baseline. Because this option does not examine the baseline, you must also include information for the -ucmstream stream_name argument. For example:
    ratlperl create_baseline_record.pl -user RE -pw secret -dbname ALM -dbset CQ.ALM.HOST -projectid ALM00000123 -nodiffbl -pvob "\pvob01" -ucmstream "proj_01_int" -baseline "proj_01_02_24_2008"
    This command creates an ALMBaseline record with the following values:
    Project id: ALM00000123 
    Name: proj_01_02_24_2008 
    ucm_stream: proj_01_int 
    PVOB or Loc:\pvob01

After you create an initial ALMBaseline record, newer baselines records can be created in their order of creation on the stream by calling create_baseline_record.pl with the required options and the new baseline name. A baseline is compared with the previous baseline record found, and the new activities are added to the new baseline record.