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
Development Phase: Team manages software configuration and adds new functionality.
System Testing Phase: Internal release for testing, no new functionalities; only bug fixes and improvements.
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
Centralized VCS: A single master repository for all component versions (e.g., Subversion).
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:
Change request submission
Cost/impact analysis
Change implementation and tracking
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.