3 Software Configuration Management

Introduction

 

Software configuration management (SCM) is a software-engineering discipline comprising the tools and techniques (processes or methodology) that a company uses to manage change to its software assets.

 

SCM enhances the reliability and quality of software by:

 

• Providing structure for identifying and controlling documentation, code, interfaces, and databases to support all life-cycle phases

• Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy

• Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.

 

When implementing SCM tools and processes, you must define what practices and policies to employ to avoid common configuration problems and maximize team productivity. Many years of practical experience have shown that the following best practices are essential to successful software development:

  • Identify and store artifacts in a secure repository.
  • Control and audit changes to artifacts.
  • Organize versioned artifacts into versioned components.
  • Organize versioned components and subsystems into versioned subsystems.
  • Create baselines at project milestones.
  • Record and track requests for change.
  • Organize and integrate consistent sets of versions using activities.
  • Maintain stable and consistent workspaces.
  • Support concurrent changes to artifacts and components.
  • Integrate early and often.
  • Ensure reproducibility of software builds.

Change is continues in day to day life. In software development also changes come often. In all phases of the system life cycle, the system will change continuously. Therefore, it is necessary to provide a facility for making changes in the software developed in a project. The main objective of this chapter is to introduce the Software Configuration Management (SCM) Techniques and activities, explain the role of baseline in SCM, explain the concept of change management process and to explain the procedures adopted for approval of changes. Therefore, software configuration management is the art of identifying, organizing, and controlling modifications to the software being built by a programming team in order to maximize productivity by minimizing mistakes.

 

Change Control Objects

 

In software development, changes are starting from business requirement and goes upto documentation. Therefore, changes will come in requirements document, design document, program code, test reports and data. All these changes must be performed using a systematic procedure. The major software configuration items are programs, data and documents as shown in figure 1.

 

Figure 1. Software Configuration Items

The major items in software configuration management include system specification, software project plan, software requirements specification, preliminary user manual and design specification. With that items the major grouping namely source code listing, test plan and procedures, manuals for installation & operation and executable software can be performed for effective management.

 

Change and Software Configuration Management

 

The steps involved in software configuration management are identification, version control, change control, auditing and reporting. All these activities are supported by suitable tools, methods, procedures and total quality management foundations. Therefore, the activities such as identification of changes, application of change control procedures, ensuring that changes are being properly implemented and reporting the changes to others who may have an interest are to be carried out effectively for proper change management.

 

Baseline

 

A baseline is an SCM concept which helps to control the changes without seriously affecting the justifiable changes. Therefore, a baseline is a logical specification that has been formally reviewed by a review team and is agreed upon by the development team. Hence, thereafter the baseline serves as the basis for further changes in the development. Any new change can be changed only through the application of formal change control procedures. This implies that once a baseline is established, changes can be made to the configuration objects only thorough a formal procedure, which evaluates and verifies each change.

 

The following questions must be answered by SCM:

 

•         How to manage the change requests?

•         What are the components to be changed and where are they?

•         What is the current status of each modifiable component?

•         Is there side effect due to the change in one component on other components?

•         How to handle the conflicts in changes?

•         How to perform version control?

•         How to keep the system with recent updates?

SCM Task1 : Identification of Objects

 

In SCM, the configuration objects may be either a basic object or an aggregate object. The basic object is a “unit of text” which has been created by a software engineering team during analysis, design, coding, or testing. On the other hand, an aggregate object is a collection of basic software configuration objects and other aggregate objects which are formed from basic objects. In addition, each object has a set of distinct features that identify the particular object uniquely using its name, the description made, the list of resources related to this item and a realization of the object.

 

SCM Task 2: Version Control

 

Whenever a new software is made by extending the old software, a new version number is provided. The version numbers can be in terms of 1,2,3, etc., or it can be 1.0, 1.1, 1.2 and so on. Therefore, version control technique combines the procedures and methods used to manage different versions of programs, software and configuration objects. It can be either as simple as specifying a version number or it can be so complex that a new data structure may be introduced to indicate the specific types of functional changes which have been applied to the existing system to provide a new system.

 

SCM Task 3 : Change Control

 

The change control procedure combines human procedures and automated tools to provide a mechanism for the control of changes. In change control first the need for change is recognized. Once it is identified, the user create a Change Request (CR) by filing a change request form. Th eform is submitted by the user to the development team. The development team evaluates the change request and submits a report to the change control body. Based on this report, the change control body can either approve or reject the change request. If the change request is approved, an engineering change order is generated and put in the queue for processing. If it not approved, it is given in two categories namely the first category in which the requestor is asked to produce more information. In the second category, the change request is fully rejected. In the second case, the requestor cannot appeal again for the changes required.

 

If the changes are approved, staffs are assigned to implement the change order. In this scenario, the source code, documents and data are checked out for making changes. Once the changes are made, it should be reviewed, audited and tested using baseline checking and testing activities. The modified source code is checked in for storing in the database. It must include all changes in the new release.

 

Access Control

 

Figure 2 shows the procedure used to perform check- in and check-out of software configuration items. Form figure 2 it can be observed that change control requires restricted access to the configuration objects. Moreover, an ECO (engineering change order) must be generated by the Change Control body and required for “check-out”. After changes are made and have been reviewed, the changed configuration item is ready for “check- in”. in this scenario, the access control policies govern which software engineers have the authority to access and modify a particular configuration object.

 

Figure 2. Access Control

SCM Task 4 : Configuration Audit

 

The next step in software configuration management is configuration audit. In this process, it is necessary to check whether a change authorized by an ECO has been properly implemented must be checked. In addition, formal technical reviews must be conducted and software configuration audit must be carried out. In this scenario, the formal technical review focuses on the technical correctness of the configuration object that has been modified. Moreover, software configuration audit is used to assess a configuration object for other characteristics. In software configuration audit the following questions must be considered for approving the changes.

  •  Has the change specified in the ECO been made? Have any additional modifications been made?
  •  Has a formal technical review been done?
  •  Have software engineering standards been followed?
  •  Has the change been “highlighted”?  Have the change date and author been specified?
  •  Have SCM procedures been followed?
  •  Have all related ECOs been properly updated?

In this way, change control management is carried out by taking the items from the database and stored back whenever the configuration process is completed.

 

SCM Task 5: Configuration Status Reporting

 

In any activity, status reporting is an important activity. Therefore, any changes made to existing software, status reporting must be performed. Moreover, this reporting must be able to provide suitable answers to the queries namely what happened, when it has happened, who did it and any other modules are affected by the changes in one module.

 

Summary

 

There many advantages which are beneficial to the developer and customer by the application of software configuration management procedure. Therefore, SCM reduces the effort required to manage and effect change with improved productivity. Moreover, SCM leads to better software integrity and security and thereby provides increased quality. Using software configuration management, it is possible to generate information about the process which is used to perform enhanced management control. It is also beneficial with respect to storage since it maintains a software development database and thereby provides a facility for better record keeping and tracking. From SCM process, it can be seen that quality is based on good testing. Moreover, SCM can be applied to improve the quality using process and product metrics as well as reviews.