Software Configuration Management [SCM] – All You Need To Know

scmQuest - Your Guide to Software Configuration Management

In today’s world where we are becoming more and more digital and everything depends upon software, software management is a real challenge.  All the software projects are getting more complex and complicated in terms of logic, size, difficulty and technologies used for them.

In every organisation, daily a new fix/enhancement is added to the project that makes the software management even more complex and the response time to get it done is very less.

All software’s are subject to constant changes during each phase of software life cycle, such as planning, design, development and even after development.

Here, Software Configuration Management (SCM) comes into picture.

The need for software configuration management is no more unknown to anyone in this digital world and it’s well pronounced than ever.

Software configuration management is a method of bringing control to the software development and software management process. It enhances productivity and boosts application quality.

SCM is a process used for more efficiently developing and maintaining software, which is accomplished by improving accountability, audit-ability, reproducibility, traceability and coordination.

scm life cycle

Importance and Need of SCM:

Let’s assume an example of the organization where they didn’t opt SCM process and started working on the project. They gathered the requirements from the client but neither they identified any control change nor accounted it .The team started developing the code in ordinary system and built software out of it. They then deployed it manually without using any tool and showed it to the client.  Client was happy with the front look.

After some days someone found a bug in login functionality and developers started working on it.

Only one user was working on the affected module while others were just waiting for him to finish his work.

Few days later other users also modified their code and they decided to deploy it.

This time they took a backup (a full backup which consumed a lot disk space) of their code before deploying it.

But later one of the team member changed something by mistake and he didn’t informed anybody, at the same time other team member found out that a text box and the graphics are not looking good. He modified the code slightly without taking a backup because the disk was almost full and showed it to the client. Client asked them to put the same page which was shown to him first time.

Now here the trouble started: –
Team didn’t document the configuration items and changes, they modified the code without any backup and they were not able to recognize who has changed the logic.

They had to rework for the same piece of work which they did before.

If they would have chosen a SCM process and implemented any version control system then they just have to take out the old version of code from repository and were able to work in parallel when they found a bug.

They would have easily identified who had changed the code and moreover the user himself would have been able to revert it without any trouble.

They would have also used one of the SCM build & deployment tool to save the exhausting manual work of building and deploying the code.

Software Configuration Management Team

Without SCM, Every organization always comes across numerous common software problems. Some examples of these problems are missing source code, changed component libraries, incapability to do parallel development, an inability to track on why, when, and who made a change and difficulty in finding out why the program which was working earlier has suddenly stopped working.

These problems are really frustrating because they are difficult to fix and they reoccur frequently in software field. For example, a difficult bug that was fixed previously suddenly reappears, the updated version of the requirements document is not found, a developed and tested feature is missing or the source code and the executable program are of different versions. SCM definitely helps to eliminate these problems by implementing best processes of it. SCM plays an important role in the software life cycle by ensuring what was designed is same as what is built and deployed.

The SCM Process

SCM process comprises of:

  • Identification of configuration items and Baseline management
  • Documentation of characteristics
  • Controlling change
  • Configuration status accounting
  • Auditing and Reproducibility
  • Build and Deployment Management
  • Process and Environment management
  • Continuous Integration and Continuous deployment
  • Defect tracking and traceability
  • Ensuring integrity, visibility, project coordination and project evolution

Software Configuration Management Process

Myths about SCM:

Like any other software industry process, there are many myths about SCM. here are some familiar ones:

  • A large scale software development can easily succeed without SCM.
  • SCM will always slows down the software development process
  • SCM is a difficult and lengthy activity.
  • SCM just provides version control system
  • SCM can only benefits developers or the SCM team
  • Once SCM implemented then the SCM tools will take care of everything
  • One SCM tool is compatible with every project.
  • SCM is too expensive and tough to maintain.

Software Configuration Management Myths

SCM Best practice includes:

  • Always identify and store artifacts in a secure repository.
  • Control and audit changes for artifacts.
  • Require Change Requests and Change Packages
  • Organize versioned artifacts into versioned components.
  • Create baselines at project milestones.
  • Record and track requests for change.
  • Organize and integrate consistent sets of versions using activities.
  • Maintain stable and consistent workspaces.
  • Support concurrent changes to artifacts and to components.
  • Integrate early and frequently
  • Ability to do continuous build and deployments
  • Ensure absolute reproducibility for all artifacts

Software Configuration Management Best Practices

Benefits of SCM:

SCM not only benefits just the developers and SCM team, but also plays an important role for Business Analysts, Program managers, Testing and Quality Assurance teams.

