730 likes | 1.27k Views
Software Configuration Management. Yashvardhan Sharma. Learning objectives. What are versions, releases, variations?. What is version control?. What is configuration management?. Need for configuration management. Steps in configuration management. Configuration management tools.
E N D
Software Configuration Management Yashvardhan Sharma
Learning objectives • What are versions, releases, variations? • What is version control? • What is configuration management? • Need for configuration management • Steps in configuration management • Configuration management tools Software Engineering
Software versions • Consider the maintenance phase • at least two versions exist • old • new • product consists of modules, so • 2 or more versions of component modules • Version control also applies to other phases – Why? Software Engineering
Variations Revisions Printer driver for PC Driver for Ink-jet printer Version n+1 (fixed) Revisions and Variations Version n (with fault) Driver for Laser printer Software Engineering
Revisions - why? • Corrective maintenance • fix faults • Perfective maintenance • write new modules • change existing modules • Adaptive maintenance • change modules Software Engineering
Problem with revisions • Multiple versions of the same module • New version should replace the old one • Simple solution: • Just throw the old version away!!! • Will this work? Software Engineering
Why should we keep versions? • Revision n+1 is not necessarily “better” than revision n • Is everyone using revision n+1? • Not necessarily • What if a site using revision n sends a fault report? • We need to maintain all the revisions for all kinds of maintenance. • Actually, all versions from the implementation phase need to be kept. Software Engineering
Variations • A variation does not replace another • Variations co-exist • Examples: • Two printer drivers - laser, ink-jet for a PC supporting both laser and ink-jet printers • Same product ported to a variety of: • operating systems • hardware • Multiple revisions of each variation may exist Software Engineering
Versions/variants/releases • Version An instance of a system which is functionally distinct in some way from other system instances • Variant An instance of a system which is functionally identical but non-functionally distinct from other instances of a system • Release An instance of a system which is distributed to users outside of the development team Software Engineering
Configuration management • Multiple versions need to be managed • CASE tool needed for configuration control • Many commercial tools available Software Engineering
Run-time routine Executable load image Object File 1 Object File 2 Object File n • • • • • • Source File 1 Source File 2 Source File n Forms of code • Source code • Object code • Executable load image Software Engineering
Scenario 1 • Report from SQA: module failed on a specific set of data • How does the programmer determine which revision of which variation went into the version? • Method-1 • Compile all versions and compare object code with the object code that went into the executable • Method-2 • Use version control Software Engineering
Version control for revisions • Operating system may provide version control, otherwise, use a separate tool • Maintain file name as • The file name itself • Revision number • Module that acknowledges receipt of message will have revisions: • acknowledgeMessage / 1 • acknowledgeMessage / 2 Software Engineering
Multiple revisions acknowledgeMessage / 1 acknowledgeMessage / 2 acknowledgeMessage / 3 acknowledgeMessage / 4 Revisions Software Engineering
Version control for variations • Notation • Have a basic file name • Followed by a variation name in parenthesis • Printer driver for inkjet and laser • printerDriver (inkjet) • printerDriver (laser) • Multiple versions of each variation • printerDriver (laser) / 12 • printerDriver (laser) / 13 • printerDriver (inkjet) / 2 Software Engineering
Version control for variations printerDriver (inkjet) / 2 printerDriver (laser) / 12 printerDriver (laser) / 13 printerDriver (laser) / 14 Software Engineering
Managing multiple versions • Use a version control tool • Keep a detailed record or derivation of every version of the product • Derivation contains: • Name of each source code element, including the variation and revision • Versions of source code compilers and linker • Name of person who constructed the product • Date and time of construction Software Engineering
Is maintaining multiple revisions enough? • No, problems with maintaining variations • Often a fault occurs in a variation and may have to be fixed for all the variations, in the same way. • Just store one variation, printDriver(inkjet), other variations are stored in terms of the list of changes to be applied to the original to get that variation – delta • For n variations, store • one variation • n-1 deltas • Can there be problems with deltas? Software Engineering
Problem with deltas • What if the main version is lost or corrupted? • More important: • Sometimes it is difficult to express each variation as a transformation from the main version • What about conditional compilation as an alternative to deltas? Software Engineering
More on configuration control • Configuration control can automatically manage different variations and do a lot more. • Handle problems caused by • Development and • Maintenance by teams Software Engineering
Configuration control during maintenance • Suppose programmers P1 and P2, are assigned two different fault reports. • Both faults are localized to the same module. • Each programmer makes a copy of the module mMod / 16 and starts fixing the fault • P1 fixes the fault first and replaces the module with mMod / 17. • Then P2 fixes the fault and installs mMod / 18 Software Engineering
Problems in previous example • All changes made by the first programmer are lost! • Only one user should be allowed to change a module at a time Software Engineering
Configuration Management ... During the development of software, change must be managed and controlled in order to improve quality and reduce error. Software Configuration Management (SCM) is an umbrella activity that is applied throughout the software process Software Engineering
Configuration Management ... • Software Configuration Management (SCM) - is the art of identifying, organizing and controlling modifications to the software being built by a development team Software Engineering
Configuration Management ... Software Configuration Management is a quality assurance activity that manages change throughout the software process Software Engineering
Formal definition (IEEE) SCM is the process of identifying and defining the items in the system, controlling the change of these items throughout their life cycle, recording and reporting the status of items and change requests and verifying the completeness and correctness of the items. Software Engineering
Configuration management • Pfleeger: • It is used throughout the life cycle • It is a set of procedures that track • Requirements that define what the system should do • Design modules that are generated from the requirements • Program code that implements the design • Tests that verify the functionality of the system • Documents that describe the system • Provides threads that tie parts of system together • Coordinate development activities Software Engineering
Configuration Identification Configuration Audits Configuration Control / Change Management Configuration Status Accounting Configuration Management Configuration Management Software Engineering
Configuration management terms • Configuration: • Functional and Physical characteristics of hardware and software as set forth in technical documentation or achieved in a product • Configuration Identification: • Define the product and its configuration documentation identification • Configuration Item • Information output of the Software Process • Change management: • Control changes to a product and its configuration documentation Software Engineering
Configuration management terms • Configuration Status Accounting: • Provide status and information about a product and its configuration documentation • Configuration Audits: • Verify consistency of configuration Software Engineering
Configuration identification • Agree on a basis for change • i.e. to what are changes applied? • Requires that baselines are established • Baselines can be defined for many phases • Functional or requirements baseline • Design baseline • Product or system baseline • Makes sense to establish baseline when product is relatively stable Software Engineering
Configuration identification • The current version is “frozen” • No one may make changes to the frozen version. • A baseline can consist of many Software Configuration Items (SCI) • Documents or artifacts explicitly placed under configuration control • Regarded as a basic unit of modification • IEEE Definition- baseline • 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. Software Engineering
Baselines Software Engineering
Configuration Management ... Information output of the Software Process - Software Configuration Items ( SCI ): • computer programs • source • executable • documents describing the programs • technical manual • users manual • data • within program • external Software Engineering
Configuration Management ... • As the Software Process progresses more and more SCI’s are spawned creating a hierarchy of information • Change may occur at any time for any reason Software Engineering
Configuration identification (contd) • How do you get a consistent system from the SCI’s? • when SCI’s may be getting changed • when there are many versions • Makefiles may be used Software Engineering
Identification of SCI • Requirements SCI - requirements document or chapters / paragraphs of document. • Design SCI - usually design document • Code level - multiple SCI’s • Each separately compile able module • Each file consisting of modules Software Engineering
Dependencies of SCI’s • One SCI X may “depend” on another SCI Y, if a change in Y might require a change in X for X to remain correct or for baselines to be consistent. • Change request may require changes to some other SCIs. Software Engineering
SCI’s System Specification Project Plan Requirements Specs graphical models process specs prototypes maths specs Prelim User Manual Source Code Listing Design Spec data design architectural design module design interface design object descriptions Test Specs test plan and procedures test cases and recorded results Configuration Management ... Software Engineering
SCI’s … Operation and Installation Manuals Executable Program module executable code linked modules Database Description schema and file structure initial content User Manual Maintenance Documents problem reports maintenance requests engineering change orders Standards/Procedures Software Tools editors compilers CASE tools Configuration Management ... Software Engineering
Configuration Management ... SCI’s are organized to form a database of Configuration Objects with: • name • attributes • relationships and are either: • basic objects or aggregate objects (components) Software Engineering
Configuration Management ... If a change is made to one configuration object it is possible to determine which other Configuration Objects are affected Software Engineering
Configuration Management ... Version Control Configuration Objects are baselined • before object is baselined it changes many times • after baseline all modifications are controlled • at baseline it becomes Version 1.0 Subsequent changes become new versions • > Version 1.1 -> Version 1.1.1 then 1.1.2 • > Version 1.2 etc. • >Version 2.0 etc. Software Engineering
Configuration Management ... Version Control combines procedures and tools to manage different versions of configuration objects whereas Configuration Management allows a user to specify alternative configurations of a system through the selection of appropriate versions Software Engineering
Maintaining modules • One version is frozen as the baseline. • Programmer takes a copy, makes changes and tests. • The new version is installed, thereby modifying the baseline. • The previous version is not altered, but is still retained. • How does this fix the problem of two programmers trying to work on fixing two faults? Software Engineering
Change control • SCI’s have been identified and dependencies are understood. • Decisions regarding change are taken by the configuration control board (CCB) • If an SCI is under development and not visible to other SCI’s, it is in the working state. • That SCI is not under SCM and can be changed. Software Engineering
Change control (contd.) • An SCI is given to the CCB for review once it is considered stable. • It is considered as frozen and any changes made privately by the developer are not recognized. • It is entered in a library, after which it is formally placed under SCM. • Once in the library, it cannot be modified by anyone without the approval of the CCB. Software Engineering
Change request (CR) • Reasons for a change: • requirement changes, errors, enhancements… • What does the CR contain? • First part • Description • Reason for change • Priority of the change • The SCI’s that are affected • Second part (filled by CCB): • Decision taken by the CCB (approved/not) • Actions needed to implement the change Software Engineering
Change request (contd.) • What does it contain? • Third part (filled by the implementer): • Status of change implementation • Change log to facilitate undoing of the change • CR has a unique number for reference • Evaluation of CR by considering • Effect of change on cost, schedule • Quality of project • Benefits • Evaluation may be recorded on the CR itself Software Engineering
Fault report (FR) • Common reason for a CR is the discovery of a bug or a problem • These are frequently on a different kind of form (FR) - High priority CR-- Assigned unique ID • FR also tracks the status of known errors • Description of the fault • Severity of the fault • Item suspected of being faulty • Effect of the fault Software Engineering