Skip to main content Skip to Footer

BLOG


Reshma Shinde
Reshma Shinde
December 06, 2017

Manage change with software configuration management

Source control has been a popular conversation topic lately in my crowd. I’ve fielded several questions, including:

  • How do we use source control?

  • What is the best branching strategy recommended under DevOps principles?

  • How can we gain change agility without tedious merge and approval processes?

  • What needs to be changed on the software configuration management (SCM) side to transform from Waterfall to Agile?

  • What steps can we take to facilitate the following the proper review?

#Software configuration mgmt. at its core is about managing change. Reshma Shinde explains on our #DevOps blog:

 
 

Source control

All good questions.

SCM at its core is about managing change. This involves identifying and reporting change, controlling and implementing change properly and more.

While there is no single common approach, some proven practices have grown in recent years. Let’s explore a few key aspects.

What is SCM?
SCM is a version control discipline consisting of standard processes and techniques to manage changes to software products. It includes administering source code, producing software development builds, controlling change and managing software configurations.

The SCM system controls basic components, such as software objects, program code, test data, test output, design documents, deployment scripts, configuration items and user manuals.

Why source control?
As a release manager, you collaborate with multiple developers and testers across teams and projects. Therefore, you probably know the stress of follow-up, constantly transferring files and version-controlling the changes. Version control tools are a great way to enable collaboration, maintain versions and track changes across the team.

Perhaps the greatest benefit of using version control tools is you have the capacity to deal with an unlimited number of people, working on the same code base, without having to make sure that files are delivered back and forth.

Benefits of SCM
A successful SCM effort enables safety, stability, control, traceability and reproducibility in a number of ways, including:

  • Workspace management, for enabling parallel development and effective management of simultaneous updates.

  • Change authorization, to establish a workflow for review, approval and incorporation of changes.

  • Change control, for limiting who has access to the code, level of access for different branches and prevents unauthorized changes from being made.

  • Baselining, to trace all changes to your baseline system.

  • Audit and review, for examining your software repositories for several measures and creates a report of the findings.

SCM Roles & Responsibilities

SCM roles & responsibilities

Let’s see how this model works:

  • The main branch is the production branch, as it contains production code.

  • A release branch is originated from the main branch and will have code dedicated to respective release. You can have multiple release branches enabling parallel development.

  • Feature branches are originated from the release branch. Updates will be fetched on a regular basis from release to feature branches to enable that latest production updates are in sync with ongoing development in feature branches.

  • Developers will be connecting to feature branches, work on code, unit test itand perform code quality activities in their integrated development environment (IDE). With this code complexity and coding standard violations, key defects are identified during early phases of development. Unit test coverage and defect leakage analysis will drive continuous improvements. On completion of feature development, changes from feature branches are merged with release branch.

  • On release branches, use tagging to avoid mixing of code changes from different feature branches. A package is generated from release branches and deployed to all environments to initiate several testing phases. This way, you’re able to identify the impact of change immediately. Feature toggling is possible with release branches to control only approved changes being moved further in the lifecycle.

  • If any defect is found, the developer will fix the code in feature branches and again merge it with release branches. This enables you to identify defect density, defect reintroduction rate and the defect resolution time.

  • After delivery of release package to production, release branches will be merged into the main branch. Tagging is applied. This way the fully tested package is only deployed to production.

  • A hot fix branch is originated from the main branch to put in immediate fixes if required. Hot fix changes will be tested with pre-production first and then merged into the main branch for production deployment. A dedicated hot fix branch enables us to measure production quality using incidents per deployment, mean time to recover (MTTR) etc.

  • Finally, main branch changes will be cascaded to different release branches and thus ongoing development in feature branches.

  • Now, in this model, main and hot fix branches are permanent branches. Release and features branches can be deactivated or deleted after period of time based on archival policy.

Now, we have strong source control with a well-defined branching model. Still, most teams find it difficult to tie all CI/CD pieces together with viz. code push, code quality, build, deploy, test, etc. It’s crucial to identify pattern and design of your continuous integration orchestration pipelines accordingly.

Continuous Integration and Continuous Delivery

Below is an example of Jenkins pipelines which will accommodate above branching model. These pipelines are designed to be repeatable and reusable for every release. Below set of pipelines can be executed multiple times based on parameterized inputs.

Jenkins pipelines

Take my word: Once you use a version control system, you will never look back. While implementing version control, a good rule is to start on a small scale, produce results you can show to all teams and then scale up.

Get the biggest stories of the week, delivered to your inbox.

Archive



COMMENTS (0)

SIGN IN WITH SOCIAL

COMMENT WITH SOCIAL

OR COMMENT WITH EMAIL

Your Data Privacy

By providing your e-mail address, you agree to the terms
outlined in our privacy statement associated with
commenting on the site. Your e-mail address will not be
used for promotional marketing purposes.

CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code