16 Critical Software Practices 
 
Adopt Life Cycle
Configuration Management
  
IntroImplementationMetricsResources
 
Mike Evans Grady Booch
Mike Evans Grady Booch

 

"Fifty percent of software development projects are at risk due to inadequate configuration control."

--Capers Jones

Adopt Life Cycle Configuration Management

Configuration Management (CM) is an integrated process for identifying, documenting, monitoring, evaluating, controlling, and approving all changes made during the life cycle of the program for information that is shared by more than one individual. A general guideline for CM is that all products that are input to a development or maintenance task should be under configuration change and version control. This means that the breadth of the items under CM control is much broader than just source code. It includes all documentation (engineering information or notebooks, reports, plans, schedules, analyses, test procedures and results, user information, defect reports and any other information) approved for use or shared within the program. It includes artifacts, COTS, GOTS, automated tools used for development, operating systems, middleware, database management systems, database information, test drivers, modeling and simulation programs, and anything else necessary to build, release, verify and/or validate the product. The discipline of CM is vital to the success of any software effort. Software development can be viewed as an elaborate process of sharing and transforming information. Unless the team members are using the same piece of information, there is opportunity for wasted effort and defective systems. CM is a key discipline to avoiding problems.
 
The CM processes for delivered-product and developmental baselines, and their change-control, must be documented. The CM processes, together with automated tools, must maintain version and semantic consistency between configuration items (CIs) and be able to identify all CIs impacted by a given change. Changes to CM baselines must occur in accordance with the approved, structured plan. The CM organization should be responsible for building code units into integrated software for integration test. CM activities should be tied to tasks that have budgets, products and unambiguous exit criteria and should be integrated with quality assurance (QA) tasks to ensure that products input to CM baselines have met their acceptance criteria. The CM organization should monitor and control the delivery and release-to-operation process using functional configuration audits to verify the product has achieved the allocated requirements and physical configuration audits to verify that the delivered documentation is consistent with the source code.

top
16 Critical Software PracticesGlossary of Terms