Topic 2
Topic 2
Introduction
SCM disciplines are used to simultaneously coordinate configurations of many different representations
of the software product (e.g., source code, relocatable code, executable code, and documentation).
In practice, the ways in which SCM disciplines are performed will be different for the various kinds of
software being developed (e.g., commercial, embedded, original equipment manufacturer).
The degree of formal documentation required within and across different lifecycle management phases
(e.g., research, product development, operations, and maintenance) will also vary.
The effectiveness of the SCM system increases in proportion to the degree that its disciplines are an explicit
part of the normal day-to-day activities of those involved in the software development and maintenance
efforts.
Figure below presents a diagram showing how the SCM disciplines interact at the highest level.
The Software Configuration Management Plan (SCM Plan) provides information on the requirements and
procedures necessary for the configuration management activities of the software engineering project.
It specifies who will be responsible for accomplishing the planned activities, what activities will be
performed, when the activities will be performed in coordination with the project schedule, and what tools
and human resources will be required to perform the activities.
The first step in the SCM system is to identify the Configuration Items to be controlled and, as the
project progresses, to identify the structure of the intermediate or complete software products.
Elements to be controlled will normally include the software code and associated documentation.
Documents could include requirements specifications, designs, user guides, test suites, test results, and
user lists.
Baselines are defined and created in accordance with the SCM Plan and the phase of the project’s
lifecycle.
A baseline is a specification or product that has been formally reviewed and agreed upon, that serves
as the basis for further development, and can only be changed through formal change control
procedures.
A baseline is like a snapshot of the aggregate of software components as they exist at a given point in
time.
During each phase of the software lifecycle, configuration items that are completed and accepted by
the approval authority become the baseline for that phase.
Any addition, alteration, or deletion to the approved baseline is deemed a change, and is subject to
change control.
Baselines, plus the approved changes from those baselines, constitute the current configuration
identification.
Each of the baselines established during a software lifecycle controls subsequent software
development. The following are typical configuration baselines that are established during the life of
a software project.
Functional Baseline - Established by the acceptance or approval of the software or system
specification. This baseline typically corresponds to the completion of the software requirement
review.
Developmental Baseline – Established by the approval of the technical documentation that defines
the functional and detailed design (including documentation of interfaces and databases for the
computer software). Normally, this baseline corresponds to the time frame spanning the
preliminary design review and the critical design review.
Product Baseline – Established by approval of the product specification following completion of the
last formal functional configuration audit (FCA).
Once configuration items have been identified and baselined, Configuration Control provides a system
to initiate, review, approve, and implement proposed changes. Each engineering change or problem
report that is initiated against a formally identified configuration item is evaluated to determine its
necessity and impact. Approved changes are implemented, testing is performed to verify that the
change was correctly implemented and that no unexpected side effects have occurred as a result of the
change, and the affected documentation is updated and reviewed.
The discipline of Status Accounting collects information about all configuration management
activities. The status account should be capable of providing data on the status and history of any
configuration item. The information maintained in Status Accounting should enable the rebuild of any
previous baseline.
Audits and reviews are conducted to verify that the software product matches the configuration item
descriptions in the specifications and documents, and that the package being reviewed is complete.
Any anomalies found during audits should be corrected and the root cause of the problem identified
and corrected to ensure that the problem does not resurface.
The audit must also establish that the correct version and revision of each part are included in the
product baseline and that they correspond to information contained in the baseline’s configuration
status report.
Configuration Identification
The first step in the SCM system is the identification of the items to be managed and the specification
of the management authority responsible for each item.
This is a critical step in the system since the identification scheme is employed throughout the lifecycle
of the software product. The levels of authority assigned responsibility for each configuration item will
vary depending on the complexity of the software product, the size of the development team, and the
management style of the responsible organization.
Configuration identification consists of selecting the configuration items and recording their functional
and physical characteristics as set forth in technical documentation such as specifications, drawings,
and associated lists. The following are examples of items managed in the SCM system.
• Management plans
• Specifications (requirements, design)
• User documentation
• Test plans, test design, case, and procedure specifications
• Test data and test generation procedures
• Support software used in development, even though not part of the delivered software product
• Data dictionaries and various cross-references
• Source code (on machine-readable media)
• Executable code (the run-time system)
• Libraries
• Databases (data that are processed and data that are part of a program)
• Maintenance documentation (e.g., listings, detail design descriptions)
Effective management of the development of a software product requires careful definition of the
configuration items.
Changes to these items also need to be defined since these changes, along with the project baselines,
specify the evolution of the software product. SCM includes all of the entities of the software product
as well as their various representations in documentation. The entities are not all subject to the same
SCM disciplines at the same time.
Configuration Control (Change Control)
The primary function of configuration control is to provide the administrative mechanism for initiating,
preparing, evaluating, and approving or disapproving all change proposals throughout the software
lifecycle.
Configuration control ensures that changes to configuration items are controlled and that consistency
between component parts of a system is maintained. It reduces the possibility of making changes that
may later adversely affect functionality.
Figure below provides a diagram of the configuration control process.
Documentation
The Software Change Request (SCR) is one of the major tools used for identifying and coordinating
changes to software and documentation.
The SCR is used to capture important information about the change and to track the status of a change
from its proposal to its eventual disposition.
A typical SCR form contains a narrative description of the change or problem, information to identify
the source of the report, and some basic information to aid in evaluating the report.
An SCR is submitted only against baselined software or documentation. An SCR may be submitted by
anyone associated with the project, but usually is submitted by a member of the software development
team.
The Software Change Authorization (SCA) form is used to control changes to all software and
documents under SCM control and software and documents that have been released to SCM.
The SCA form is used by software developers to submit changes to software and documents to SCM
in order to update the master library.
Several reports may be needed to support the configuration status accounting needs. Typical reports
include a list of all SCRs by status (e.g., open, closed); a monthly summary of the SCRs and SCAs; all
SCRs submitted per unit or software component within a selected range of submittal dates; the status
of all documentation under SCM control; and a version description document. [3]
Technical Reviews
Formal technical reviews are performed throughout the project, although SCM disciplines generally
do not initiate or direct reviews. Quite often the mechanisms used by SCM to process changes are used
to organize and process items in a review conducted by other functions such as Software Quality
Assurance. SCM supports reviews and provides the mechanism for acting on changes resulting from
the reviews.
Release Processing
Often the recipient will need installation instructions and other data concerning the release.
The installation instructions should define the environment in which the software product will run—
both hardware and software.
The release package typically includes documentation (often referred to as the version description
document). The more critical or the larger the software product, the more complete the documentation
needs to be. SCM verifies that the release package is complete and ready to be delivered.
Once a release is completed, a configuration baseline should be captured that associates components
and their versions with the release identity of the whole product.