Your IT project will soon be in trouble if you fail to establish configuration management (CM) as early as possible during the systems/software development life cycle (SDLC). This is true regardless of whether you use a traditional software development methodology/process such as “Waterfall” or an Agile, iterative methodology. Ideally, you should start thinking about CM before or during the proposal activity. An effective configuration control library provides control over documentation, source code, etc. and streamlines the build/release process. Finally, you must also ensure the use of best practices for program/project management, development, quality assurance (QA), and so on.

Why is CM so essential?

CM is a process for establishing and maintaining consistency of a product’s performance, functional and physical attributes with its requirements, and design and operational information throughout its life. (MIL-HDBK-61A, Military Handbook: Configuration Management Guidance, Department of Defense. 07-February-2001 and ANSI/EIA-649B, National Consensus Standard for Configuration Management, TechAmerica. 01-April-2011.)

Effective CM is essential to ensure customer/user satisfaction and develop a quality product. Without CM, it is almost impossible to control the documentation, source code, and other data that describe your system and are used throughout the SDLC.

The 10 steps to ensure successful CM

Create your CM plan during the conceptual demonstration and validation phase, which the Rational Unified Process (RUP) refers to as Inception and Elaboration.

1. At contract award, identify the configuration items (CIs) based on the following criteria:

  • System allocation (major functions or capability of the system)
  • Application functionality or capability
  • Data and information requirements
  • Each processor
  • Criticality/safety
  • Size (source code lines)
  • Cost and schedule
  • Quality (reliability, reusability, maintainability, testability, modularity, etc.)
  • Logistics support
  • Maintenance

Note: CIs are also called Computer Software Configuration Items (CSCIs) for software systems development.  The configuration identification process was originally defined in MIL-STD-973, 483, and DOD-STD-480A.

2. Determine the appropriate development methodology for the system or product (if not yet decided).

3. Specify the required documentation for each product (CI/CSCI) based on the contract requirements, standards, and specifications. Note: A waterfall project may have extensive specification documents. For Agile, brief but well-defined user stories with limited text and diagrams and tasks for each iteration are often preferred.

4. Set up the configuration control library. It does the following:

  • Provides control of master files and documentation (on-line and offline), such as specifications, related documentation, computer programs, software, databases, etc.
  • Supports the build and release processes and activities.

5. Set up a change management process that includes configuration control and a secondary process to expedite critical or time-sensitive changes.

6. Issue numbers and identifiers to each product (CI/CSCI), its components, and related documentation. Important: It really helps to establish consistent naming and labeling conventions for requirement and design documentation, interfaces, code listings, and so on.

7. Determine and prioritize the planned component or functional releases (deliverables), based on the requirements and the architecture.

8. Establish the configuration baselines. Configuration baselines are points in time for management, control, and release purposes.

9. Set up QA, validation and verification (V&V), and/or test validation processes that complement your CM method.

10. Throughout your program or project, do the following:

  • Continue to implement and carry out your CM activities
  • Evaluate your success (lessons learned), and
  • Correct as necessary.