Post on 24-May-2015
Configuration Configuration ManagementManagement
Why Is Software Why Is Software Difficult to Build?Difficult to Build?
Lack of controlLack of control Lack of monitoringLack of monitoring Lack of traceabilityLack of traceability Uncontrolled changesUncontrolled changes
Conflicts in Team Conflicts in Team Software DevelopmentSoftware Development
Simultaneous updates – how to Simultaneous updates – how to prevent one person from prevent one person from undoing the changes of anotherundoing the changes of another
Shared and common code – Shared and common code – how to notify everyone who how to notify everyone who needs to know about a changeneeds to know about a change
Versions – how to make Versions – how to make changes to all affected versions changes to all affected versions when neededwhen needed
Software Configuration Software Configuration Management BasicsManagement Basics
Identification – identifying software Identification – identifying software configuration items in a baselineconfiguration items in a baseline
Control – controlling the release of a Control – controlling the release of a product and changes to it throughout its product and changes to it throughout its lifecyclelifecycle
Status Accounting – recording and reporting Status Accounting – recording and reporting of the status of components and changesof the status of components and changes
Auditing and Reviewing – Validating the Auditing and Reviewing – Validating the completeness of a product and that SCM completeness of a product and that SCM procedures are being followed procedures are being followed
SCM DefinitionsSCM Definitions
Baseline – One or more software Baseline – One or more software configuration items that have been configuration items that have been formally reviewed and agreed upon and formally reviewed and agreed upon and serve as a basis for further developmentserve as a basis for further development
Software Configuration Item – A Software Configuration Item – A collection of software elements treated collection of software elements treated as a unit for the purposes of SCMas a unit for the purposes of SCM
Configuration – A collection of all the Configuration – A collection of all the elements of a baseline and a description elements of a baseline and a description of how they fit togetherof how they fit together
SCM Definitions SCM Definitions (cont’d)(cont’d)
Configuration Control Board – Group Configuration Control Board – Group with the responsibility for reviewing with the responsibility for reviewing and approving changes to baselinesand approving changes to baselines
Software – All of the code, Software – All of the code, specifications, plans, descriptions, specifications, plans, descriptions, processes, and documents processes, and documents associated with a software associated with a software development effortdevelopment effort
Version – A specific instance of a Version – A specific instance of a baseline or configuration item baseline or configuration item
Examples of Examples of Configuration ItemsConfiguration Items
Product concept specificationProduct concept specification Software project plansSoftware project plans Software requirements specificationsSoftware requirements specifications Software design descriptionsSoftware design descriptions Source codeSource code Database descriptionsDatabase descriptions SCM proceduresSCM procedures Software release processesSoftware release processes Software test documentsSoftware test documents User documentationUser documentation Maintenance documentationMaintenance documentation
Version ControlVersion Control
Allows different projects to use the Allows 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 be Isolates 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 be Isolates work that should never be sharedshared
Allows software engineers to continue Allows software engineers to continue development along a branch even development along a branch even when a line of development is frozen when a line of development is frozen
Change ControlChange Control
Proposed changes to baselines must have Proposed changes to baselines must have some level of reviewsome level of review
The impact of proposed changes must be The 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 must key managers and project members must be obtainedbe obtained
Approved changes must be properly Approved changes must be properly implementedimplemented
After changes are made all affected parties After changes are made all affected parties must be notifiedmust be notified
Baseline ManagementBaseline Management
What baselines are required to be What 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 software How is the current software configuration defined?configuration defined?– A snapshot of everything the product A snapshot of everything the product
has produced at some point in time has produced at some point in time
Baseline Management Baseline Management (cont’d)(cont’d) Who must approve changes to Who must approve changes to
baselines?baselines?– Usually the Change Control Board (CCB)Usually the Change Control Board (CCB)
How and when are baselines created How and when are baselines created and physically controlled?and physically controlled?– Through the use of document control Through the use of document control
systems, code control tools, and systems, code control tools, and procedures to prevent the making of procedures to prevent the making of unapproved changesunapproved changes
Baseline Management Baseline Management (cont’d)(cont’d) How are people informed of changes?How are people informed of changes?
– The CCB disseminates change informationThe CCB disseminates change information How are baselines verified?How are baselines verified?
– By reviews, inspections, and the testing of By reviews, inspections, and the testing of codecode
Are baselines tied to project Are baselines tied to project milestones?milestones?– Many are, but during coding many may Many are, but during coding many may
not benot be
Baseline Management Baseline Management (cont’d)(cont’d)
What information is required to process a What 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 are What tools, resources, and training are required to perform baseline change required to perform baseline change assessment?assessment?– File comparison tools to identify changesFile comparison tools to identify changes– Resources and training depend on size and Resources and training depend on size and
complexity of projectcomplexity of project
Baseline Management Baseline Management (cont’d)(cont’d) What metrics should be used to What 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
Baseline Management Baseline Management (cont’d)(cont’d) How are unauthorized changes to How are unauthorized changes to
source code prevented, detected, source code prevented, detected, and corrected?and 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 systems A commercial available SCM systems
provide adequate protectionprovide adequate protection– Unauthorized changes should be caught Unauthorized changes should be caught
during assessment proceduresduring assessment procedures
Baseline Management Baseline Management (cont’d)(cont’d) What tools, resources, and What tools, resources, and
training are required to perform training are required to perform baseline management?baseline management?– A fully featured SCM toolA fully featured SCM tool– On large projects a separate SCM On large projects a separate SCM
group may be neededgroup may be needed– SCM training is required for all SCM training is required for all
involved in the processinvolved in the process
Workspace Workspace ManagementManagement
Software engineers need a consistent Software engineers need a consistent and reproducible workspace area (a and reproducible workspace area (a sandbox) in which they can develop and sandbox) in which they can develop and debug their codedebug their code
They need to be able to share project They need to be able to share project files while shielding the project from the files while shielding the project from the instability of their evolving codeinstability of their evolving code
SCM tools should provide such a SCM tools should provide such a capabilitycapability
Baseline Change Baseline Change AssessmentAssessment Helps to identify recent changes Helps to identify recent changes
that may be responsible for that may be responsible for problemsproblems
Helps to ensure that only Helps to ensure that only authorized changes are madeauthorized changes are made
Version ManagementVersion Management
Being able to reliably build and Being able to reliably build and recreate versions of a product as recreate versions of a product as it evolves and after it is released.it evolves and after it is released.
Being able to retreat to a Being able to retreat to a previous version if necessaryprevious version if necessary
Being able to recreate all versions Being able to recreate all versions of the product that customers of the product that customers havehave
Types of AuditsTypes of Audits
In-process audits – verify the consistency of In-process audits – verify the consistency of the design as it evolves through the the design as it evolves through the development processdevelopment process
Functional audits – verify that functionality Functional audits – verify that functionality and performance are consistent with and performance are consistent with requirements defined in the SRSrequirements defined in the SRS
Physical audits – verify that the as-built Physical audits – verify that the as-built version of software and documentation are version of software and documentation are internally consistent and ready for deliveryinternally consistent and ready for delivery
Quality system audits – independent Quality system audits – independent assessment of the compliance to the software assessment of the compliance to the software QA planQA plan
Configuration Status Configuration Status Accounting Accounting RequirementsRequirements Identifying the types of information Identifying the types of information
that project managers needthat project managers need Identifying the degree of control Identifying the degree of control
needed by project managementneeded by project management Identifying the reports required and Identifying the reports required and
the different audiences for each the different audiences for each reportreport
Identifying the information required Identifying the information required to produce each reportto produce each report
SCM SummarySCM Summary
Change is inevitableChange is inevitable Defined procedures are required to Defined procedures are required to
manage change without preventing manage change without preventing changechange
Software presents many challenges from Software presents many challenges from a control, management, and tracking a control, management, and tracking perspectiveperspective
Knowing what you have and how you got Knowing what you have and how you got there is very importantthere is very important
Being able to recreate exactly what is Being able to recreate exactly what is delivered to customers is essentialdelivered to customers is essential