Software Configuration Management (SCM) is the task of tracking and controlling changes in the software, part of the larger cross-discipline field of configuration management. SCM practices include revision control and the establishment of baselines. If something goes wrong, SCM can determine what was changed and who changed it. If a configuration is working well, SCM can determine how to replicate it across many hosts. Suffice to say that in a complex scenario where bug fixing should happen on multiple production systems and enhancements must be continued on the main code base, SCM acts as the backbone which can make this happen. The need for an SCM process is acutely felt when there are many developers and many versions of the software.
SCM helps in identifying individual elements and configurations, tracking changes, and version selection, control, and base lining. SCM aims to control changes introduced to large complex software systems through reliable version selection and version control.
The acronym “SCM” is also expanded as source code management.
Software configuration Management includes following activities
Here is the list of advantages / benefits which might help us to understand the goal which is being achieved by Software Configuration Management.
- Configuration identification – Identifying configurations, configuration items and baselines
- Configuration control – Implementing a controlled change process. This is usually achieved by setting up a change control board whose primary function is to approve or reject all change requests that are sent against any baseline.
- Configuration status accounting – Recording and reporting all the necessary information on the status of the development process.
- Configuration auditing – Ensuring that configurations contain all their intended parts and are sound with respect to their specifying documents, including requirements, architectural specifications and user manuals.
- Build management – Managing the process and tools used for builds.
- Process management – Ensuring adherence to the organization’s development process.
- Environment management – Managing the software and hardware that host the system.
- Teamwork – Facilitate team interactions related to the process.
- Defect tracking – Making sure every defect has traceability back to the source.
- Reduced redundant work – This process also help us to reduce the redundant work.
- Avoids configuration-related problems – Software configuration management process make sure that the configuration changes done in any environment which may include stage, UAT, Integration or products is being tracked and controlled.
- Facilitates team coordination – Software configuration management also enables team to co-ordinate at many scale to get done software development faster without compromising the quality of the software. Need for co-ordination between Dev, QA and End User.
- Helps in building management – managing tools used in builds and release which include SCM Server, Build Servers.
- More than one version of the software has to be supported – Software configuration management enables us to support following…
— Multiple Releases
— Custom Configured systems
— Systems under Development
— Control the cost involved in making changes to a system
Software Configuration Management Process
Software Configuration Management determines the component which helps the software development process and life cycle. Configuration Management has evolved to resolve the complexity in software development process and increase the quality of the software, streamline the process and each phase and save the time for the software integration and testing and making the product ready for the market in less span of time.
Configuration management determines clearly about the items that makes up the software which includes source code, test script, managing third party software and dependency, documentation and software development environment. Configuration management implies the process using these items are managed carefully, thoroughly and attentively during the entire project and software development life cycle.
Software configuration management process help to manage following sub set activities…
- Code management process
- Build process
- Application packaging process
- Test process
- Release process
All above set is very important items for work flow management. Software Configuration Management is a process in which it covers how to practice the principles of configuration management during large software projects and when performing enhancements and maintenance on a continuous basis.
I am not going to cover the software configuration management in depth as it has been covered by many author in past through many books and blogs.
Software Configuration Management Roles
- Configuration Manager
Responsible for identifying configuration items. The configuration manager can also be responsible for defining the procedures for creating promotions and releases. - Build and Release Engineer
- Install Engineer aka Application Packaging Engineer
- Release Engineer / Manager
- DevOps Engineer
- Application Support Engineer
- Integration Specialist
Evolution of Agile SCM
Agile SCM is nothing but able to move the phases of configuration management mainly the build and testing quickly and easily for immediate feedback of the status of the current development of the software.
The purpose of the agile SCM to make the division of tasks into short phases of work and frequent reassessment and adaptation of plans.
The term “Agile SCM” can elicit very different reactions based on someone’s experience and perspective.
If you’ve thought that Agile SCM has declared war on discipline and control, you’re not alone. Many in the CM community have reacted with these same feelings. Do discipline and control lead to quality software? Certainly agile methodologies are ultra-focused on quality through their use of concepts like test-driven design (TDD), refactoring, close customer collaboration, pair programming, etc. These methodologies are also ultra-focused on being simple, and “lean” – doing only that which “adds value” and removing that which does not. They are also about effective communication and knowledge sharing in a way that relies more on rapid feedback-cycles of face-to-face dialogue than on static knowledge captured in large formal documents that attempt to complete all the requirements before coding begins.
Evolution of SCM in Cloud Environment
With the introduction of cloud computing the purposes of SCM tools have become merged in some cases. The SCM tools themselves have become virtual appliances that can be instantiated as virtual machines and saved with state and version. The tools can model and manage cloud-based virtual resources, including virtual appliances, storage units, and software bundles. The roles and responsibilities of the actors have become merged as well with developers now being able to dynamically instantiate virtual servers and related resources.
- Reduced redundant work.
- Effective management of simultaneous updates.
- Avoids configuration-related problems.
- Facilitates team coordination.
- Helps in building management; managing tools used in builds.
- Defect tracking: It ensures that every defect has traceability back to its source.
Software Configuration Management Practice
When implementing SCM tools and processes, you must define what practices and policies to employ to avoid common configuration problems and maximize team productivity.
Continuous Integration and Delivery is one of the recommended practices in Software configuration Management. Continuous Integration has 9 C’s
- Continuous Learning
- Continuous build
- Continuous unit testing
- Continuous inspection
- Continuous packaging
- Continuous pre-prod deployment
- Continuous testing
- Continuous coverage
- Continuous Approval
- Gradle versions, their supported Java versions, and unsupported Java versions - December 23, 2024
- An Introduction of GitLab Duo - December 22, 2024
- Best Hospitals for affordable surgery for medical tourism - December 20, 2024