As the systems being built today increase in software content, the need for software configuration management continues to rise. This article touches on how project managers and leaders are aware of the need to better manage and control their projects, and how it's being accomplished by improving software configuration management.
As the systems being built today increase in software content, the need for software configuration management continues to rise. Prime contractors are integrating millions of lines of code from multiple subcontractors. Companies are required to produce and maintain variants of their main product to reach out to a diversified market. Project Manager/leaders are aware of the need to better manage and control their projects.
Change is a fact of life in software development: Customers want to modify requirements, developers want to modify the technical approach, and management wants to modify the project approach. Modification is necessary, because, as time passes, all parties know more about what they need, which approach would be best, and how to get it done and still make money. The additional knowledge becomes the driving force behind most changes. But, these changes must be carefully controlled.
This article brings together most of the software configuration management concepts to be analyzed from the project leader point of view. Configuration management will be shown as a project management support function that indeed helps Project Manager/leaders manage and control their projects better.
Purpose Of Software Configuration Management
According to the Software Engineering Institute's (SEI’s) Key Process Areas definition of software configuration management (SCM) (Paulk et al. 1993a; Paulk et al. 1993b), the purpose of SCM is to establish and maintain the integrity of the products produced throughout the project's software life cycle. Knowing the state of the product that a project is developing and knowing that it satisfies the customer's requirements are of utmost importance for any project leader. SCM then can be viewed as a support function that helps a project leader better manage and control the project (IEEE 1997).
The Need for SCM
In many software companies, software support functions such as software quality assurance and SCM are not perceived as value-added by Project Manager/leaders and software developers alike. SCM is frequently viewed by developers as a hindrance to product improvements because of the overhead associated with the change control function of SCM. But on closer examination, one can see that the most frustrating software problems are often caused by poor configuration management. Some examples of poor practices are (Babich 1986):
- The latest version of source code cannot be found.
- A difficult defect that was fixed at great expense suddenly reappears.
- A developed and tested feature is mysteriously missing.
- A fully tested program suddenly does not work.
- The wrong version of the code was tested.
- There is no traceability between the software requirements, documentation, and code.
- Programmers are working on the wrong version of the code.
- The wrong versions of the configuration items are being baselined.
- No one knows which modules comprise the software system delivered to the customer.
Most of these problems were revealed during software process assessments conducted by the authors. Projects, under great pressure to meet difficult deadlines, found their scarce time resource constantly under attack because of the rework caused by these reasons. One developer stated that he had "fixed" a problem three times, and three months after each delivery the problem recurred. Project Manager/leaders cannot afford to have their software developers redoing what was already done.
The cost of rework adds greatly to the cost of developing software and can be reduced by implementing an effective SCM program. The principles behind the modern cost-of-quality concept were derived for manufacturing applications and can be found in the works of J. M. Juran (Juran and Gryna 1988). In 1988 Raytheon Electronic Systems began using a cost of software quality model derived from Philip Crosby (1984) and process improvement methods to increase efficiency. According to