Software Configuration Management Why SCM The problem Multiple
Software Configuration Management
Why SCM? The problem: • Multiple people have to work on software that is changing, Need for coordination • More than one version of the software has to be supported: Released systems Custom configured systems (different functionality) System(s) under development Software on different machines & operating systems • Errors detected in the software need to be corrected • New business or market conditions dictate changes in product requirements or business rules • New customer needs demand modifications of data produced by information systems, functionality delivered by products, or services delivered by a computer-based system • Reorganization or business growth/downsizing causes changes in project priorities or software engineering team structure
What is SCM? Software configuration management is the discipline of managing the evolution of complex software systems [IEEE STD 1987]. It is also defined as ‘the process of controlling and monitoring change to work products’ [Herbert 1999]. A set of management disciplines within a software engineering process to develop a baseline Software Configuration Management encompasses the disciplines and techniques of initiating, evaluating and controlling change to software products during and after a software project Software Configuration Management - manages evolving software systems - controls the costs involved in making changes to a system.
Basic concepts of SCM Configuration Item (CI): A piece of software or work product which is subject to change is a configuration item Examples: Management plan, Requirements, Design specification, Source code and executable code, Test specification, data, and records, User documentation, etc. Versions and Configurations: A version identifies the state of a particular configuration item or a configuration at a well defined point in time Eg. Windows 7, Windows 8, etc. Here 7 represents the version number. jdk 1. 6 Here 1 refers to Major revision, 6 refers to minor revision Release: A release is a version that has been available to the user or the client.
Basic concepts of SCM Baseline A collection of item versions that have been formally reviewed and agreed on, a version of configuration Marks milestones and serves as basis for further development Can only be changed via formal change management process Baseline + change sets to create new baselines Change Request: It is a formal report that contains the request for modification in a configuration item. Workspace An isolated environment where a developer can work (edit, change, compile, test) without interfering other developers Eg: Local directory under version control, Private workspace on the server
SCM Activities SCM activities are formulated to identify change, control change, ensure that change is being properly implemented, and report changes to others who may have an interest View of SCM from various roles Project manager -> an auditing mechanism SCM manager -> a controlling, tracking, and policy making mechanism Software engineer -> a changing, building, and access control mechanism Customer -> a quality assurance and product identification mechanism
SCM Activities SCM activities are formulated to identify change, control change, ensure that change is being properly implemented, and report changes to others who may have an interest View of SCM from various roles Project manager -> an auditing mechanism SCM manager -> a controlling, tracking, and policy making mechanism Software engineer -> a changing, building, and access control mechanism Customer -> a quality assurance and product identification mechanism
SCM Process Identify all items that collectively define the software configuration (SCIs) Manage changes to one or more of these items Facilitate construction of different versions of an application Ensure the software quality configuration evolves over time is maintained as the Provide information on changes that have occurred
SCM Tasks Status reporting Configuration auditing Version control Change control Identification CSCI
SCM Tasks 1. Identification separately names each CSCI and then organizes it in the SCM repository 2. Change control is a procedural activity that ensures quality and consistency as changes are made to a configuration object 3. Version control is a set of procedures and tools for managing the creation and use of multiple occurrences of objects in the SCM repository 4. Configuration auditing is an SQA activity that helps to ensure that quality is maintained as changes are made - Has the change specified in the ECO been made? Have any additional modifications been incorporated? - Has a formal technical review been conducted to assess technical correctness? - Has the software process been followed, and have software engineering standards been properly applied? 5. Configuration status reporting (CSR) is also called status accounting. Provides information about each change to those personnel in an organization. Administrative tracking and reporting of CIs in SCM system - Answers what happened, who did it, when did it happen, and what else will be affected?
Change control process n Submission of Change Request (CR) n Technical and business evaluation and impact analysis n Approval by Change Control Board (CCB) n Engineering Change Order (ECO) is generated stating ¡ changes to be made ¡ criteria for reviewing the changed CI n CI’s checked out n Changes made and reviewed n CI’s checked in
SCM Tools n Version control ¡ n Bug tracking ¡ n Bugzilla, Mantis Bugtracker, Rational Clear. Quest Build ¡ n RCS, CVS, Subversion, Visual Source Safe, Rational Clear. Case GNU Make and many variants, Ant Project management ¡ Sourceforge. net, freshmeat. net, GForge, DForge
Copy/Modify/Merge in CVS : Repository alice : Developer checkout() alice. Copy : Working. Copy joe. Copy : Working. Copy modify() checkin(ac) If changes overlap, CVS Joe resolves the conflict by editing the merged copy. joe : Developer modify() merge(ac) update(jc) checkin(jc)
- Slides: 13