The problem: Software problems often occur because of poor configuration management. These problems can be frustrating because they take time to fix, they often happen at inopportune times, and they are totally unnecessary. For example, a difficult bug that was fixed at great expense suddenly reappears; a developed and tested feature is mysteriously missing; or a fully tested program suddenly doesn't work.
The solution: Configuration management helps to reduce these problems by coordinating the work products of the many different people who work on a common project.
Configuration Management (CM) is a discipline that applies technical and administrative direction and surveillance over the lifecycle of items to:
* Identify and document the functional and physical characteristics of configuration items.
* Control changes to configuration items and their related documentation.
* Record and report information needed to manage configuration items effectively, including the status of proposed changes and implementation status of approved changes.
* Audit configuration items to verify conformance to specifications, drawings, interface control documents, and other contractual requirements.
Change is a natural part of the software development process, but needs to be controlled effectively. Software configuration management (SCM) is a software engineering discipline comprised of tools and techniques used to manage change to software assets. It is a set of activities that are designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling changes that are imposed, and auditing and reporting on the changes that are made.
There exist many solutions for SCM, each one of them has its advantages and disadvantages. We concentrate below on three different SCM products.
Microsoft SourceSafe: the Microsoft solution for SCM.
Advantages:
- Synchronized with Visual Studio.
- Relatively inexpensive.
- Relatively simple to administrate.
Disadvantages:
- Does not support branching.
- Not compatible with other OS’s.
- Critical repository corruption is possible.
- Only small projects.
Concurrent Versions System (CVS): commonly used in Open Source projects.
Advantages:
- Free.
- Open Source.
- Large community of experienced users.
- Multi platform.
- Supports separate development lines (branches).
- De-facto standard for many IDE's.
Disadvantages:
- Open Source – problematic support.
- Performance problems in large projects.
Rational ClearCase: market share of 33% (source IDC).
Advantages:
- Can handle projects with a lot of developers and that go on for a very long time.
- Developed and marketed by IBM.
- Versatile – lots of possibilities and capabilities.
- Enables real parallel development.
- Supported by multiple OS.
Disadvantages:
- High price.
- Too versatile – one can never learn all capabilities.
- Complex support.