Software Configuration Management (SCM)Software Configuration Management (SCM)
OverviewOverview What is SCM?What is SCM? What are the processes of SCM?What are the processes of SCM? How does each process do?How does each process do? SummarySummary
Software ConfigurationsSoftware Configurations
Software configuration -- the outputSoftware configuration -- the output Computer programs (source and executables)Computer programs (source and executables) DocumentsDocuments DataData
Software Configuration Management (SCM)Software Configuration Management (SCM) The art of identifying, organizing and controlling The art of identifying, organizing and controlling
modifications to the software being builtmodifications to the software being built
Why Do We Need SCM?Why Do We Need SCM?
First Law of System EngineeringFirst Law of System Engineering No matter where you are in the system life No matter where you are in the system life
cycle, the system will change and the desire to cycle, the system will change and the desire to change it will persist throughout the life cyclechange it will persist throughout the life cycle
Sources of ChangeSources of Change New business or market conditions New business or market conditions new customer needsnew customer needs Organization and/or business downsizingOrganization and/or business downsizing Budgetary or scheduling constraintsBudgetary or scheduling constraints
Baseline Concept
IEEE defines a baseline as:IEEE defines a baseline as: A specification or product that has been formally A specification or product that has been formally
reviewed and agreed upon, that thereafter serve as the reviewed and agreed upon, that thereafter serve as the basis for further development, and that can be changed basis for further development, and that can be changed only through formal change control proceduresonly through formal change control procedures
A baseline is a milestone in the development of A baseline is a milestone in the development of software that marked the delivery of one or more software that marked the delivery of one or more software configuration itemssoftware configuration items
Common Baselines
System engineering System engineering
Requirement analysisRequirement analysis
Software designSoftware design
CodingCoding
TestingTesting
ReleaseRelease
System specification
Software requirement specificationDesign specification
Source code
Test plans/Procedures/Data
Operational system
Software Configuration Item (SCI)
Information created as part of SE processInformation created as part of SE process SCIs used as target in SCM:SCIs used as target in SCM:
System specificationSystem specification Software project planSoftware project plan Software requirements specificationSoftware requirements specification Preliminary user manualPreliminary user manual Design specificationDesign specification Source code listingSource code listing
SCI (Cont’d)
Test specificationTest specification Operation and installation manualsOperation and installation manuals Executable programExecutable program Database descriptionDatabase description As-built user manualAs-built user manual Maintenance documentsMaintenance documents Standards and procedures for SEStandards and procedures for SE
SCI Modification Process
SCM Process
IdentificationIdentification Version controlVersion control Change controlChange control Configuration auditing Configuration auditing Status reportingStatus reporting
Object identification in SW configuration
SCI can be named and organized using OO SCI can be named and organized using OO approachapproach
Two types of objects:Two types of objects: basic objectbasic object: ‘unit of text’ created during : ‘unit of text’ created during
analysis, design, coding, or testing.analysis, design, coding, or testing. Aggregated objectsAggregated objects: a collect of basic objects: a collect of basic objects
Object identification in SW configuration (cont’d)
Features of objects:Features of objects: name: a character stringname: a character string description: a list of data items to identify the SCI description: a list of data items to identify the SCI
type and a project id, version information, etc.type and a project id, version information, etc. resources: entity that are provided, processed, resources: entity that are provided, processed,
referenced by the objectreferenced by the object Realization: a pointer to ‘Realization: a pointer to ‘unit of text’unit of text’ for a basic for a basic
object or object or nullnull for an aggregate object for an aggregate object
Object identification in SW configuration (cont’d)
Relationships between objectsRelationships between objects part-of: a hierarchical relationshippart-of: a hierarchical relationship interrelated: a cross-structural relationshipinterrelated: a cross-structural relationship
Object identification methodsObject identification methods evolution graphevolution graph automated SCM toolsautomated SCM tools module interconnection languagemodule interconnection language
Configuration ObjectsConfiguration Objects
Evolution Graph
obj1.2
obj1.4
obj2.0
obj1.3
obj1.1.1
obj1.1.2
obj2.1
obj1.0
obj1.1
Version Control
Some of the issuesSome of the issues When an executable is built, the versions of its When an executable is built, the versions of its
constituents must be consistent.constituents must be consistent. If A depends upon B and B is recompiled, A may If A depends upon B and B is recompiled, A may
also need to be recompiled.also need to be recompiled. What if multiple people need to modify same SCI?What if multiple people need to modify same SCI? Need to know what version different customers haveNeed to know what version different customers have How do you keep track of 100’s or 1000’s of How do you keep track of 100’s or 1000’s of
modules?modules?
Version ControlVersion Control
Evolution graph to represent different Evolution graph to represent different versionsversions
Uses an object pool representing components, Uses an object pool representing components, variants and versions, and their relationshipvariants and versions, and their relationship
RCS (Revision Control System) is common RCS (Revision Control System) is common tool.tool. Use for documentation as well as code Use for documentation as well as code
development.development.
Version Control SupportVersion Control Support
At the language level (in Ada):At the language level (in Ada):
If only body of B changes, no change to AIf only body of B changes, no change to A If spec of B changes, A must be recompiledIf spec of B changes, A must be recompiled
Spec ASpec A
Body ABody A
Spec BSpec B
Body BBody B
With B;With B;
Change Control
Change request from userChange request from user
Developer evaluatesDeveloper evaluates
Change report is generatedChange report is generated
Change control authority makes decisionChange control authority makes decision
Request is queued, persons are assigned
“Check out” SCI(s)
Change request is denied
User is informed
Change Control (cont’d)
Make the change/review changeMake the change/review change
‘‘Check in’ changed SCIsCheck in’ changed SCIs
Establish a baseline for testingEstablish a baseline for testing
Do SQA and ‘promote’ changes for inclusion in next Do SQA and ‘promote’ changes for inclusion in next releaserelease
Rebuild appropriate versionRebuild appropriate version
Audit the SCI changes/ include changes in new versionAudit the SCI changes/ include changes in new version
Release the new versionRelease the new version
Access and Synchronization Control
Configuration Audit
Two approaches can be used to ensure proper Two approaches can be used to ensure proper implementation of change:implementation of change: formal technical reviewformal technical review software configuration auditsoftware configuration audit
CA assesses a configuration object for characteristics that CA assesses a configuration object for characteristics that are not generally not considered during revieware not generally not considered during review
CA generally checks:CA generally checks:•SCM procedures followed•all related SCIs properly updated•change date and author specified
•Changes incorporated•FTR conducted•SE standards followed
Status Reporting
Event occurred -- An SCI received updated IDEvent occurred -- An SCI received updated ID people involvedpeople involved Time happenedTime happened Effects on othersEffects on others Generated on a regular basisGenerated on a regular basis To improve communication among all partiesTo improve communication among all parties
Summary
SCM identifies, controls, audits and reports SCM identifies, controls, audits and reports modificationsmodifications
An object becomes a baseline once developed An object becomes a baseline once developed and reviewedand reviewed
Version control is the set of procedures and Version control is the set of procedures and tools for managing the use of these objectstools for managing the use of these objects
SummarySummary
Change control is a procedure activity Change control is a procedure activity necessary to achieve quality and consistencynecessary to achieve quality and consistency
Configuration audit is an SQA activity to Configuration audit is an SQA activity to help ensure quality is maintainedhelp ensure quality is maintained
Reporting provides information for better Reporting provides information for better communicationcommunication