Configuration
Management
Why Is Software Difficult
to Build?
Lack of control
Lack of monitoring
Lack of traceability
Uncontrolled changes
Conflicts in Team
Software Development
Simultaneous updates – how to
prevent one person from undoing
the changes of another
Shared and common code – how to
notify everyone who needs to
know about a change
Versions – how to make changes to
all affected versions when needed
Software Configuration
Management Basics
Identification – identifying software
configuration items in a baseline
Control – controlling the release of a product
and changes to it throughout its lifecycle
Status Accounting – recording and reporting
of the status of components and changes
Auditing and Reviewing – Validating the
completeness of a product and that SCM
procedures are being followed
SCM Definitions
Baseline – One or more software
configuration items that have been
formally reviewed and agreed upon and
serve as a basis for further development
Software Configuration Item – A collection
of software elements treated as a unit for
the purposes of SCM
Configuration – A collection of all the
elements of a baseline and a description
of how they fit together
SCM Definitions (cont’d)
Configuration Control Board – Group
with the responsibility for reviewing and
approving changes to baselines
Software – All of the code,
specifications, plans, descriptions,
processes, and documents associated
with a software development effort
Version – A specific instance of a
baseline or configuration item
Examples of Configuration
Items
Product concept specification
Software project plans
Software requirements specifications
Software design descriptions
Source code
Database descriptions
SCM procedures
Software release processes
Software test documents
User documentation
Maintenance documentation
Version Control
Allows different projects to use the same
source files at the same time
Isolates work that is not ready to be
shared by the rest of the project
Isolates work that should never be
shared
Allows software engineers to continue
development along a branch even when
a line of development is frozen
Change Control
Proposed changes to baselines must have some
level of review
The impact of proposed changes must be
identified and understood.
When appropriate the approval of the CCB, key
managers and project members must be
obtained
Approved changes must be properly implemented
After changes are made all affected parties must
be notified
Baseline Management
What baselines are required to be
defined and managed?
– Typically aligned with major milestones
– Applies to documents as well as code
How is the current software
configuration defined?
– A snapshot of everything the product has
produced at some point in time
Baseline Management
(cont’d)
Who must approve changes to baselines?
– Usually the Change Control Board (CCB)
How and when are baselines created and
physically controlled?
– Through the use of document control
systems, code control tools, and procedures
to prevent the making of unapproved
changes
Baseline Management
(cont’d)
How are people informed of changes?
– The CCB disseminates change information
How are baselines verified?
– By reviews, inspections, and the testing of
code
Are baselines tied to project milestones?
– Many are, but during coding many may not
be
Baseline Management
(cont’d)
What information is required to process a
change to a baseline?
– A description of the proposed changes
– Reasons for making the changes
– List of other items affected by the changes
What tools, resources, and training are
required to perform baseline change
assessment?
– File comparison tools to identify changes
– Resources and training depend on size and
complexity of project
Baseline Management
(cont’d)
What metrics should be used to assess
changes to a baseline?
– Complexity
– Average module size
– Number of modules changed
– Number of bugs fixed and verified
– Code coverage
Baseline Management
(cont’d)
How are unauthorized changes to source
code prevented, detected, and corrected?
– No way to prevent unauthorized changes
– Provide software engineers with training
– A commercial available SCM systems provide
adequate protection
– Unauthorized changes should be caught
during assessment procedures
Baseline Management
(cont’d)
What tools, resources, and training are
required to perform baseline
management?
– A fully featured SCM tool
– On large projects a separate SCM group
may be needed
– SCM training is required for all involved in
the process
Workspace Management
Software engineers need a consistent and
reproducible workspace area (a sandbox)
in which they can develop and debug
their code
They need to be able to share project files
while shielding the project from the
instability of their evolving code
SCM tools should provide such a capability
Baseline Change
Assessment
Helps to identify recent changes that
may be responsible for problems
Helps to ensure that only authorized
changes are made
Version Management
Being able to reliably build and
recreate versions of a product as it
evolves and after it is released.
Being able to retreat to a previous
version if necessary
Being able to recreate all versions of
the product that customers have
Types of Audits
In-process audits – verify the consistency of the
design as it evolves through the development
process
Functional audits – verify that functionality and
performance are consistent with requirements
defined in the SRS
Physical audits – verify that the as-built version of
software and documentation are internally
consistent and ready for delivery
Quality system audits – independent assessment
of the compliance to the software QA plan
Configuration Status
Accounting Requirements
Identifying the types of information
that project managers need
Identifying the degree of control
needed by project management
Identifying the reports required and
the different audiences for each report
Identifying the information required to
produce each report
SCM Summary
Change is inevitable
Defined procedures are required to manage
change without preventing change
Software presents many challenges from a
control, management, and tracking
perspective
Knowing what you have and how you got
there is very important
Being able to recreate exactly what is
delivered to customers is essential