Software configuration management deals with the identification, change control, and status of software items. Properly applied configuration management procedures can improve visibility, efficiency, and integrity of the development process. In software intensive development projects, configuration management principles in general and change control practices in particular are sometimes perceived as obstructions to the development process. Therefore, these practices are often implemented late in the development life cycle. The advantages of configuration management are thus lost during the early critical phases of a program.
Part of the reason that configuration management procedures are perceived as an impediment to the development process is that traditional configuration management practices do not provide timely benefits commensurate with their maintenance effort. Traditional practices were developed on large production programs in which the emphasis was on the control and accounting of a relatively small number of changes to a relatively stable product. The software development environment, on the other hand, is characterized by the integration of a large number of changes into a transient product.
A configuration management system designed to be more compatible with the software development process and to take advantages of software development resources can provide extensive benefits to the development team. These benefits may encourage the installation of configuration management procedures early in the software development phase, thereby providing the advantages of configuration management throughout the development life cycle.
This paper draws on the experience of several large simulator software development programs to identify design strategies for a configuration management system that provides substantial benefits during the development phase and meets the requirement of traditional configuration management in the latter phases of the development life cycle.