Software Configuration Management (SCM) or just Configuration Management (CM) deals with concepts, methods, and tools for the management of (large) software projects. Since almost all serious software projects tend to grow quiet large and difficult to control, the adjective large could as well have been omitted from the previous sentence.
The overall goals of configuration management are
to keep software projects
practicable
manageable
maintainable
to control
all the elements of the project (modules, subsystems, documents, packages, etc.)
the changes (the project history)
the workflow (the order of events and tasks)
the tools used to build the software (compilers, generators, etc.)
the reported problems, their analysis, and the solutions found (bugfixes or work-arounds)
to make projects more efficient and thus to increase the profit
Some typical questions and situations encountered during the lifetime of a software project might be the following:
I cannot compile the project code anymore. What has changed since yesterday?
A company urgently needs a fix for a problem in a version of a software released two years ago. They cannot upgrade to more recent versions for reasons of compatibility. So the old code has to be reconstructed, fixed, and the software must be rebuilt and shipped.
All changes made to an old released version of a product during the recent months have to be transferred and integrated into the current development version.
All the components of your project have to be released, which means that everything needs to be checked out and built from scratch (in order to make the process repeatable), and the future development work has to be separated so that it does not affect the work on the released product.
Software configuration management provides you with methods and tools to apply in these and many other situations. If you don't have a plan or procedure to cope with any of the described situations, you should seriously consider to introduce configuration management or to improve the methods and tools you already use.
To achieve the goals mentioned above, many concepts and tools jave been invented and realized. The tasks of configuration management (that these tools are concerned with) are traditionally divided into the following areas:
Version management, that is, controlling the development history of software.
Build management, that is, controlling code generation, compilation, linkage, and archives creation.
Process management, that is, controlling the order of events for defined tasks and providing standard procedures.
Problem management, that is, controlling the report, analysis, and solution of problems and errors reported in the software.
Elego ComPact has a distinct emphasis on version control and build management, which is in contrast to many other commercial products that do not supply any solutions for build management, but rather concentrate on the control of the project tasks and workflow. Our experience has been that an amazing amount of time is squandered by supervising and repairing insufficient and incapable build tools; hence the assessment that build management is a crucial part of SCM. For the purpose of problem management, a third-party product will be integrated into ComPact.