Chapter 22
Software Configuration Management
Slide Set to accompany
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
Slides copyright © 1996, 2001, 2005, 2009 by Roger S. Pressman
For non-profit educational use only
May be reproduced ONLY for student use at the university level when used in conjunction
with Software Engineering: A Practitioner's Approach, 7/e. Any other reproduction or use is
prohibited without the express written permission of the author.
All copyright information MUST appear if these slides are posted on a website for student
use.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 1
What Are These Changes?
changes in
business requirements
changes in
technical requirements
changes in
user requirements other
documents
software models
Project
Plan
data
Test
code
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 2
The Software Configuration
programs documents
The pieces data
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 3
What is Software Configuration Management?
• Definition Software Configuration Management:
• A set of management disciplines within a software
engineering process to develop a baseline
• Software Configuration Management encompasses the
disciplines and techniques of initiating, evaluating and
controlling change to software products during and
after a software project
• Standards
• IEEE 828: Software Configuration Management Plans
• IEEE 1042: Guide to Software Configuration
Management.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Configuration Management Activities
• Configuration item identification
• Modeling the system as a set of evolving components
• Promotion management
• the creation of versions for other developers
• Release management
• the creation of versions for clients and users
• Change management
• the handling, approval & tracking of change requests
• Branch management
• the management of concurrent development
• Variant management
• the management of synchronized versions
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Terminology
• We will define the following terms
• Baseline
• SCM Directories
• Version
• Revision
• Release
The definitions for these terms follow the IEEE
standard.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Terminology
• Release: The formal distribution of an approved
version
• 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
• Revision: Change to a version that corrects only
errors in the design/code, but does not affect
the documented functionality.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Terminology: Baseline
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: The API has been 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 8
Naming Schemes for Baselines
• Many naming scheme for baselines exist (1.0,
6.01a, ...)
• A 3 digit scheme is quite common:
7.5.5
Major, Minor, Small Revision
External Release Internal Release (Developer)
(Customer) (Developer)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Transitions between Baselines
Baseline A (developmental)
Baseline B (functional, first prototype)
Baseline C (product, beta test)
Release
How do we manage changes in baselines?
=> Change Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Time 10
Change Management
• Change management is the handling of change
requests
• The general change management process:
• The change is requested
• The change request is assessed against requirements and
project constraints
• Following the assessment, the change request is accepted
or rejected
• If it is accepted, the change is assigned to a developer
and implemented
• The implemented change is audited.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Controlling Changes
• Two types of controlling change:
• Promotion: The internal development state of a
software is changed
• Release: A changed software system is made visible
outside the development organization.
User
Programmer Master Software
Promotion Directory Release Repository
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Terminology: SCM Directories
• Programmer’s Directory (IEEE: Dynamic Library)
• Library for holding newly created or modified software
entities
• The programmer’s workspace is controlled by the
programmer only
• Master Directory (IEEE: Controlled Library)
• Manages the current baseline(s) and for controlling
changes made to them
• Changes must be authorized
• Software Repository (IEEE: Static Library)
• Archive for the various baselines released for general
use
• Copies of these baselines may be made available to
requesting organizations.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Standard SCM Directories
• Programmer’s Directory
• (IEEE Std: “Dynamic Library”)
• Completely under control of one
programmer Promotion
• Master Directory Central source
• (IEEE Std: “Controlled Library”) code archive
• Central directory of all promotions
Release
• Software Repository
• (IEEE Std: “Static Library”)
Foo’95 Foo’98
• Externally released baselines.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Change Policies
• The purpose of change policies is to guarantee
that each promotion or release conforms to
commonly accepted criteria.
• 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.”
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15