Software Configuration Management is the ability to control and manage change in a software project. Change is inherent and ongoing in any software project. The ability to track control such changes in a proper manner form the basis of a good software project. Software Configuration Management tries to bridge this gap by defining a process for change control. Change Management defines processes to prevent unauthorized changes, procedures to follow when making changes, required information, possibly workflow management as well. Change management is orders of magnitude more complex than version control of software. SCM is the process that defines how to control and manage change. The need for an SCM process is acutely felt when there are many developers and many versions of the software. 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. Traditional SCM process is looked upon as the best fit solution to handling changes in software projects. Traditional SCM process identifies the functional and physical attributes of a software at various points in time and performs systematic control of changes to the identified attributes for the purpose of maintaining software integrity and traceability throughout the software development life cycle. The SCM process further defines the need to trace the changes and the ability to verify that the final delivered software has all the planned enhancements that are supposed to be part of the release. The traditional SCM identifies four procedures that must be defined for each software project to ensure a good SCM process is implemented. They are * Configuration Identification
* Configuration Control
* Configuration Status Accounting
* Configuration Authentication
Most of this section will cover traditional SCM theory. Do not consider this as boring subject...