Configuration Management defined by IEEE is:
“Configuration Management is the process of identifying and defining the items in the system, controlling the change of these items throughout their lifecycle, recording and reporting the status of items and change requests, and verifying the completeness and correctness of items” – IEEE Std-729-1983
This definition covers the topic of Configuration Management in general, and can be applied to any system that is composed of individual items, undergoes change, and needs tracking and testing. For example a car assembly can be one such system.
However when put to Software context, Software Configuration Management as per above definition involves:
Identification of Items: Every single item that contributes in the successful creation and then execution of a software solution needs to be identified. An item can be anything including source code files, third party libraries, third party components, image and media resources, database scripts etc.
Controlling of Items: Once identified, Configuration Management ensures control over addition, update and deletion of these items so that critical components of a software system do not get missing when needed. Controlling also involves granting permissions and rights to individuals, for different actions that can be performed on these items individually (new lines of code in a file) or collectively (taking a snapshot of complete source code).
Recording of Actions: Every action performed on these items must be traceable in case something goes wrong and the complete software program when built does not behave as expected. For this purpose every action taken on system items, is recorded in some form, let it be a simple log file or managing extensive time line of changes.
Reporting of Changes: Recording alone is not sufficient; a Configuration Manager must be able to search through these recorded details whenever something needs to be reverted back to previous state. Thus reporting of every action performed on system items remains an integral part of Software Configuration Management.
Verifying System State: Last but not least, Configuration Management must ensure completeness, correctness and stability of complete software system at given point of time. This serves as an early warning system for software managers, so that they become aware of any discrepancies in constituting items, even before a build is released to Quality Assurance.
Above definition lists five Functions of Software Configuration Management. Any activity within an organization for managing software configurations will fall within one of these functions.