03ter - Software Configuration Management
03ter - Software Configuration Management
Configuration Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Page 1
Why Software Configuration Management ?
♦ The problem:
w Multiple people have to work on software that is changing
w More than one version of the software has to be supported:
t Released systems
t Custom configured systems (different functionality)
t System(s) under development
w Software must run on different machines and operating systems
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
♦ Definition:
w A set of management disciplines within the software engineering process
to develop a baseline.
♦ Description:
w Software Configuration Management encompasses the disciplines and
techniques of initiating, evaluating and controlling change to software
products during and after the software engineering process.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Page 2
Managing Software Configurations
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Page 3
♦ No fixed rules:
w SCM activities are usually performed in different ways (formally,
informally)
w depending on the project type and life-cycle phase (research,
development, maintenance).
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Terminology
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Page 4
Terminology: Configuration Item
v Software configuration items are not only program code segments but all type of
documents according to development, e.g
➭ all type of code files
➭ drivers for tests
➭ analysis or design documents
➭ user or developer manuals
➭ system configurations (e.g. version of compiler used)
v In some systems, not only software but also hardware configuration items (CPUs,
bus speed frequencies) exist!
v Even a commercial product used in the system can be a configuration item
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Page 5
Finding Configuration Items (continued)
♦ 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;
♦ An entity naming scheme should be defined
so that related documents have related names.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Page 6
Possible Selection of Configuration Items
Once the Configuration Items are selected, they are usually organized in a tree
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
“The project”
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Page 7
Terminology: Version
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Terminology: Baseline
Examples:
Baseline A: All the APIs 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.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Page 8
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, ...)
w Developmental baseline (CIs: RAD, SDD, Integration Test, ...)
t Goal: Coordinate engineering activities
w Functional baseline (CIs: first prototype, alpha release, beta release)
t Goal: Get first customer experiences with functional system
w Product baseline (product)
t Goal: Coordinate sales and customer support
♦ Many naming scheme for baselines exist (1.0, 3.14159, 6.01a,, ...)
♦ A 3 digit scheme is quite common:
MacOS X 10.3.6
Baseline A (developmental)
Release
Page 9
Change management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Controlling Changes
Promotion Release
Policy Policy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Page 10
Terminology: SCM Directories
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
promote()
release()
“The project”
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Page 11
Let‘s Create a Model for Configuration Management
* Promotion Release
*
Master
Repository
Directory
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Version
* Promotion Release
*
Master Repository
Directory
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Page 12
Let‘s Create a Model for Configuration Management
*
Version
* Promotion Release
*
Master Repository
Directory
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Controlled item
Configuration Item
*
*
CM Aggregate Configuration item Version
* Promotion Release
*
Master Repository
Directory
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Page 13
Configuration Item Model (UML Class Diagram)
* Controlled
item
*
Configuration Version
CM Aggregate item
* Promotion Release
*
Master Repository
Directory
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Change Policies
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Page 14
Terminology: Version vs Revision vs Release
Version:
w The state of a configuration item or configuration aggregate at a well-
defined point in time.
w It is usually associated with a complete compilation or recompilation of the
item.
w Different versions usually have different functionality.
Revision:
w Change to a version that corrects only errors in the design/code, but does
not affect functionality.
Release:
w A version that has been made available externally.
w The formal distribution of an approved version.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Branch Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Page 15
Example: CVS version identification scheme
Main trunk CVS version identification scheme
<version> ::= <configuration item name>.<version identifier>
<version identifier> ::= <branch>.<revision>
MUE.1.1:Release <branch> ::= <version identifier>.<branch number> |
<branch number>
<branch number> ::= <nonnegative integer>
revised by
<revision> ::= <nonnegative integer>
MUE.1.2:Release derived from
Branch 1.2.1
revised by Branches are
MUE.1.3:Release
identified with
1.2.1.1:Release
the version
they were
merged with revised by
derived from
1.2.1.2:Release followed by a
released as
unique
MUE.2.0:Release
number
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Variant Management
♦ Variants are version that are intended to coexist
w Examples: variants for different platforms, variants released with
multiple levels of functionality
Page 16
Software Configuration Management Planning
♦ The SCMP can either follow a public standard like the IEEE 828, or
an internal (e.g. company specific) standard.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Page 17
Outline of a Software Configuration Management Plan
(SCMP, IEEE 828-2005)
1. Introduction 4. Schedule (WHEN?)
w Describes purpose, scope of w Establishes the sequence and
application, key terms and coordination of the SCM activities
references with project mile stones.
2. Management (WHO?) 5. Resources (HOW?)
w Identifies the responsibilities and w Identifies tools and techniques
authorities for accomplishing the required for the implementation of
planned configuration management the SCMP
activities 6. Maintenance
3. Activities (WHAT?) w Identifies activities and
w Identifies the activities to be responsibilities on how the SCMP
performed in applying to the will be kept current during the life-
project. cycle of the project.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Page 18
SCMP Section 2: Management
2.1 Organization
w Organizational context (technical and managerial) within which the SCM
activities are implemented. Identifies
t All organizational units (client, developers, managers) that participate in an SCM
activity
t Functional roles of these people within the project
t Relationship between organizational units
2.2. Responsibilities
w For each SCM activity list the name or job title to perform this activity
w For each board performing SCM activities, list
t purpose and objectives
t membership and affiliations
t period of effectivity, scope of authority
t operational procedures
3. Applicable Policies
w External constraints placed on the SCMP
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
♦ Configuration Manager
w Responsible for identifying configuration items. The configuration
manager can also be responsible for defining the procedures for creating
promotions and releases
♦ Change control board member
w Responsible for approving or rejecting change requests
♦ Developer
w Creates promotions triggered by change requests or the normal activities
of development. The developer checks in changes and resolves conflicts
♦ Auditor
w Responsible for the selection and evaluation of promotions for release and
for ensuring the consistency and completeness of this release
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Page 19
SCMP Section 3: Activities
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Page 20
3.2.1 Change Request
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Page 21
3.2.3 Change Approval or Disapproval
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Page 22
3.3 Configuration Status Accounting
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
♦ This section of the SCMP identifies audits and reviews for the
project.
w An audit determines for each Configuration Item if it has the required
physical and functional characteristics.
w A review is a management tool for establishing a baseline.
♦ For each audit or review the plan has to define:
w Objective
w The Configuration Items under review
w The schedule for the review
w Procedures for conducting the review
w Participants by job title
w Required documentation
w Procedure for recording deficiencies and how to correct them
w Approval criteria
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Page 23
Tailoring the SCMP
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
Page 24
Example SCM Plans (from the Guide IEEE 1042.1990)
Life-cycle Phase Project Type Size SCM Tools Life Span Writing Character of
Project
A
Complex system
Development Critical Medium Advanced Short Highly contracted to
Structured another company
B Small software
development
Concept Prototype Small Basic Short Informal project
C SCMP used by
Maintenance Support Large On-line Full Structured organization using
Software Life-Cycle contracted SW
D
Development of
All Commercial Small Integrated Full Informal embedded
Life-Cycle applicatåions
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50
Page 25
Tasks for the Configuration Manager (Summary)
SCMP following the IEEE 828-2005 standard
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 51
References
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 52
Page 26
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:
w Promotion and Release management
w Branch, Variant and Change Management
♦ Public standard for SCM plans: IEEE 828.
♦ The standard can be tailored to a particular project:
w Large projects need detailed plans to be successful
w Small projects should not be burdened with the bureaucracy of detailed
SCM plans
♦ SCM should be supported by tools. These range from
w Simple version storage tools
w Sophisticated systems with automated procedures for policy checks and
support for the creation of SCM documents.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 53
Page 27