SOE
managing change in system development projects:
configuration management
2
understanding the problem of change
• change is one of the most fundamental characteristics in any
software development process (Leon 2000) – it is intrinsic and
must be accepted as a fact of life (Lehman 1980)
• changing software is very easy, but if it is done at will, results
in chaos (Leon 2000)
• effective projects control changes, whereas ineffective
projects allow changes to control them (McConnell 1998)
• the level and formality of control should vary according to
project conditions (Whitgift 1991)
sources of change
• requirements change through misunderstanding, better
customer understanding or situational change (= requirements
churn)
• analysis clarification with improving developer understanding
• design improvements, evolutionary design changes, code
improvement, refactoring
• bug fixes during test
• improvements and new functionality after release
• version, variant and implementation change
• component and code reuse
SOE: configuration management 4
change sources: system evolution
initial system
mobile PC
Windows XP
server desktop Linux
SUN ...
system variants
bug + issue fixes
1.0 1.1 1.3
2.0 2.1 2.3
alpha beta
SAP to 2006
SOE: configuration management 6
change sources: system evolution
standard system
implementation 1 implementation 2
...
implementation n
SAP r6.20
implementation 1 implementation 2
...
implementation n
SAP r7.0
example: a simple
(but late) change
request
SOE: configuration management 8
change request
the customer requests a new field on a screen
requirements specification design specification
test plan
system documentation user manual
model code database
reports
test scripts and cases presentation code
XML
component and system interfaces
a simple (but late) change request
document -ation change
recode
test
rewrite unit test debug system
build system test change
request
the customer requests a new field on a screen
change problems
• change inherent in the life of the system
• many developers working concurrently on many (hundreds or
thousands of) documents and files
• probability of introduction of further errors and
communication problems
• system must be built and tested, preferably early
• many possible combinations of version, implementation and
variant releases
SOE: configuration management 10
software configuration management (SCM)
“the purpose of Software Configuration Management is to establish and maintain the integrity of the products of the software project throughout the project's software life cycle. Software Configuration Management involves identifying configuration items for the software project, controlling these configuration items and changes to them, and recording and reporting status and change activity for these configuration items.” SEI 2000a
some simple CM scenarios
• developer A wants to see latest version of foo.c and its change history since last week
• B needs to revert foo-design.doc to its version two days ago
• B makes a release of the project and he needs to know what items to include and which version
• A lives in New Dehli, India and B lives in Boston, US - they want to work on HelloW.java together
• in the latest release, a serious bug is found and manager C wants to track what changes caused the bug, who made those changes and when
• an innocent-looking change 2 days before release causes major test
problems – the whole design is rolled back to its state before the change
• C wants to get reports about current project progress to decide if she needs to hire more programmers and delay the alpha release
a set of practices:
- change control - version control
- release management
supported by tools:
- configuration database - source code repository - build tools
SCM terminology
• configuration item – any development output for which change control is considered necessary
• baseline – a collection of configuration item(s) which is reviewed and approved, and thus under change control – often a project milestone
• revision – a change to a baseline
• configuration – a particular assembly of configuration items (such as all the source code files for release 3.0)
• version – a configuration adding repair or new functionality
• variant – a configuration with similar functionality on a different platform
• release – a version or variant distributed to users
identification control
status
accounting audit
CM activities
• identification
• identifying the items to be managed, establishing naming conventions (e.g. PCL-
tools/edit/forms/display/AST-interface/code), storage and access
• control
• change evaluation
• change coordination
• change approval
• change implementation
• status accounting
• tracking of status of configuration items
• audit
CM practice example
SOE: configuration management 16
change request form
Change Request Form
Pr oject: Proteus/PCL-T ools Number: 23/02 Change r equester: I. Sommerville Date: 1/12/02
Requested change: When a component is selected from the structure, display the name of the file where it is stored.
Change analyser: G. Dean Analysis date: 10/12/02 Components affected: Display-Icon.Select, Display-Icon.Display Associated components: FileT able
Change assessment: Relatively simple to implement as a file name table is available. Requires the design and implementation of a display field. No changes to associated components are required.
Change priority: Low Change implementation:
Estimated effort: 0.5 days
Date to CCB: 15/12/02 CCB decision date: 1/2/03 CCB decision: Accept change. Change to be implemented in Release 2.1.
Change implementor: Date of change:
Date submitted to QA: QA decision:
Date submitted to CM:
change
control board (CCB) review
change
implementation:
code,
documentation
baseline update
managing collaborative working: version
control, revision control
SOE: configuration management 18
• solutions:
• pessimistic: file locking
• optimistic: version merging
version control: terminology
• checkout – creates local working copy of file
• change (diff, delta) – modification to a file under version control
• commit – write or merge changes to repository
• merge – 2 or more sets of changes applied to repository file
• delta compression – retains the only the differences between successive versions of files
• trunk – mainline development stream
• branch – an alternative development stream
• tag/label – point in time snapshot of group of files
SOE: configuration management 20
version management tools
• version and release identification
• system assigns identifiers automatically when a new version is submitted to the system
• storage management
• system stores the differences between versions rather than all the version code
• change history recording
• record reasons for version creation
• independent development
• parallel working on different versions
• project support
• can manage groups of files associated with a project rather than just single files
trunk and branch, forward and
reverse integration
example version control tool: Subversion
SOE: configuration management 22
That one is more detailed (From Subversion (svn) quickstart):
system building
b u i l d s c r i p t
s o u r c e c o d e c o m p o n e n t
v e r s i o n s
o b j e c t c o d e c o m p o n e n t s
e x e c u t a b l e s y s t e m s y s t e m
b u i l d e r version c o m p i l e r s
m a n a g e m e n t s y s t e m
l i n k e r
• compiling and linking software components into an executable system
• different systems built from different combinations of components
system building tools
• building a large system is
computationally expensive and may take several hours
• hundreds of files may be involved
• system building tools may provide:
• a dependency specification language and interpreter
• tool selection and instantiation support
• distributed compilation
• derived object management Example: SCons
c o m p
s c a n . o
s c a n . c
d e f s . h s y n . o
s y n . c
s e m . o
s e m . c
c g e n . o
c g e n . c
release management
• release: not just a set of executable programs, may also include:
• configuration files defining how the release is configured for a particular installation;
• data files needed for system operation;
• an installation program or shell script to install the system on target hardware;
• electronic and paper documentation;
• packaging and associated publicity
• release creation involves collecting all files and documentation required to create a system release
• configuration descriptions for different hardware and installation scripts
• the release must be documented to record exactly what files were used to create it - this allows it to be re-created if necessary
many varieties of integrated tool support
SOE: configuration management 26
Rational ClearCase Rational BuildForge
• configuration management is the management of system change to software products
• a formal document naming scheme should be established and documents should be managed in a database
• the configuration data base should record information about changes and change requests
• a consistent scheme of version identification should be established using version numbers, attributes or change sets
• system releases include executable code, data, configuration files and documentation
• system building involves assembling components into a system
• case tools are available to support all CM activities
• case tools may be stand-alone tools or may be integrated systems which integrate support for version management, system building and change
traditional configuration management
Agile CM
SOE: configuration management 28
test scripts
code
automated daily build
continuous integration
sandbox version
control
release
environment
traditional and agile configuration management
traditional agile
focus documents and code code
activities CM practice, change
management, version control, automated build
version control, automated build
responsible CM team, CM board programmers
process formal, managed informal and integrated
with practice environment
outcome CM audit (documented
product control)
next release