Some of the benefits of SCM are as follows:

  • Gives ability to work as distributed team across the globe and saves time for everyone.
  • Manages complex business processes and provides auditable software every time.
  • Provides an ability to go back to last working stage or any previous stages as per requirement
  • Improves management control over software development activities
  • Reduces manual efforts and makes the source code traceable.
  • Improves software development productivity and organizational competitiveness
  • Better customer service and high return on investment
  • Prevents the risk of losing functioning code or breaking test scripts by overwriting files
  • Improved security and higher software reusability
  • Lower software maintenance costs with better quality assurance
  • Quicker problem identification and bug fixes with reduction of defects and bugs
  • Process-dependent development rather than person-dependent development
  • Gives assurance that the correct system is build every time

Software Configuration Management

Words to the wise:

Users recognize the importance of SCM only when things go wrong in the project, but sometimes it is too late and getting a project back on track can be a tedious task without SCM.

The complete implementation of SCM is not a piece of cake. Team has to do a lot of work to implement and keep an SCM system in good shape, but frankly speaking whole effort is worth of every penny. You will realize it once you have a well implemented SCM in your organization.

To avoid any failure later in the process, SCM system should not just be implemented for the sake of certification or audit purpose. It should always be cautiously designed, properly implemented and practiced systematically before you actually start working with SCM.

SCM can help you to stop any trouble before it actually starts and with the help of it you can make sure that you are building comprehensive and reliable software.

I hope this article gives you a fair amount of idea on what SCM is and what are the other essential things that you need to know about it!

If you require any help or have any feedback – Please spare sometime and leave a comment 🙂

In our next article, I’ll shed some light on version control system – what is VCS, what is its use and why its needed in any organization, etc.

Till then, stay tuned!

41 thoughts on “Software Configuration Management [SCM] – All You Need To Know”

  1. I was searching for simliar kind of blog since many days, its strange that only few individuals have written anything on SCM …….. I must say you have written an excellent post 🙂

  2. on a regular basis i utilized to read smaller articles that at the same time clear their motive, and that
    is also happening with this particular post that i am reading here.

  3. Ravi – Very Comprehensive details. I have been in the SCM area for more than a decade, never came across a site listing the details this clearly.
    I will keep reading the other articles also.
    Having some workflow diagrams and providing the Scenarios – how the new feature gets delivered OR a defect gets delivered makes it more clear to all types of people – different roles.

      1. These 2 additional links on Devops/CI/CD are also very useful Bro…
        Thanks to Prameela as well here who triggered you to provide these links… 🙂

  4. Fabian Humbertson

    I don’t even know how I ended up here, but I thought this post was great. I don’t know who you are but definitely you’re going to a famous blogger if you are not already 😉 Cheers!|

  5. Nathanial Panzarella

    It’s actually a cool and useful piece of information. I am happy that you simply shared this helpful information with us. Please stay us informed like this. Thank you for sharing.|

  6. Ravi – Does SCM takes care of all like Storage/Build/Release/Deployment/Change/Configuration Management as a whole ? Does it include repository ? Why GIT & GITHUB/Bitbucket are different & GIT though is a VCS,doesn’t have repository/DB for storage & depends on GITHUB for repository/storage ?
    one SCM tool can implement CI/CD,Jenkins/Bamboo or any Devops CI/CD can be called as SCM tool as well?

    Long list of questions but imp for me to know(may be for someone else as well)… 🙂

    1. Hi Pk,

      Thanks for the queries

      Regarding Git (github), I have answered in your below comment.

      For SCM, as elaborated in this article – It’s a method of bringing control to the software development and software management process. It enhances productivity and boosts application quality. SCM is a process used for more efficiently developing and maintaining software, which is accomplished by improving accountability, audit-ability, reproducibility, traceability and coordination. So, in short – Yes it takes care of every activity/process which is involved in making the software.

      Every tool has its own feature and place in DevOps Cycle.
      Suppose if we consider Jenkins, Bamboo, TeamCity, etc – they are use to implement CI/CD.
      Puppet, Ansible, Chef, etc used for Configuration Management.
      Nagios, AppDynamics, Splunk, etc used for Monitoring.

      Similarly every tool has its own role in the cycle and associated benefits.

      Hope this helps !!

  7. Why GIT though its a VCS does not have a repository & depends on GITHUB ?
    Please correct me if I am missing something here.

  8. Great goods from you, man. I have bear in mind your stuff previous to and you’re just too magnificent.

    I really like what you have obtained here, really like what you are
    stating and the best way wherein you are saying it.
    You are making it entertaining and you continue to take care of to keep it sensible.
    I can’t wait to read much more from you. This is actually a great web site.

  9. 먹튀폴리스

    Hey There. I discovered your blog using msn. This is a very well written article.
    I’ll make sure to bookmark it and come back to learn more of
    your helpful information. Thanks for the post. I will definitely return.

  10. Do you mind if I quote a couple of your posts as long as I provide
    credit and sources back to your blog? My blog is in the very same niche as yours and my visitors would certainly benefit from a lot of the information you present here.

    Please let me know if this ok with you. Thanks a lot!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top