Chapter 25

Configuration Management Overview

  • Definition: Configuration Management (CM) refers to the policies, processes, and tools involved in managing changing software systems.

  • Importance of CM:

    • Software systems undergo constant changes during development and use.

    • Essential for tracking changes and component versions in team projects.

Learning Objectives

  • 25.1 Version Management

  • 25.2 System Building

  • 25.3 Change Management

  • 25.4 Release Management

CM Activities

  • Version Management: Monitoring multiple versions of system components to prevent interference from different developers.

  • System Building: Assembling components, data, and libraries into an executable system.

  • Change Management: Tracking change requests, assessing costs/impact, and deciding on implementation.

  • Release Management: Preparing software for external release and tracking system versions for customers.

Agile Development and CM

  • Agile development requires frequent updates and flexibility, which is facilitated by CM tools.

  • Developers use shared repositories to manage definitive component versions and modify code locally before integration.

Development Phases

  1. Development Phase: Team manages software configuration and adds new functionality.

  2. System Testing Phase: Internal release for testing, no new functionalities; only bug fixes and improvements.

  3. Release Phase: Distribution to customers, including new features and bug fixes.

Multi-Version Systems

  • Large systems often have multiple concurrent versions at different development stages.

  • Multiple teams may be engaged in developing different versions simultaneously.

Key CM Terminology

  • Baseline: A collection of controlled component versions that define a system.

  • Branching: Creating new codelines from existing versions for independent development.

  • Codeline: A set of versions of a software component and its dependencies.

  • Configuration Control: Process of maintaining records of versions to manage changes effectively.

  • Version: An instance of a configuration item, distinguished by a unique identifier.

Version Management

  • Definition: VM encompasses tracking different versions of software components, ensuring compatibility among changes made by different developers.

  • Codelines: Sequences of versioned source code; used to manage different component versions effectively.

Version Control Systems

  1. Centralized VCS: A single master repository for all component versions (e.g., Subversion).

  2. Distributed VCS: Multiple repositories existing concurrently, enabling developers to work offline (e.g., Git).

Key Features of Version Control Systems

  • Version/release identification

  • Recording change history

  • Project support and independent development

  • Storage management

Public Repository and Private Workspaces

  • Repository: Holds the master version of all components for system building.

  • Developers check out components to work in private workspaces and must check them back in upon completion.

Continuous Integration

  • Developers regularly integrate changes, allowing immediate identification of integration issues.

  • Emphasizes periodic builds and testing to maintain software stability.

Change Management Process

  • Goal: Ensure systematic software evolution, prioritizing effective changes.

  • Process Steps:

    1. Change request submission

    2. Cost/impact analysis

    3. Change implementation and tracking

    4. Closure of the change request

Release Management

  • Definition: Distribution of software versions to customers, categorized as either major or minor releases depending on the changes made.

  • Release Components:

    • Executable code

    • Configuration and data files

    • Installation programs

    • Documentation

Release Planning and Tracking

  • Releases must be documented accurately for future reproduction, especially in customized or long-lifetime systems.

  • Marketing strategies and timing are crucial for successful release management.

Key Points in Configuration Management

  • CM ensures controlled integration of changes into software systems.

  • Involves collaboration among different teams managing software versions, builds, changes, and releases.

  • Continuous integration and testing are emphasized to ensure software quality and performance.