Handout1 Introduction SFW Configuration Management
Handout1 Introduction SFW Configuration Management
Configuration Management
Bruegge, B. & Dutoit A. H.
Why Software Configuration Management ?
The problem:
• Multiple people have to work on software that is changing
• More than one version of the software has to be
supported:
– Released systems
– Custom configured systems (different functionality)
– System(s) under development
• Software must run on different machines and operating
systems
Need for coordination
• Software Configuration Management
– manages evolving software systems
– controls the costs involved in making changes to a system
Why Software Configuration Management ?
Definition: A set of management disciplines within the
software engineering process to develop a baseline.
Description: Software Configuration Management
encompasses the disciplines and techniques of
initiating, evaluating and controlling change to
software products during and after the software
engineering process.
Standards (approved by ANSI)
• EEE 828: Software Configuration Management Plans
• IEEE 1042: Guide to Software Configuration
Management
SCM is a Project Function
♦ SCM is a Project Function (as defined in the SPMP)
with the
goal to make technical and managerial activities more
effective.
♦ Software Configuration Management can be
administered in
several ways:
– A single software configuration management team for
the whole organization
– A separate configuration management team for each
project ! Software Configuration Management
distributed among the project members
– !Mixture of all of the above
CM Activities and rules
♦ Software Configuration Management Activities:
1. Configuration item identification
2. Promotion management
3. Release management
4. Branch management
5. Variant management
6. Change management
♦ No fixed rules:
– Activities are usually performed in different ways
(formally, informally) depending on the project
type and life-cycle phase (research, development,
maintenance
Terminology
♦ We will define the following terms
1. Configuration Item
2. Baseline
3. SCM Directories
4. Version
5. Revision
6. Release
The definition of the terms follows the IEEE standard.
Different configuration management systems may use
different terms.
Example: CVS configuration management system used in
our projects uses terms differing from the IEEE standard.
Terminology: Configuration Item
Configuration Item “An aggregation of hardware, software, or
both, that is designated for configuration management and
treated as a
single entity in the configuration management process.”
– Software configuration items are not only program code
segments but all type of documents according to
development, e.g.
1. all type of code files
2. drivers for tests
3. analysis or design documents
4. user or developer manuals
5. #system configurations (e.g. version of compiler used)
6. In some systems, not only software but also hardware
configuration items (CPUs, bus speed frequencies) exist!.
Finding Configuration Items
Finding Configuration Items
♦ Large projects typically produce thousands of entities (files,
documents, data ...) which must be uniquely identified.
♦ Any entity managed in the software engineering process can
potentially be brought under configuration management control
♦ But not every entity needs to be under configuration
management control all the time.
♦ Two Issues:
1. What: Selection of Configuration Items
– " What should be under configuration control?
2. ! When: When do you start to place entities under configuration
control?
♦ Conflict for the Project Manager:
1. Starting with CIs too early introduces too much bureaucracy
2. Starting with CIs too late introduces chaos
Finding Configuration Items …
Some items must be maintained for the lifetime of the software.
This includes also the phase, when the software is no longer
developed but still in use; perhaps by industrial customers who
are expecting proper support for lots of years.
♦ An entity naming scheme should be defined so that related
documents have related names.
♦ Selecting the right configuration items is a skill that takes
practice
1. Very similar to object modeling
2. Use techniques similar to object modeling for finding CIs!
– Find the CIs
– "Find relationships between CIs
Terminology: Version
The initial release or re-release of a
configuration item associated with a
complete compilation or recompilation
of the item.
Different versions have different
functionality.
Terminology: Baseline
Terminology: Baseline
“A specification or product that has been formally
reviewed and agreed to by responsible management,
that thereafter serves as the basis for further
development, and can be changed only through formal
change control procedures.”
Examples:
Baseline A: All the API have completely been defined;
the bodies of the methods are empty.
Baseline B: All data access methods are implemented
and tested.
Baseline C: The GUI is implemented.
More on Baselines
More on Baselines
♦ As systems are developed, a series of
baselines is developed, usually after a
review (analysis review, design review,
code review, system testing, client
acceptance, ...)
Developmental baseline
Functional baseline
Product baseline (product)
" Goal: Coordinate sales and
More on Baselines
Developmental baseline (RAD, SDD, Integration Test, ...)
• Goal: Coordinate engineering activities.
Functional baseline (first prototype, alpha release, beta
release)
• Goal: Get first customer experiences with functional
system.
Product baseline (product)
• Goal: Coordinate sales and customer support.
♦ Many naming scheme for baselines exist (1.0,
6.01a, ...)
♦ A 3 digit scheme is quite common:
A 3 digit scheme is quite common:
Change management
Change management
♦ Change management is the handling of change
requests
• A change request leads to the creation of a new release
♦ General change process
• The change is requested (this can be done by anyone
including users and developers)
• The change request is assessed against project goals
• Following the assessment, the change is accepted or
rejected
• If it is accepted, the change is assigned to a developer and
implemented
• The implemented change is audited.
Change management Project complexity
– The complexity of the change
management process varies with the
project.
– Small projects can perform change
requests informally and fast while
complex projects require detailed
change request forms and the official
approval by one more managers.
Change Policies
Change Policies
♦ Whenever a promotion or a release
is performed, one or more policies
apply. The purpose of change policies
is to guarantee that each version,
revision or release (see next slide)
conforms to commonly accepted
criteria.
Change policies examples
♦ Examples for change policies:
No developer is allowed to promote
source code which cannot be
compiled without errors and
warnings.”
No baseline can be released
without having been beta-tested by
at least 500 external persons.”
Terminology: Version vs. Revision vs. Release
Terminology: Version vs. Revision vs.
Release
♦ Version:
!An initial release or re-release of a
configuration item associated with a
complete compilation or
recompilation of the item. Different
versions have different functionality.
Terminology: Version vs. Revision vs. Release …
Terminology: Version vs. Revision vs.
Release
♦ Revision:
Change to a version that corrects only
errors in the design/code, but does not
affect the documented functionality.
o For example is MS windows 2010 a new
version or new revision compared to MS
windows2007
♦ Release:
The formal distribution of an approved
Software SCM Planning
Software SCM Planning
♦ SCM planning starts during the
early phases of a project.
♦ The outcome of the SCM planning phase
is the Software Configuration Management
Plan (SCMP) which might be extended or
revised during the rest of the project.
♦ The SCMP can either follow a public
standard like the IEEE 828, or an internal
(e.g. company specific) standard.
SCM Tools
Tools for SCM
♦ SCM is normally supported by tools with
different functionality.
♦ Examples:
RCS (Revision control system)
– very old but still in use; only version control system
CVS (Concurrent Version Control)
based on RCS, allows concurrent working without locking
CVSWeb: Web Frontend to CVS
Perforce
– Repository server; keeps track of developer’s activities
ClearCase
" Multiple servers, process modeling, policy check mechanisms
Summary
♦ Software Configuration Management:
Important part of project management to
manage evolving software systems and
coordinate changes to them.
♦ Software Configuration Management
consists of several activities:
– Promotion and Release management (Covered
today)
– Branch, Variant and Change Management
([Bruegge-Dutoit])
Summary …
♦ Public standard for SCM plans: IEEE 828.
♦ The standard can be tailored to a particular
project:
– Large projects need detailed plans to be successful
– Small projects should not be burdened with the
bureaucracy of detailed SCM plans
♦ SCM should be supported by tools. These range
from
– Simple version storage tools
– Sophisticated systems with automated procedures
for policy checks and support for the creation of
SCM documents