When we develop a software,then the product (software) undergoes many changes in their maintenance phase, we need to handle these changes effectively.
However, several individual (programs) works together to achieve this common goal. These individual produces several work product (SC Items) for example intermediate version of modules or test data used during debugging, part of final product.
The item that comprise all information produced as part of the software process are collectively called a software configuration.
As software development progresses, and the number of Software Configuration Items (SCI’s) increases rapidly.
These are managed and controlled by SCM. Hence, this is where we need software configuration management.
Therefore we can say that
“A configuration of product refers not only to the product’s constituent, but also to specific version of the component.”
Therefore SCM is the discipline which
Monitor and control change and
Ensure the proper implementation of change made to item.
Auditing and reporting on the change made.
Configuration management(CM) is an art of identifying, organising and controlling modifications to software being built by a programming team.
The goal is to maximize productivity by minimizing mistakes(errors).
Also CM is essential due to the inventory management, library management and updation management of the items important for the project.
Importance of SCM
It is useful in controlling and managing the access to various SCIs e.g. by preventing the two member of a team for checking out the same component for modification at same time.
It provide the tool to ensure that changes is being properly implemented
Also iIt has the capability of defining and storing the various constituent of a software
SCM is also used in keeping a system in a consistent state by automatically generating derived version upon modification of same component.
It uses the tools which ensure that the required change has been properly implemented to the appropriate component (item). Thus it answer to the following questions
How and when the change will be done to software?
How to ensure the changes are done correctly?
What procedure will be adopted to make the change?
Who will be responsible for change ?
How to rank/order for importance of various change or items?
How to manage the many version of the program?