A methodology to control and manage a software
development project
Syllabus
• Overview of Software Configuration Management :
History of Software Configuration Management‐
Software Configuration Management ‐ concepts and
definitions‐ Need and Importance of Software
Configuration Management – Basic Concepts.
03-08-2020 2
• A software or application number of physical entities
– Requirement documents and source codes
– Test cases, reports, test scripts
– Third party software etc.
• Course of creating the software series of reviews and
meetings happen and
These entities change very often
• Entities Quite complex and very dynamic
– manage and have control on these changes
03-08-2020 3
Why SCM?
• SDLC phases??
– What happens if it has not been documented
– Team didn’t document the configuration items
and changes
– they modified the code without any backup and
they were not able to recognize who has changed
the logic
“They had to rework for the same piece of
work which they did before”
03-08-2020 4
Why SCM
03-08-2020 5
Why SCM?
• Problems:
– Missing source code and changed component
libraries
– Incapability to do parallel development,
– an inability to track on why, when, and who made
a change
– difficulty in finding out why the program which
was working earlier has suddenly stopped
working
03-08-2020 6
Solution
• SCM with version control system
– They just have to take out the old version of code
from repository
– Able to work in parallel when they found a bug
– Easily identify who had changed the code
• moreover the person responsible would have been able
to revert it without any trouble
• SCM build & deployment tool
03-08-2020 7
What is SCM??
• Method of bringing control to the software
development and software management
process
• Enhances productivity and boosts application
quality
• Process used for more efficiently developing
and maintaining software accountability,
audit-ability, reproducibility, traceability and
coordination
• SCM
03-08-2020 8
What is SCM??
• A technique or discipline to systematically
manage, organize and control the changes in
the documents, codes, artifacts and other
entities during the development life cycle
03-08-2020 9
Features of Good SCM tools
• Ease for the developers to work
simultaneously
• Ensuring that the developers don’t over write
watch others code
• Maintenance: the history of everything
• Helps to know and understand exactly what to
test
03-08-2020 10
Tools
• VSS – Visual source safe
• CVS- Concurrent version system
• Rational Clear Case
• SVN- Subversion
• Perforce
• TortoiseSVN
• IBM Rational team concert
• IBM Configuration management version management
• Razor
• Quma version control system
• SourceAnywhere
03-08-2020 11
History
• 1950 CM for Configuration Management
• 1960 change and configuration control
• 1962 The US Air Force for the design of its jet
aircraft by authoring and publishing a standard
for CM, AFSCM-375-1
– Many standards by by US Military and DoD
• 1972IEEE, ANSI and ISO
– ANSI/IEEE standard is widely used
• 1986Concurrent Version System
• 2000 distributed revision control systems like
BitKeeper
03-08-2020 12
Myths about SCM
• A large scale software development can easily
succeed without SCM
• SCM will always slows down the SDLC process
• SCM is a difficult and lengthy activity
• SCM just provides version control system
• SCM can only benefits developers or the SCM
team
• Once SCM implemented then the SCM tools will
take care of everything
• One SCM tool is compatible with every project.
• SCM is too expensive and tough to maintain
03-08-2020 13
03-08-2020 14
Best Practises
• Always identify and store artifacts in a secure
repository.
• Control and audit changes for artifacts.
• Require Change Requests and Change Packages
• Organize versioned artifacts into versioned
components
• Create baselines at project milestones.
• Record and track requests for change.
03-08-2020 15
Who is involved in SCM
• Everyone on a software project is affected by
SCM virtually
– framers of the project plan to the final tester
• Development
– when iterations are informal and frequent
– Should know about a change except what it is, who
did it, and where it is
• Deployment and baselining
– changes must be prioritized
– The impact of a change upon all customers must be
considered
– A change control board (CCB) is the governing body
for modifications after implementation
03-08-2020 16
SCM Activities
03-08-2020 17
Basic Requirements/Activities for an
SCM
• Identification
• Control
• Auditing
• Status Accounting
03-08-2020 18
Basic Requirements for an SCM
• Identification Each software part is
labeled so that it can be identified from
different versions of the software parts in
the baseline
• Control means that proposed changes to
a Configuration Item (CI) are reviewed and,
if approved, incorporated into the software
configuration
03-08-2020 19
Basic Requirements for an SCM
• Auditing approved requested changes
have been implemented
• Status Accounting Reports and
documentation produced by the status
accounting function are the auditable entries
03-08-2020 20
Terms and Definitions
03-08-2020 21
Terms
• Software Configuration Item
• Baseline
• Configuration
• SCM Directories
• Version
• Revision
• Release
• Configuration Control Board – Group with the
responsibility for reviewing and approving
changes to baselines
“ Terms varies from one system to another”
03-08-2020 22
Terms and Definitions
1. Version
– Initial release or re-release of a CI associated with a
complete compilation or recompilation of the item
– Each versions have different functionality
2. Configuration
– A collection of all the elements of a baseline and a
description of how they fit together
3. Revision
– Change to a version that corrects only errors in the
design/code, but does not affect the documented
functionality
03-08-2020 23
Terms and Definitions
4. Promotion
– The internal development state of a software is changed
5. Release
– The formal distribution of an approved version
6. Change Request
– It is a formal report that contains the request for
modification in a CI
7. Repository
– It stores the various releases of a CM
item/aggregate
8. Workspace
– It is a library of promotions
03-08-2020 24
Terms and Definitions
9. Software Configuration Item
– A collection of software elements treated as a
unit/single entity for the purposes of SCM
• all type of code files
• drivers for tests
• analysis or design documents
• user or developer manuals
• system configurations
– Configuration managers defines configuration
items
03-08-2020 25
Terms and Definitions
• Software Configuration Item Issues:
– What: Selection of Configuration Items
• What should be under configuration control?
– When: When do you start to place entities under
configuration control?
• “Not too early too late”
03-08-2020 26
CI Identification
• Similar to object modelling for finding CIs!
• Find the CIs
• Find relationships between CIs
03-08-2020 27
Terms and Definitions
10. Baseline
– A specification or product that have been formally reviewed and
agreed upon and serve as a basis for further development
– Series of baselines are developed usually after a review
• analysis review, design review, code review, system testing, client
acceptance
– Serves as a point of departure or reference for next
developmental stage
– Eg:
• Baseline A All the API have completely been defined and the
methods are empty
• Baseline B All data access methods are implemented and tested
• Baseline C The GUI is implemented
03-08-2020 28
Baselines
• Series of Baselines
– Developmental/requirements baseline
• Coordinate engineering activities
– Functional/design baseline
• Get first customer experiences with functional system alpha
release, beta release
– Product baseline
• Coordinate sales and customer support
• Naming scheme
– Many naming scheme for baselines coexist like 1.0,6.01a
and so
– A three digit scheme is quite common
03-08-2020 29
Naming scheme (3 digit scheme)
03-08-2020 30
Baselines
• Changes in the baselines are handled by
change management
03-08-2020 31
SCM Directories
• Holds newly created or modified
software entities
• The programmer’s workspace is
controlled by the programmer
only
• Manages the current baseline(s) and
for controlling changes made to
them
• Entry is controlled, usually after
verification
• Changes must be authorized
• Archive for the various baselines
released for general use
• Copies of these baselines may be
made available to requesting
organizations
03-08-2020 32
Change management
• Handling of change requests
– change request leads to the creation of a new release
• change process
1. The change request is made
2. The change request is assessed against project goals
3. The change is accepted or rejected, based on step 2
4. If accepted, the change is assigned to a developer
and implemented
5. The implemented change is audited
03-08-2020 33
Change management
• Two types of controlling change:
– Promotion Change Policy
– Release “No baseline can be released without having been
beta-tested by at least 500 external persons.”
– Controlling changes can be done formally or
informally
• Change Policies:
– Guarantee that each version, revision or release
conforms to commonly accepted criteria.
03-08-2020 34
03-08-2020 35
CM procedure
03-08-2020 36
Promotion and Releases
• Promotion and Release are Operations on CIs
03-08-2020 37
Software Configuration Management
Activities
03-08-2020 38
SCM Activities
• Configuration item identification
– modelling of the system as a set of evolving
components
• Promotion management
– creation of versions for other developers
• Release management
– creation of versions for the clients and users
“ No fixed rules activities changes based on
project type and life cycle phases”
03-08-2020 39
SCM Activities
• Branch management
– handling, approval and tracking of change requests
• Variant management
– management of concurrent development
• Change management
– management of versions intended to coexist
“ No fixed rules activities changes based on
project type and life cycle phases”
03-08-2020 40
Importance of SCM
• SCM helps reduce problems by coordinating the work
and effort of many different people working on a
common project
• Plays important role in software development process –
analysis ,design, development, testing and maintenance
• The key role of SCM is to control change activity so that
problem can be avoided
– Status accounting information is used by project
leaders and managers to keep the project under
control
– SCM is not easy: one has to do lot of work to keep an
SCM system good shape, but the effort is worth it.
03-08-2020 41
Benefits of SCM
• SCM system has several benefits,
– S/W development productivity
– Easier handling of software complexity
– Improved security
– Higher software reuse
– Lower s/w maintains costs
– Better quality assurance
– Reduction of defects and bugs
– Faster problem identification and bug fixes
– Process-dependent development rather than person-
dependent development and assurance.
03-08-2020 42
Pitfalls
• Communication breakdown problem
– controlling and managing change
• Shared data problem
– Solved by independent workspace
• Multiple maintenance problem
– solved by central library of shared resources
• Simultaneous update problem
– programmer A finds and fixes difference in opinion
– Programmer A and B fixes
• by enforcing formal change management and control
procedures
03-08-2020 43
Process of formal CM and control
procedure
• Access is restricted.
• Developers cannot be able to simply make
changes
• Change request
• Impact analysis
• Change has to be approved.
03-08-2020 44
03-08-2020 45
Check-In & Check -Out
• Check- In:
– process of reviewing,
approving and moving an
item into controlled
environment
• Check out:
– If change request is
approved the
configuration manager
will copy the item from
the controlled library so
modifications can be made
03-08-2020 46
Version Variant
• Initial release or corelease of a • Versions can be functionally
Configuration item equivalent but may be
designed using different h/w
or s/w environments
• New versions may have • Unlike Versions variants are
additional functionality or not improvement of an item
different functionality i.e can
be improvement of prior one
• Eg: Windows 7 , Windows 8 • Eg: McAfee for Windows ,
are versions McAfee for MAC
03-08-2020 47
Branching and Parallel Development
• Branch is the derivations • Enables two or more
from main development people to work on same
line for an item item at same time
• Numbering: simultaneously Parallel
– Main line has two development
partsMajor and minor • Eg:
numbers – One can add new features
– Branches has 4 parts – Other can fix bugs
• First two represents the
part at which split is made
• Third branch number and
followed versions
– Branch from existing
branch
• Six parts
03-08-2020 48
Branching and Parallel Development
Multiple
Branches
Branch from an
existing branch
03-08-2020 49
Branching and Parallel Development
• The branches are made for the parallel development
only
– Once all the changes are done
• changes made by different persons are to be merged into a single
file
• If more than one person performed a change then INTERACTIVE
MERGING is done based on decisions from user on the changes
• After merging, branches outlived their utility and no
longer needed to evolve separately
03-08-2020 50
Naming of Versions
• Name has two parts:
– Number part changes with each version
– Name of the item project, subsystems,
module, type
• Number part:
– Determines the relative position of the version in
hierarchy
• Versions 1.0, 2.0, 3.0 and so..
– Revisions 1.1, 1.2,… 2.1,2.2,2.3….
• Branches from 1.1
– [Link] and its versions are [Link],[Link],…
– [Link] and its versions are [Link], [Link],…
03-08-2020 51
Source and derived items
• An item that is created from another item or
set of items is called as derived item
– Eg: Executable program
– Details like source items, tools used,
environmental variable & parameters used are
documented for reproducibility and repeatability
in case of any problems
• The items from which a derived item is
created are called as source items
– Eg: Source code
03-08-2020 52
System building
• Combining source components of a system
into components execute on a particular
target configuration
– Parts of it have to rebuilt after every change in
source
• Have all components that make up the system with
proper version been included in build version ?
• Are all ancillary files are available on target machine?
• Are all required tools with correct version available?
03-08-2020 53
System building
• Command file (a CI) ->used for building a
system which specifies:
– components with versions
– location in Controlled Environment,
– s/m build tools with versions,
– options,
– Environmental variables that were set
• Eg: Command file in
– IBM JCL file
– UNIX shell script
– VC++ Make file
03-08-2020 54
Releases
• A system release set of items that is given to
the customers
– consists of executable code, installation files, data
files, setup programs, and electronic and paper
documentation
– Includes new features, fixes for faults identified by
the customer, developer or tester
• Details to be documented during each release:
– Environment, OS, Components versions,
options to reproduce in same configuration in
case of bugs
03-08-2020 55
Release Items
03-08-2020 56
Release Note
• System release includes the following identifiers:
– Version number
– Installation requirements
– Installation procedure and how to test for successful
installations
– How to upgrade
– Key or serial number
– Known faults and limitations
– New features added
– Contact details
03-08-2020 57
SCM Deltas
• SCM s/m should produce details of all the
versions and should reproduce the components
– As different people use different versions
• Maintaining copies of all consumes disk space
– Deltas difference b/w new and previous version
(smaller than source code)
• So any version can be derived by applying deltas to base
versions
03-08-2020 58
SCM Deltas
• Types:
– Forward deltas
– Reverse Deltas
03-08-2020 59
Deltas
“Forward or Reverse? depends on company “
03-08-2020 60
Forward Delta Reverse Delta
• stores the oldest version as the • stores the latest version as the full
full version and calculate the version and calculate the previous
newer versions using delta engine versions using delta engine
• Complete copy of original file is • Complete copy of original file is
maintained maintained
• When new version is checked in , • When new version is checked in ,
two versions are compared and two versions are compared and
delta report is generated, delta report is generated, diff(n,n-
diff(n,n-1) 1)
• Delta report is stored instead of • Delta report is stored instead of
full copy of new version n and full copy of old version n-1 and
stores n-1 as full version stores n as full version
• New version DR + original file • old version DR + original file
• V4= V1 + delta (12) + delta • V2= V4 + delta (43) + delta
(23) + delta (34) (32)
03-08-2020 61
• SCM Database
– CM database is used to store all relevant
information related to configurations
– should answer to queries
– It is obsolete with increasing popularity of SCM
tools
– Defined during SCM system design phase and
documented in SCM plan
– CI should be added with entry in the database
otherwise the integrity will be lost
03-08-2020 62
Configuration Management Model
• There can be many promotions and many
releases Use Multiplicity
03-08-2020 63
Configuration Management Model
• Promotions and Releases are both versions
Use Inheritance
03-08-2020 64
Configuration Management Model
• A configuration item has many versions a 1-
many association between Configuration Item
and Version
03-08-2020 65
Configuration Management Model
• Configuration items can themselves be
grouped composite design pattern
03-08-2020 66
Configuration Item Model
03-08-2020 67
SCM Metrics
• Benchmarks that define nominal operation of
the software development process
• Goals that define the purpose of the metrics
program
• Strategy for achieving the goals
03-08-2020 68
SCM metrics
• throughput of change per week, month, year
• how many document releases made
• issues resulting from design deficiencies
• time necessary to find correct versions of
documents, BOMs, As-Built configuration records
• length of time needed to route changes for
review
• man-hours required to install safety-related mod
kits to fielded items
03-08-2020 69
03-08-2020 70