SCM Process:
The Software Configuration Management (SCM) process ensures that all required changes are properly applied to the correct components using appropriate tools. It involves several key tasks aimed at maintaining consistency and control throughout the software lifecycle:
- Identification: Recognizing and defining all items that make up the software configuration.
- Version Control: Managing and tracking multiple versions of software components.
- Change Control: Ensuring that changes are introduced in a controlled and coordinated manner.
- Configuration Audit: Verifying that the configuration items are correct and adhere to required standards.
- Status Reporting: Providing regular updates on the status and history of configuration items and changes.
Software Configuration Management Process Diagram:
1.Identification
Basic Object: This refers to a single unit of text or artifact created by a software engineer during the stages of analysis, design, coding, or testing.
Aggregate Object: A composite collection made up of essential objects and other aggregate objects. For example, a Design Specification is considered an aggregate object.
Each configuration object is uniquely identifiable by a combination of attributes including:
- A name
- A description
- A list of resources
- Its realization (i.e., its actual implementation or instantiation)
The relationships among configuration objects can be formally described using a Module Interconnection Language (MIL).
2.Version Control
Version control involves a set of tools and procedures that manage the creation, storage, and tracking of different versions of configuration items generated throughout the software development lifecycle.
As described by Clemm, version control within SCM enables:
“The selection and construction of a software configuration by specifying a set of desired version attributes.”
This is accomplished by:
- Associating meaningful attributes with each version
- Allowing users to define alternative system configurations based on these attributes
3.Change Control:
James Bach emphasizes the dual nature of change control in SCM:
"Change control is vital, but the same factors that make it necessary also make it challenging."
We fear change because:
- A minor mistake can lead to major failures.
- However, changes can also fix critical issues or introduce powerful new features.
1.A change request is submitted.
2.The request is evaluated for:
- Technical soundness
- Potential side effects
- Impact on other configuration items and system functions
- Projected costs
4.A Change Control Authority (CCA) – an individual or group – reviews the report and decides on the change’s priority and approval.
Key Mechanisms in Change Control:
- Access Control: Determines who is authorized to access or modify configuration items.
- Synchronization Control: Prevents conflicting changes by managing concurrent modifications by multiple developers (e.g., through check-in/check-out systems).
4.Configuration Audit
Configuration audits ensure that:
- The developed software meets baseline requirements.
- Deliverables match the defined configurations.
- Proper traceability is maintained among all Configuration Items (CIs).
- All work requests are properly linked to CI modifications.
5.Status Reporting
Also known as Status Accounting, this process involves tracking and communicating the current state of configuration items.
Purpose:
Provide up-to-date, accurate configuration data to various stakeholders such as developers, testers, end-users, customers, and project managers.
Examples of Reporting Artifacts:
- Release Notes
- User Guides
- Installation Guides
- Configuration Guides
- FAQs
- Admin Documentation
These documents offer transparency and maintain alignment among all parties involved in the software development and maintenance processes.