Software Configuration Management “The only constant is change ...” TCS2411 Software Engineering 1 Lecture Objectives To understand the activities in managing software changes To identify the software configuration items that needs to be managed To describe the different tasks in software configuration management TCS2411 Software Engineering 2 What is S/w Configuration Management? SCM is the discipline for systematically controlling the changes that take place during development Umbrella activity that is applied throughout SE process SCM is easier at the start of development and gets more complex towards the end TCS2411 Software Engineering 3 Sources of Change New business or market conditions New customer needs Reorganisation and/or business downsizing Budgetary or scheduling constraints TCS2411 Software Engineering 4 Main Elements of SCM Identification What are the configuration items? Control How changes should be controlled? Status Accounting What changes have been made? Auditing Is the system being built to satisfy the needs? TCS2411 Software Engineering 5 Software Configuration Computer programs Source code Executable code Documents that describe the computer programs For technical staff For users Data Within the program and external to it TCS2411 Software Engineering 6 Software Configuration Item A document or an artifact that is explicitly placed under configuration control and that can be regarded as a basic unit for modification Examples: requirement documents design document code of a module test plan TCS2411 Software Engineering 7 Baselines Definition IEEE definition: “A specification or product that has been formally reviewed and agreed upon, that thereafter serves as the basis for further development, and that can be changed only through formal change control procedures” TCS2411 Software Engineering 8 Baselines A baseline is essentially a set of SCIs The items have been reviewed, corrected, and approved Baselines should be used as reference point Baselines should only be changed through formal procedures Careful definition and control of different baselines should be done TCS2411 Software Engineering 9 Examples of Baselines Functional baseline (requirements) Design baseline Product baseline (developed system) TCS2411 Software Engineering 10 Configuration Control Version control - procedures and tools to manage different versions of configuration objects Change control - procedures and tools to provide a mechanism for the control of changes TCS2411 Software Engineering 11 Version Control Process of identifying and keeping track of different versions and releases of a system Procedures to ensure that different versions of a system may be retrieved when required and not accidentally changed Version management is almost always supported by automated tools TCS2411 Software Engineering 12 Evolution Graph Obj 1.0 Obj 1.1 Obj 1.4 Obj 2.0 Obj 2.1 Obj 1.2 Obj 1.1.1 TCS2411 Software Engineering Obj 1.3 Obj 1.1.2 13 Versions, releases & variants Version - an instance of a system that differs from other instances different functionality performance repair of system faults Release - version that is distributed to customers Variant - sometimes used when differences are small TCS2411 Software Engineering 14 Change Control Focuses on managing changes to the different forms of the SCIs Engineering change proposal - basic document used for defining & requesting for a change. Configuration Control Board (CCB) is responsible for configuration management CCB evaluate proposal & approve/reject it TCS2411 Software Engineering 15 Change Control Process Need for change Change request generated Evaluation Change report generated Technical merits, Side effects Overall impact, Project cost Other SCM tasks TCS2411 Software Engineering Place on queue for change Requestor is informed ECO generated Approve CCA decision Reject 16 Engineering Change Proposal proposed change reason(s) baselines & SCIs that are affected cost schedule impacts procedures for the change TCS2411 Software Engineering 17 Engineering Change Order Change description Constraints Audit review criteria TCS2411 Software Engineering 18 Change Process Object to be changed is “checked out” Change is made Appropriate SQA activities applied Object is “checked in” to the database Version control mechanisms applied for next version TCS2411 Software Engineering 19 Change Process Diagram Configuration object (modified version) Audit info Software Engineer Check-in unlock Access control Configuration object (baseline version) Ownership info Project Database lock Configuration object (extracted version) TCS2411 Software Engineering Configuration object (baseline version) Check-out 20 Status Accounting/Reporting Keeps record of how the system evolves and what is its current status (administrative nature) Can be complex due to the existence of executable and non-executable forms TCS2411 Software Engineering 21 Status Reporting Process Configuration Identification Configuration Control SCIs Changes Configuration Audit TCS2411 Software Engineering CSR Database Status Reporting Deficiencies CSR Report 22 Status Accounting Tasks Record baseline establishment time Record when SCI came into being Information about each SCI Engineering change proposal status Status of the approved changes TCS2411 Software Engineering 23 Configuration Audit Concerned with determining how accurately the current software system implements the system defined in the baseline & requirements document Also concerned with increasing the visibility and traceability of the software Also establish a new baseline TCS2411 Software Engineering 24 Auditing How do we know a change is properly implemented? Formal technical reviews - assess the SCI to determine consistency with other SCIs Software configuration audit SCI changes made? FTR conducted? SE standards followed? SCM procedures followed & updates properly done? Related SCIs updated? TCS2411 Software Engineering 25 References “Software Engineering: A Practitioner’s Approach” 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 “Software Engineering” by Ian Sommerville, Addison-Wesley, 2001 TCS2411 Software Engineering 26