CM homepage Computer Science LTH

What is SCM?

There are a number of different interpretations.

For purposes of this course, we are talking about tracking and control of software development and its activities. That is, the mangement of software development projects with respect to issues such as multiple developers working on the same code at the same time, targetting multiple platforms, supporting multiple versions, and controlling the status of code (for example beta test versus real release). Even within that scope there are different schools of thought:

  • Traditional Software Configuration Management - checkin/checkout control of sources (and sometimes binaries) and the ability to perform builds (or compiles) of the entities. Other functions may be included as well.
  • Process Management - control of the software development activities. For example, it might check to ensure that a change request existed and had been approved for fixing and that the associated design, documentation, and review activities have been completed before allowing the code to be "checked in" again.
While process management and control are necessary for a repeatable, optimized development process, a solid configuration management foundation for that process is essential.

Why SCM?

First of all, SCM is great fun because it is a highly interdisciplinary field. It touches many subjects from Software Engineering in general and Programming in particular, but also has aspects from Collaborative Work, Working In Groups, Knowledge Management, Cognitive Science and more.

Second, it is highly usable by all (not just programmers) - unless you want to work alone, always get it right the first time, don't care about what you hand out to others and so on.

Finally, just to make it completely clear: this course is about Software Configuration Management - though we will usually talk about CM because that is easier to say than SCM ;-)


Updated October 23, 2002