SENS Configuration Management: Policies and Practices
Configuration management (or CM) is a set of
software-engineering tasks concerned with:
- coordinating development among multiple developers, and
- controlling the change and evolution of software products.
While it may sound trivial, CM quickly
becomes challenging when many different developers are working
on different pieces of a common system or family of systems.
Good CM requires a lot of discipline on the part of individual
programmers; without such discipline, source repositories will
quickly degrade into unusable collections of source code with
any subset of the following (undesirable) properties:
- A developer cannot easily create a working copy of
source code for some interesting software module.
This can happen for many reasons. First, it could be
that the original developer created a large system
that exists in many directories located in different
parts of the system with no conceptual hierarchy
that organizes all of these directories. Or (worse)
there may be multiple copies of the same software module;
each copy is slightly different; no copy is obviously
the "current" version; and the developer who knows
which is current has graduated and is now living
in a foreign country.
- A developer cannot easily compile and link an
executable application from the source code of
some interesting software module.
- Assuming the developer can create a working copy of a
module and compile and link this module, he or she may
not be able to run the resulting application because it
makes assumptions about its environment and these
assumptions are incompatible with the developer's
environment.
To address these concerns, we developed (or adapted) techniques
and practices that all SENS developers must adhere to in order
to keep our repositories clean and usable. In most SENS development
projects, we use the CVS system for version control and a combination
of make and imake to manage builds and rebuilds.
These pages assume
that all CM activity will be performed in a Unix environment with
software written in C++.
Kurt Stirewalt
Last modified: Thu May 24 19:21:30 EDT 2001