Explain SCM process in details.
- The SCM (Software Configuration Management) is a set of activities that have been developed to manage change throughout the software life cycle
- Purpose: Systematically control changes to the configuration and maintain the integrity and traceability of the configuration throughout the system’s life cycle
Four primary objectives
- To identify all items that collectively define the software configuration
- To manage changes to one or more of these items
- To facilitate the construction of different versions of an application
- To ensure that software quality is maintained as the configuration evolves over time
(Figure: Layers of SCM Process)
The SCM Process
- Referring to the figure, SCM tasks can viewed as concentric layers
- SCIs (Software Configuration Item) flow outward through these layers throughout their useful life
- As an SCI moves through a layer, the actions implied by each SCM task may or may not be applicable
- For example, when a new SCI is created, it must be identified.
- However, if no changes are requested for the SCI, the change control layer does not apply
- The SCI is assigned to a specific version of the software (version control mechanisms come into play)
- A record of the SCI (its name, creation date, version, etc.) is maintained for configuration auditing purposes
Identification Task
- Identification separately names each SCI and then organizes it in the SCM repository using an object-oriented approach
- Objects start out as basic objects and are then grouped into aggregate objects.
- Each object has a set of distinct features that identify it.
- A name that is unambiguous to all other objects
- A description that contains the SCI type, a project identifier, and change and/or version information
- List of resources needed by the object
- The object realization (i.e., the document, the file, the model, etc.)
Change Control
- Change control is a procedural activity that ensures quality and consistency as changes are made to a configuration object
- A change request is submitted to a configuration control authority, which is usually a change control board (CCB).
- The request is evaluated for technical merit, potential side effects, overall impact on other configuration objects and system functions, and projected cost in terms of money, time and resources
- An engineering change order (ECO) is issued for each approved change request
- Describes the change to be made, the constraints to follow and the criteria for review and audit
- The Base lined SCI is obtained from the SCM repository
- Access control governs which software engineers have the authority to access and modify a particular configuration object
- Synchronization control helps to ensure that parallel changes performed by two different people don't overwrite one another.
Version Control
- Version control is a set of procedures and tools for managing the creation and use of multiple occurrences of objects in the SCM repository
- Version Control Capabilities
- An SCM repository that stores all relevant configuration objects
- A version management capability that stores all versions of a configuration object
- A make facility that enables the software engineer to collect all relevant configuration objects and construct a specific version of the software
- Issues or bug tracking capability that enables the team to record and track the status of all outstanding issues associated with each configuration object
- The SCM repository maintains a change set
- Serves as a collection of all changes made to a baseline configuration
- Used to create a specific version of the software
- Captures all changes to all files in the configuration along with the reason for changes and details of who made the changes and when
Configuration Audit
- Configuration auditing is an SQA activity that helps to ensure that quality is maintained as changes are made.
- It complements the formal technical review and is conducted by the SQA group
- It addresses the following questions
- Has a formal technical review been conducted to assess technical correctness?
- Has the software process been followed and have software engineering standards been properly applied?
- Has the change been "highlighted" and "documented" in the SCI? Have the change data and change author been specified? Do the attributes of the configuration object reflect the change?
- Have SCM procedures for noting the change, recording it and reporting it been followed?
- Have all related SCIs been properly updated?
- A configuration audit ensures that
- The correct SCIs (by version) have been incorporated into a specific build
- That all documentation is up-to-date and consistent with the version that has been built
Status Reporting
- Configuration status reporting (CSR) is also called status accounting
- Provides information about each change to those personnel in an organization with a need to know
- Answers what happened, who did it, when did it happen and what else will be affected?
- Sources of entries for configuration status reporting
- Each time a SCI is assigned new or updated information
- Each time a configuration audit is conducted
- The configuration status report
- Placed in an on-line database or on a website for software developers and maintainers to read
- Given to management and practitioners to keep them appraised of important changes to the project SCIs