2. Why Is Software DifficultWhy Is Software Difficult
to Build?to Build?
Lack of controlLack of control
Lack of monitoringLack of monitoring
Lack of traceabilityLack of traceability
Uncontrolled changesUncontrolled changes
3. Conflicts in TeamConflicts in Team
Software DevelopmentSoftware Development
Simultaneous updates – howSimultaneous updates – how
to prevent one person fromto prevent one person from
undoing the changes ofundoing the changes of
anotheranother
Shared and common code –Shared and common code –
how to notify everyone whohow to notify everyone who
needs to know about a changeneeds to know about a change
Versions – how to makeVersions – how to make
changes to all affectedchanges to all affected
4. Software ConfigurationSoftware Configuration
Management BasicsManagement Basics
Identification – identifying softwareIdentification – identifying software
configuration items in a baselineconfiguration items in a baseline
Control – controlling the release of a productControl – controlling the release of a product
and changes to it throughout its lifecycleand changes to it throughout its lifecycle
Status Accounting – recording and reportingStatus Accounting – recording and reporting
of the status of components and changesof the status of components and changes
Auditing and Reviewing – Validating theAuditing and Reviewing – Validating the
completeness of a product and that SCMcompleteness of a product and that SCM
procedures are being followedprocedures are being followed
5. SCM DefinitionsSCM Definitions
Baseline – One or more softwareBaseline – One or more software
configuration items that have beenconfiguration items that have been
formally reviewed and agreed upon andformally reviewed and agreed upon and
serve as a basis for further developmentserve as a basis for further development
Software Configuration Item – A collectionSoftware Configuration Item – A collection
of software elements treated as a unit forof software elements treated as a unit for
the purposes of SCMthe purposes of SCM
Configuration – A collection of all theConfiguration – A collection of all the
elements of a baseline and a descriptionelements of a baseline and a description
of how they fit togetherof how they fit together
6. SCM Definitions (cont’d)SCM Definitions (cont’d)
Configuration Control Board – GroupConfiguration Control Board – Group
with the responsibility for reviewing andwith the responsibility for reviewing and
approving changes to baselinesapproving changes to baselines
Software – All of the code,Software – All of the code,
specifications, plans, descriptions,specifications, plans, descriptions,
processes, and documents associatedprocesses, and documents associated
with a software development effortwith a software development effort
Version – A specific instance of aVersion – A specific instance of a
baseline or configuration itembaseline or configuration item
8. Version ControlVersion Control
Allows different projects to use theAllows different projects to use the
same source files at the same timesame source files at the same time
Isolates work that is not ready to beIsolates work that is not ready to be
shared by the rest of the projectshared by the rest of the project
Isolates work that should never beIsolates work that should never be
sharedshared
Allows software engineers to continueAllows software engineers to continue
development along a branch evendevelopment along a branch even
when a line of development is frozenwhen a line of development is frozen
9. Change ControlChange Control
Proposed changes to baselines must haveProposed changes to baselines must have
some level of reviewsome level of review
The impact of proposed changes must beThe impact of proposed changes must be
identified and understood.identified and understood.
When appropriate the approval of the CCB,When appropriate the approval of the CCB,
key managers and project members mustkey managers and project members must
be obtainedbe obtained
Approved changes must be properlyApproved changes must be properly
implementedimplemented
After changes are made all affected partiesAfter changes are made all affected parties
must be notifiedmust be notified
10. Baseline ManagementBaseline Management
What baselines are required to beWhat baselines are required to be
defined and managed?defined and managed?
– Typically aligned with major milestonesTypically aligned with major milestones
– Applies to documents as well as codeApplies to documents as well as code
How is the current softwareHow is the current software
configuration defined?configuration defined?
– A snapshot of everything the product hasA snapshot of everything the product has
produced at some point in timeproduced at some point in time
11. Baseline ManagementBaseline Management
(cont’d)(cont’d)
Who must approve changes toWho must approve changes to
baselines?baselines?
– Usually the Change Control Board (CCB)Usually the Change Control Board (CCB)
How and when are baselines createdHow and when are baselines created
and physically controlled?and physically controlled?
– Through the use of document controlThrough the use of document control
systems, code control tools, andsystems, code control tools, and
procedures to prevent the making ofprocedures to prevent the making of
unapproved changesunapproved changes
12. Baseline ManagementBaseline Management
(cont’d)(cont’d)
How are people informed of changes?How are people informed of changes?
– The CCB disseminates changeThe CCB disseminates change
informationinformation
How are baselines verified?How are baselines verified?
– By reviews, inspections, and the testingBy reviews, inspections, and the testing
of codeof code
Are baselines tied to projectAre baselines tied to project
milestones?milestones?
– Many are, but during coding many mayMany are, but during coding many may
13. Baseline ManagementBaseline Management
(cont’d)(cont’d)
What information is required to process aWhat information is required to process a
change to a baseline?change to a baseline?
– A description of the proposed changesA description of the proposed changes
– Reasons for making the changesReasons for making the changes
– List of other items affected by the changesList of other items affected by the changes
What tools, resources, and training areWhat tools, resources, and training are
required to perform baseline changerequired to perform baseline change
assessment?assessment?
– File comparison tools to identify changesFile comparison tools to identify changes
– Resources and training depend on size andResources and training depend on size and
complexity of projectcomplexity of project
14. Baseline ManagementBaseline Management
(cont’d)(cont’d)
What metrics should be used toWhat metrics should be used to
assess changes to a baseline?assess changes to a baseline?
– ComplexityComplexity
– Average module sizeAverage module size
– Number of modules changedNumber of modules changed
– Number of bugs fixed and verifiedNumber of bugs fixed and verified
– Code coverageCode coverage
15. Baseline ManagementBaseline Management
(cont’d)(cont’d)
How are unauthorized changes toHow are unauthorized changes to
source code prevented, detected, andsource code prevented, detected, and
corrected?corrected?
– No way to prevent unauthorized changesNo way to prevent unauthorized changes
– Provide software engineers with trainingProvide software engineers with training
– A commercial available SCM systemsA commercial available SCM systems
provide adequate protectionprovide adequate protection
– Unauthorized changes should be caughtUnauthorized changes should be caught
during assessment proceduresduring assessment procedures
16. Baseline ManagementBaseline Management
(cont’d)(cont’d)
What tools, resources, and training areWhat tools, resources, and training are
required to perform baselinerequired to perform baseline
management?management?
– A fully featured SCM toolA fully featured SCM tool
– On large projects a separate SCM groupOn large projects a separate SCM group
may be neededmay be needed
– SCM training is required for all involved inSCM training is required for all involved in
the processthe process
17. Workspace ManagementWorkspace Management
Software engineers need a consistentSoftware engineers need a consistent
and reproducible workspace area (aand reproducible workspace area (a
sandbox) in which they can develop andsandbox) in which they can develop and
debug their codedebug their code
They need to be able to share projectThey need to be able to share project
files while shielding the project from thefiles while shielding the project from the
instability of their evolving codeinstability of their evolving code
SCM tools should provide such aSCM tools should provide such a
capabilitycapability
18. Baseline ChangeBaseline Change
AssessmentAssessment
Helps to identify recent changes thatHelps to identify recent changes that
may be responsible for problemsmay be responsible for problems
Helps to ensure that only authorizedHelps to ensure that only authorized
changes are madechanges are made
19. Version ManagementVersion Management
Being able to reliably build andBeing able to reliably build and
recreate versions of a product as itrecreate versions of a product as it
evolves and after it is released.evolves and after it is released.
Being able to retreat to a previousBeing able to retreat to a previous
version if necessaryversion if necessary
Being able to recreate all versions ofBeing able to recreate all versions of
the product that customers havethe product that customers have
20. Types of AuditsTypes of Audits
In-process audits – verify the consistency ofIn-process audits – verify the consistency of
the design as it evolves through thethe design as it evolves through the
development processdevelopment process
Functional audits – verify that functionalityFunctional audits – verify that functionality
and performance are consistent withand performance are consistent with
requirements defined in the SRSrequirements defined in the SRS
Physical audits – verify that the as-builtPhysical audits – verify that the as-built
version of software and documentation areversion of software and documentation are
internally consistent and ready for deliveryinternally consistent and ready for delivery
Quality system audits – independentQuality system audits – independent
assessment of the compliance to theassessment of the compliance to the
software QA plansoftware QA plan
21. Configuration StatusConfiguration Status
AccountingAccounting
RequirementsRequirements
Identifying the types of information thatIdentifying the types of information that
project managers needproject managers need
Identifying the degree of controlIdentifying the degree of control
needed by project managementneeded by project management
Identifying the reports required and theIdentifying the reports required and the
different audiences for each reportdifferent audiences for each report
Identifying the information required toIdentifying the information required to
produce each reportproduce each report
22. SCM SummarySCM Summary
Change is inevitableChange is inevitable
Defined procedures are required to manageDefined procedures are required to manage
change without preventing changechange without preventing change
Software presents many challenges from aSoftware presents many challenges from a
control, management, and trackingcontrol, management, and tracking
perspectiveperspective
Knowing what you have and how you gotKnowing what you have and how you got
there is very importantthere is very important
Being able to recreate exactly what isBeing able to recreate exactly what is
delivered to customers is essentialdelivered to customers is essential