Software Configuration Management Process, SCM
- one of the key elements in any software development process is that of configuration management. With many people working on files at any given time, software configuration management, SCM is a key element of delivering a project on time and working
Software is a key element of most electronic development projects these days. Embedded software is contained in most items of electronic equipment these days. In addition to this, software is often needed in its own right to run on computers, tablets and other computing platforms.
Software projects often require many people to be working on different areas of the project at the same time. Ensuring engineers have the correct files to work on during the project, and when a release occurs, ensuring the correct files are sued is key to the success of the project.
Software configuration management, SCM, needs to be an integral element of any software project.
Uncontrolled changes to software that is in development are usually one of the major causes of delays and cost increases - unmanaged change is also the largest single cause of failure to deliver systems on time and within budget.
Without software configuration management, a project would soon fall into chaos.
Software configuration management basics
It is possible to define software configuration management in many ways. There are several good definitions that are available.
Software configuration management can be defined as the discipline of identifying the configuration of a system at discrete points in time for the purpose systematically controlling changes and maintaining the integrity and traceability of the software throughout the product life cycle.
Software configuration management key areas
There are six core functional areas for software configuration management:
- Source code management
- Build engineering
- Environment configuration
- Change control
- Release engineering
Main software configuration management tasks
There are a number of core configuration tasks that need to be incorporated into a software project to ensure the correct configuration management of the project or development area.
- Identify and control every distinct configuration item.
- Select the exact version of each configuration item that is part of the defined build.
- Manage and maintain the development.
- Check and test the integration and production environments to ensure that there is a working control mechanism in place for making changes.
- Package and release all configuration items in a particular release.
- Release of the packaged items for test or production.
There are several very good software configuration management tools that are available. These tools are very good, but in addition to this, it is necessary to have an operational process in place that guides the developers to correctly use them. It is not sufficient just to have the tools in place for use
In addition to the tools themselves it is necessary to develop a system where other elements are brought to bear around the tools:
- Naming conventions - these can be made to indicate not only the file, but its function and state
- Policies - these act as guidelines indicating how things are implemented.
- Procedures - these need to be in place to ensure that developers know what to do and how to implement them i.e. how to work with the SCM tool in the environment in which they are working. These should be easy to follow - possibly on a web based system that is easy to access, defining step by step guides of what to do.
If software configuration management is to be successful, then it needs to be easy to use. In this way it will speed up development. If the procedures are difficult to understand or use, then developers are less likely to follow them and the system will not work correctly.
By Ian Poole
Share this page
Want more like this? Register for our newsletter