SCM: Concepts and Definitions
•SCM is the discipline for systematically controlling
the changes that take place in the evolution of
software systems.
•SCM is an umbrella activity that is applied
throughout the software process.
•SCM activities are developed to –
–Identify change
–Control change
–Ensure that change is being properly implemented, and
–Report change to others who may have an interest
2
SCM: Concepts and Definitions
•SCM is a set of activities that have been developed to
manage change throughout the life cycle of
computer software.
•SCM can be viewed as a software quality assurance
(SQA) activity that is applied throughout the
software process.
3
SCM: Concepts and Definitions
•IEEE Definition
•“ Configuration management is the process of
identifying & defining the items in the system,
controlling the changes to these items throughout
their life cycle, recording and reporting the status of
items and change requests, and verifying the
completeness and correctness of items”
4
SCM: Concepts and Definitions
“SCM is the discipline of identifying the configuration
of a system at discrete points in time for purposes of
systematically controlling changes to this
configuration and maintaining the integrity and
traceability of this configuration throughout the
system life cycle.”
- ”Bersoff, Henderson and Siegel”
5
SCM: Why is it important?
•If you don’t control change, it controls you. And
that’s never good…
•It is very easy for a stream of uncontrolled changes
to turn a well-run project into chaos.
•That’s why, SCM is an essential part of good project
management and solid software engineering
practice.
6
SCM: Why is it important?
•Poor configuration management or lack of it often causes the
most frustrating software problems.
Examples- missing source code, an inability to determine
what happened to a particular program or data, an inability to
track why, when, who made a change, and difficulty in finding
out why programs that were working suddenly stopped
working. These type of problems are frustrating and difficult
to fix.
–A difficult bug that was fixed suddenly reappears
–A program that was working mysteriously stopped
working
–A developed & tested feature is missing
7
SCM: Why is it important?
•SCM helps reduce these problems by coordinating
the work & effort of many different people working
on a common project.
•SCM plays an important role in the software
development process –analysis, design,
development, testing, and maintenance –by ensuring
that what was designed is what was built.
•SCM system should be carefully designed, properly
implemented, and practiced systematically and
willingly.
8
9
What is a “software
configuration”?
programs documents
data
The pieces
What is a “software configuration”?
•Software Configuration: May be defined as the functional and
physical characteristics of the software as set forth in
technical documentation or achieved in a product.
•A software development project produces the following
items:
–Programs
–Documentation
–Data
These items are collectively called a software configuration.
10
Bersoff’s First Law of System Engineering
•“No matter where you are in the system life cycle,
the system will change, and the desire to change it
will persist throughout the life cycle.”
11
A SCM Scenario: roles & responsibilities
A typical CM operational scenario involves-
•Project Manager
–In charge of a software group, ensures that the product is developed
within a certain time frame & budget, sees SCM as an auditing
mechanism
•Configuration Manager
–In charge of the CM procedures & policies, sees SCM as a controlling,
tracking & policy making mechanism
•Software Engineer
–Responsible for developing & maintaining the software product, sees
SCM as a changing, building & access control mechanism
•Customer
–Uses the product, sees SCM as a quality assurance mechanism
12
SCM: The Process
What are the major functional elements of Software
Configuration Management?, or
What are the major activities of SCM?
•Basically there are four major activities of SCM –
1)Configuration Identification
2)Configuration Change Control
3)Configuration Status Accounting
4)Configuration Auditing
13
[1] Configuration Identification
•Configuration identification is the process of selecting the
configuration items (CIs) for a system and recording their
functional and physical characteristics in technical
documentation.
•Configuration identification is the process whereby a system
is separated into uniquely identifiable components for the
purpose of SCM.
•Goals –
–Ability to identify the components of a system throughout its life cycle
–Provide traceability between the software and related products
14
[1] Configuration Identification
How many Configuration Items (CIs) should be selected for
system? Select too many CIs ? Select too few CIs ?
•Selection of CIs needs to be correct: You should not select
more nor less than what is necessary.
•But, there is no magic formula !
•No fixed rules governs CI selection or dictate the optimum
number of CIs for a particular system.
•Selection of CIs is a management decision based on
experience and good judgment.
15
[2] Configuration (Change) Control
•Configuration control is the element of configuration
management consisting of the evaluation, coordination,
approval or disapproval, and implementation of changes to
configuration items.
–Of the SCM functions, configuration control is performed most often
and is perhaps the most visible element of configuration
management.
–Configuration control involves a lot of people and a lot of procedures,
making it difficult to manage.
–Configuration control activities will increase as the project evolves.
–An orderly change process is necessary to ensure that only approved
changes are implemented into any software.
16
[2] Configuration (Change) Control
Configuration Change Control Steps: The following steps
mentioned here are generic & will vary from one company to
another and even from one project to another –
1)Change Initiation
2)Change classification
3)Change evaluation/analysis
4)Change disposition
5)Change implementation
6)Change verification
7)Baseline change control
17
[3] Configuration Status Accounting
•Status Accounting is an element of configuration
management that consists of the recording &
reporting of information needed to effectively
manage a software system and its characteristics.
This information includes –
–A listing of approved configuration identifications
–Status of proposed changes to the configuration
–Implementation status of approved changes
–Status of pending or open change requests and problem
reports
18
[3] Configuration Status Accounting
•Status Accounting is the record-keeping element of SCM.
•Status Accounting provides access to accurate, timely information
about a product & its documentation throughout product life cycle.
• Status Accounting plays a vital role in the efficient management
and control of projects by providing the necessary information to
project management & project team.
•Status Accounting records are the means for SCM to report the
state of the software product’s development to:
–The project management
–The company management
–The customer
19
[4] Configuration Auditing
•Configuration Auditing verifies that the software product is
built according to the requirements, standards, or contractual
agreement.
–Once the software has been designed, developed, and tested, it is
necessary to establish that the software product has been built in
accordance with the requirements and that the software is correctly
represented in the documentation that is shipped along with the
software.
–A configuration audit is a check to verify that the product package
contains all of the components it is supposed to contain & performs as
promised.
–Configuration audits are performed after software integration &
testing.
20
Software Maintenance vs. SCM
Software Maintenance: A set of activities that occur
after delivery of the software.
SCM: Begins when a software project begins
and lasts till the software is taken out of operation.
21
Baseline
Definition:
“A specification or product that has been
formally reviewed and agreed upon, that
thereafter serves as the basis for further
development, and that can be changed only
through formal change control procedures.”
-- IEEE Std. 610.12-1990
22
Baseline
•The configuration of software at a discrete point in time
is known as a baseline.
•A baseline is an SCM concept that helps us control
change.
•A baseline is a set of software configuration items (SCIs)
and the relationship between them. So, once a baseline
is established, the CIs in the baseline can be changed
only through a formal change management procedure.
•A baseline is analogous to the kitchen doors(IN-OUT) in
the restaurant.
23
Baseline
•The most common software baselines:
–System Specification
–Software Project Plan
–Software Requirements Specification
–User Manual
–Design Specification
–Source Code Listing
–Test Plan and Procedures; test cases and recorded results
–Operational and Installation Manuals
–Standards and Procedures for Software Engineering
24
Configuration Item (CI)
•Define(IEEE) : A CI is an aggregation of hardware or
software or both that is designated for configuration
management and is treated as a single entity in the
configuration management process.
–To identify, control, and manage change, one must first
identify which items in the project will be subject to
change. So we must first identify the items that we plan to
control and manage. These items are called configuration
items(CIs)
–The SCM system is supposed to record the functional &
physical properties of these CIs
25
Configuration Item (CI)
•A variety of items, in addition to code, are controlled by
SCM. Software items with the potential to become CIs
include plans, specifications and design documentation,
testing materials, software tools, source and executable
code, code libraries, data & data dictionaries, and
documentation for installation, maintenance,
operations, and software use.
•For example, if a system contains several programs, each
program & its related documentation and data might be
designated a CI.
26
CI Examples
•System specification
•Project plan
•SCM plan
•Software requirements
specification
•User manual
•System Design Document
•Program Source Code
•System Test Plan
•Operation and installation
manuals
•Executable program
•Database Design Documents
•Software tools
•Maintenance documents
•Standards and procedures
for SE
27
SCM database/Repository
•The characteristics of each CI and their interdependencies
with one another are recorded in the SCM database
(Repositories in the case of SCM tools).
•SCM database is used to record all relevant information
related to configurations. The principle functions of such a
database are to assist in assessing the impact of system
changes and to provide information about the SCM process.
•In addition to the details about the CIs, the database contains
information about change requests(which are also CIs), their
status, and information regarding the review & audit process.
28
Version control
Version Control (VC) is a means to identify and manage
configuration items(CIs) as they change over time, usually
provided by a software tool designed for configuration
management.
•VC combines procedure & tools to manage different versions.
•VC is simply the automated act of tracking the changes of a
particular file over time.
•VC gives the ability to trace the history of all CIs in a system
and to re-create any previous version of a file.
•Concurrent Versions System(CVS) is a widely used tool for
version control.
29
Change Control
•Change Control is the identification and tracking of changes
to CM-controlled CIs.
•Change control is a procedural activity that ensures quality
and consistency as changes are made to a configuration
object.
•The Change Control process begins with a Change Request
(CR) , leads to a decision to Make or reject the request for
change, and Culminates with a controlled update of the
SCI that is to be changed.
30
Version Control vs. Change Control
•Are version control and change control the same
thing?
–Answer is “no”
–Version control can be viewed as an SCM function that
occurs as a consequence of change control.
31
Change Request
•Change Request (CR) is a formal document that
is prepared for a request to change a specification in
accordance with the CM plan change procedure.
–Change Request(CR) is a request to make a change or
modification.
–A change request form(paper or electronic) is used to
initiate a change and contains the details of the change
such as the name of the change originator, item to be
changed, and other details of changes.
32
Release
•Release: A configuration management(CM) action
whereby a particular version of software is made
available for a specific purpose.
–A release is a version that is distributed (outside the
development activity) to customers
–A release consists of more than just the executable code.
It includes installation files, data files, setup programs, and
electronic & paper documentation.
–A release includes new functionality or features or some
fixes for the faults found by customers, developers, or
testers
33
Version
•Version: is an instance of a system that differs,
in some way, from the other instances.
–Once baselined, a version can not be changed without
creating a new version
–New versions of the system may have additional
functionality or different functionality
–Some versions can be functionally equivalent but may be
designed for different hardware and/or software
environments. They are called Variants.
34
Build
•Build: A version of software that meets a specified
subset of the requirements that the completed
software will meet.
35