This is the first in a series of blog posts exploring characteristics of development projects to consider when choosing a Software Configuration Management system.

A Software Configuration Management (SCM) system is an essential part of almost any effective software development project. It can provide solutions to different challenges faced by the many roles in a development team. These roles include software engineers/developers, project leaders, release engineers, process engineers, engineering managers, and even engineering executives.   

Although all software development projects share many common characteristics, the differences between the projects often dictate the degree of sophistication needed in the underlying development tools. Characteristics that drive the need for a highly sophisticated SCM system can include projects with numerous developers, project teams spread across many different physical locations, projects dealing with a huge software system, projects needing tightly controlled security, projects with complex process automation and enforcement requirements, and projects subject to critical regulatory requirements. If you think of increasing sophistication represented by a series of layers, or strata, each of the aforementioned characteristics can push a project into higher strata. Many SCM systems can satisfy the needs in the lower strata.  Few are powerful enough and flexible enough to handle the higher strata.

HCL VersionVault is without doubt, the most flexible SCM system in the world. It supports a wide variety of deployment models for local or globally distributed teams; provides a simple process model as well a highly customizable option; includes a wide variety of powerful graphical user interfaces (GUIs) in addition to a comprehensive command line interface (CLI); provides unique build tools that generate a detailed audit trail and enable high-speed parallel builds; and integrates with a wide variety of other tools including Eclipse, Microsoft Visual Studio, Cadence Virtuoso, workflow and lifecycle management/engineering tools, etc.

POSSIBLE PROJECT NEEDS TO CONSIDER
An SCM system provides significant benefits to numerous roles in a software development project. The value of an SCM system to an individual usually grows with experience. For instance, a software developer might initially only value an SCM system for its ability to help recover from introducing a regression in previously functioning code. Over time, however, as they experience first-hand the realities of complex software development, they may start to value the support for parallel development and detailed traceability.  Not every project requires all the capabilities of an SCM system but all projects benefit from at least some.

TIME MACHINE 
When properly used, an SCM system will capture every key change in the evolution of a software system. “Proper use” involves not only checking in (committing) new versions of artifacts when a task is complete but also checking in intermediate states that capture notable progress. An effective SCM system will make it easy to reconstruct the software system at any point in the past.  In that sense, an SCM system functions as a time machine.

A developer may begin their day intent on enhancing a feature that already works only to discover later in the day that their “enhancement” did more harm than good. A Web site development team may have unwittingly deployed a security vulnerability and quickly needs to build and redeploy last month’s release. An automobile accident analysis reveals a defect in the control software of a 5-year old antilock braking system requiring the manufacturer to fix the bug in the 5-year old code and distribute the software to automobile service centers. All three situations benefit greatly from having a time machine that can correctly reconstruct the exact state of the system at some point in the past, whether it’s earlier in the day, a month ago, or a half decade ago.

PARALLEL DEVELOPMENT 
Almost all but the smallest of development projects need a way to progress on one set of tasks in isolation from progress on other tasks. One part of a team might have to implement a feature that will take a week to complete and introduces numerous incompatible changes. Being able to implement the feature in isolation from the rest of the project and then deliver the completed change all at once can save the rest of the team from constantly adapting to incremental changes or worse, being unable to make progress on their tasks until the project stabilizes again.

Many software systems have multiple versions used by their customer base simultaneously. If a defect is discovered in a released version, the team must be able to reconstruct the software system as it was when that version was released, fix the defect, and then release an update to the customers. They must be able to do this in a way that does not pick up features that were implemented in later releases.

SCM Systems typically support parallel development through the use of branches or streams. They require a starting point (often referred to as a foundation which is usually a baseline or equivalent, a set of versions of files that compose a consistent and compatible set) and create a branch for a given file if and when a change is needed to that file. A branching mechanism is relatively easy to implement. 

An example of parallel development. 

In most circumstances, changes made on one branch are later needed on one or more other branches. For example, a defect fix to an early release of a software system is usually also needed in the later releases. SCM systems often provide a mechanism to merge changes from one branch to another. The more powerful this mechanism is (including three-way merge support, effective common ancestor computation, powerful compare/merge GUIs and command line support), the lower the burden on the person performing the merge operation and the more effective the system will be handling large software systems with a huge number of files that may require merging. 

An example of a three-way merge. 

 

Comment wrap
Further Reading
article-img
Secure DevOps | April 13, 2021
Choosing a Software Configuration Management System Part 2
This is the second in a series of blog posts exploring characteristics of development projects to consider when choosing a Software Configuration Management system. Including Build and Release Traceability, Change Traceability, Project Lifecycle Traceability and Distributed Teams.
article-img
Secure DevOps | December 7, 2020
VersionVault brings SCM/DM capabilities to EDA World – with Cadence Virtuoso Integration
HCL VersionVault is a secure enterprise solution for version control and configuration management. With HCL VersionVault  - Cadence Virtuoso Integration, VersionVault  brings its enterprise configuration management capabilities to analog and mixed signal designers. This integration enables designers to take advantage of core capabilities of VersionVault, without leaving their familiar design environment. This integration allows custom chip designers to complete VersionVault actions from within Cadence Virtuoso.  Salient Features: VersionVault Cadence integration offers advanced sets of capabilities which makes it a right fit for IC designers. Figure 1: Integration Capabilities  Instant Workspace Creation With Dynamic views, irrespective of size of design libraries (running into GBs), designers can create their workspaces based on a desired configuration instantaneously. No client side downloading of content is needed.  Rich Graphical & Command-line support Integration supports all prominent design management use cases from Cadence Virtuoso's graphical interfaces i.e. Library Manager, Cell View Editors. Integration does provide a dedicated command-line interface as well for all major design management operations.  Library Manager: Figure 2: DM Operations via Context Menu's in LM Cell View Editors: Figure 3: DM Operations via CVE Command Line Figure 4: Command Line Interface Interactive Graphical Schematic Diff Schematic diff tool enables designers to graphically browse-through and review changes made across versions of the same schematic design. This tool will provide means to the designers to navigate through any addition, deletion or modification which may have taken place between the schematic versions being compared. During the navigation, the tool will also highlight the deltas on the schematic editor in case they happen to be part of any visible design component.  Figure 5: Graphical Schematic Diff Hierarchical Design Management The Hierarchy Manager GUI provides a powerful mechanism for examining and traversing a design hierarchy. On the specification tab, designer can specify various descent controls supported with advanced...
article-img
Secure DevOps | October 19, 2020
Stepping up the productivity ladder with HCL VersionVault
This blog talks about HCL VersionVault helps the organization to step up the productivity ladder, leading to a better customer experience.
Close