Chapter 8
Software Configuration Management

After completing this chapter, you will be able to:

  • understand the software configuration management activities as they are recommended by ISO 12207, IEEE 828, and the CMMI®;
  • understand how the change control process is used;
  • learn about code control and its branching strategies;
  • see how configuration management is possible in a very small project or organization;
  • list what is included in a configuration management plan;
  • understand what is recommended by the IEEE 730 standard for the project software quality assurance plan.

8.1 Introduction

In many industries, the result of a production process is a product that you can see, touch, and measure. In software, code is the most important deliverable and it is an intangible product for most people. To give it the most visibility, it is necessary to document it and communicate its characteristics at each step of its development. For the same reasons, during its life cycle, it will be possible to review it, improve it, and expand the documents supporting it. This progression originates from change requests, omissions, defects, and problems encountered when developing the product. Also, when software must reside on a processor that receives data and controls a process, changes to the hardware can result in change requests to the software. As long as the software supports a business process of the organization, modifications will need to be made to keep it current with the evolution of business rules and technology.

All these documentation activities and constant changes can become costly. In large projects, these activities represent a percentage of the effort that cannot be ignored. This is why it is important to be familiar with these activities, thus optimizing this effort. In this chapter, all the different activities of software configuration management (SCM) are explained. This topic is one of the knowledge areas that a software engineer should master and where software quality assurance (SQA) is actively involved to ensure project teams understand its importance and are guided given that it is an area that is often audited.

We have already discussed the importance of creating, updating, and managing quality records in the project file to keep track of all the changes that happen over time. Today, this information can be found in documents, emails, wikis, ticket systems, and team chats and contain a wealth of knowledge for the organization. Some say it is strategic to be able to harness this knowledge. Be it for knowledge transfer, project management, laws and regulations, or the obligation to conform to standards, organizations must be able to manage all this information coherently.

8.2 Software Configuration Management

The configuration of a system [BUC 96] is composed of many perspectives: functional from software, firmware and/or physical hardware, as normally described in the accompanying documentation of the product.

In this section, we present SCM processes as recommended by ISO 12207, IEEE 828, and the CMMI.

Essentially, SCM describes answers to the following questions [STS 05]:

  • who can make changes?
  • what changes were made?
  • what were the impacts of a change?
  • when did this change occur?
  • why were these changes made?
  • what version is currently in which environment?
  • what branching approach are we using for this project?

8.3 Benefits of Good Configuration Management

Good configuration management (CM) will bring about the following benefits [STS 05]:

  • reduce confusion, organize, and better manage software items;
  • organize the required activities that ensure the integrity of the many software products;
  • ensure traceable and current configuration of products;
  • optimize the cost of development, maintenance, and after-sales support;
  • facilitate the validation of the software with respect to its requirements;
  • provide stable development, maintenance, testing, and production environments;
  • improve quality and compliance to software engineering standards;
  • reduce rework costs.

8.3.1 CM According to ISO 12207

According to the ISO 12207 standard, the purpose of CM is to [ISO 17]: manage and control system elements and configurations over the life cycle. CM also manages consistency between a product and its associated configuration definition. SCM is part of SQA practices. SQA must give assurance that processes and products used in the development life cycle meet their requirements by planning, using and executing activities that ensure that quality is integrated in the final product during its production. The SCM activities help SQA meet its goals and the goals of the project. It is recommended that it be used by every software project, maintenance activity as well as for its infrastructure.

ISO 12207 defines the requirements of CM as an essential process for software developers. We will not describe the detailed requirements here but provide only a high-level description and focus on the expected results of using this process.

As a result of the successful implementation of the CM process [ISO 17]:

  • items requiring CM are identified and managed;
  • configuration baselines are established;
  • changes to items under CM are controlled;
  • configuration status information is available;
  • required configuration audits are completed;
  • system releases and deliveries are controlled and approved.

The six activities of the ISO 12207 CM process are [ISO 17]:

  • plan CM;
  • perform configuration identification;
  • perform configuration change management;
  • perform release control;
  • perform configuration status accounting;
  • perform configuration evaluation.

The six CM activities of ISO 12207 are composed of 19 tasks that are not described here. The last activity, however, includes audit configuration tasks that are described later in this chapter.

CM in ISO 12207 is also applicable to maintenance, hardware and base software. The maintainer will implement or use the CM process for managing modifications to the existing system. The scope also recommends that the configuration of the infrastructure should be planned and documented as well: the infrastructure (e.g., software tools) shall be maintained, monitored, and modified as necessary. As part of maintaining the infrastructure, the extent to which the infrastructure is under CM shall be defined.

8.3.2 CM According to IEEE 828

IEEE 828 is the IEEE Standard for Configuration Management in Systems and Software Engineering [IEE 12b] and provides the requirements and the details concerning the SCM process. IEEE 828 also supports the ISO 12207 standard. It states the minimum acceptable requirements for CM in both systems and software. Consequently, it applies to all class/type of systems or software.

IEEE 828 describes the CM activities to be performed at what point of the life cycle and describes planning and the required resources. The standard details the items that should be included in a CM plan and are aligned with ISO 12207 (for software engineering), ISO 15288 (for systems engineering), and ISO 15939 (measurement standard presented in a later chapter). According to IEEE 828, the purpose of CM is to [IEE 12b]:

  • identify and document the functional and physical characteristics of a product, component, output or of a service;
  • control any changes to these characteristics;
  • record and report each change and its implementation status;
  • support the audit of the products, results, services, or components to verify conformance to requirements.

IEEE 828 also specifies [IEE 12b] that CM establishes and protects the integrity of a product or product component throughout its lifespan, from determination of the intended users’ needs and definition of product requirements through the processes of development, testing, and delivery of the product, as well as during its installation, operation, maintenance, and eventual retirement. In so doing, CM processes interface with all other processes involved in the product's life.

8.3.3 CM According to the CMMI

The CMMI-DEV has a process area named “configuration management”. The purpose of this process area is to [SEI 10a]: establish and maintain the integrity of work products using configuration identification, configuration control, configuration status accounting, and configuration audits. This process area describes the following activities be conducted [SEI 10a]:

  • identifying the configuration of selected work products that compose baselines at given points in time;
  • controlling changes to configuration items (CI);
  • building or providing specifications to build work products from the CM system;
  • maintaining the integrity of baselines;
  • providing accurate status and current configuration data to developers, end-users, and customers.

These CMMI activities apply to both systems and software engineering. The following text box describes the specific goals (SG) and specific practices (SP) of this CMMI process.

Figure 8.1 shows a graphical representation of the CMMI recommendations for CM.

Table shows activities of CM with markings for establish baselines, establish integrity, and track and control changes.

Figure 8.1 CM activities according to CMMI [SEI 00].

8.4 SCM Activities

8.4.1 Organizational Context of SCM

In large organizations, the responsibility for SCM is often assigned to a separate department. In small organizations, the SCM tasks can be shared with developers performing software development tasks. Software is often developed as part of a system including hardware, software, and documentation. SCM activities included with project team responsibilities will need to align with the infrastructure CM (e.g., hardware and software). In this chapter, we will only focus on SCM.

SCM constraints that can make it difficult to meet these obligations originate from many situations. Published policies and procedures could impose or influence the use of SCM in projects. In the case of acquisition of software, an agreement or a contract may contain specific SCM clauses.

When software products planned to be developed may present safety issues, external regulating authorities and standards will likely impose the use of SCM.

Examples from the medical devices sector were described in Chapter 2 (Therac-25), however, similar problems can be happening right now all over the world in other domains such as avionics, nuclear energy, automobiles and banking, just to name a few.

8.4.2 Developing a SCM Plan

A SCM plan is typically developed during the planning of a project. It should be ready and approved by the time the project reaches the end of the software specification stage. During planning, the following should be considered: a list of SCM-related activities, the work and role assignments, the required resources and schedule, the choice and installation of tools, and the identification of supplier responsibilities.

The planning outputs will be placed in a separate SCM plan or in a section of the project planning documentation for agile projects and will be typically accessible for SQA review/audit. IEEE 828 [IEE 12b] defines six SCM information categories to be placed in the SCM plan (adapted from [IEE 12b]):

  1. Introduction to the plan (the purpose, scope, and terminology);
  2. SCM management (organization, responsibilities, authorities, applicable policies, guidelines, and procedures);
  3. SCM activities (configuration identification, configuration control, and other activities);
  4. SCM schedule (identification of the SCM activities in the project schedule);
  5. SCM resources (tools, servers, and human resources);
  6. SCM maintenance and updates.

IEEE 828 describes, in a normative annex, the content of a SCM plan. Following is a typical table of contents for a SCM plan:

  • introduction;
  • purpose;
  • scope;
  • relationship/dependencies with the organization and other projects;
  • references (e.g., policies, guidelines, procedures);
  • criteria for identifying which software elements will be placed under SCM;
  • description of the configuration to be managed;
  • development and testing configurations;
  • delivery configuration;
  • configuration identifiers and assignment;
  • versions and fixes numbering rules;
  • source code branching strategy;
  • marking rules;
  • repository content, location;
  • library management project rules;
  • architecture;
  • procedures for the creation of the library;
  • recording of elements in the project library;
  • access rules;
  • backups;
  • archiving;
  • project library control;
  • planned baselines and states.

If the software is developed and maintained for many years, as for the controls for railway and planes, it is necessary to add:

  • the source of the modifications;
  • a formal modification procedure;
  • the tools that were used to develop the software;
  • the verification records.

Organizational units that have to be involved in the SCM process have to be clearly identified. Table 8.1 illustrates the assignment roles for the execution of SCM of a complex project involving many players.

Table 8.1 Example of SCM Task Allocations [CEG 90a] (© 1990, ALSTOM Transport SA)

Task SCM manager Project manager Participants SQA Implementation manager
Collect and centralize change requests Produce        
Manage change request process Lead and request Participate   Participate Participate if system is modified
Manage access rights Produce Participate      
Name components     Produce    
Identify relationships Participate Produce     Participate
Mark items     Produce    
Store items

Keep items active and request archiving

       
Organize libraries Produce        
Control changes to the libraries Produce (form) Produce (content)      
Control completeness and coherence of the libraries Produce (form) Produce (content)      
Provide copies Produce        
Report on configuration status Produce        

Depending on the size of the project, the tasks listed could be managed by the project manager, whereas for very small projects, one or more different people could be directly involved.

Updates to the plan are approved when the need arises during development. Depending on the importance of the project, SQA can be done to ensure the plan is executed correctly. In more involved projects, SCM compliance audits can be called to ensure adherence to plans.

It can be a bit overwhelming to be assigned the development of a SCM plan for the first time. Most organizations have examples and templates that can be used to kick start this process. It is common to reuse the majority of sections of existing SCM plans in an organization. Therefore, SQA should ensure that the reference documents are of high quality so it can be reused in the future. Table 8.1 shows an example of SCM task allocations for a project.

8.4.3 Identification of CI to be Controlled

This activity aims at identifying which software elements will need to be controlled during the development and maintenance life cycle of the project to avoid creating elements without proper identification or links with other elements already identified.

The identification of CI requires: (1) an already established classification reference nomenclature for items and (2) a predefined list of planned baselines identified uniquely throughout the project schedule.

The definition of a baseline implies that a document or software product was approved following a formal review. It is then available to the customer or ready for another step in the development process. Baselines for the production of new versions are also used.

The different project artifacts are typically located in a document or on the project server in folders (see an example in Figure 8.2). This folder structure is often mandated by the SQA or the project office as good practice for all projects. We will see in section 8.8 that this structure can be repeated in all the branches of the CM repository. It is recommended that developers do not change this hierarchy so that it is consistent during the project and can also be compared with other projects.

Window shows directory structure example which is used to control configuration with sections for folders and repositories.

Figure 8.2 Example of a directory structure to control configuration with the Subversion CM tool.

8.4.3.1 Identification of CI

Each CI should be assigned a unique identifier that helps with recognizing the evolution of the item over time and can be recognized by everyone involved in a project.

An identifier is composed of a fixed part and a variable part. The fixed part is the name and the variable part reflects its evolution. When an evolution of the item does not add value, we call it a revision. This is the case when an item has been corrected or improved but no functionality, interface or operational constraints have been altered.

To indicate that an evolution of a configuration item affects descending compatibility but ensures it still works with previous versions of other CI, we use a new release version. This is the case when functionalities or existing interfaces were not modified but new interfaces and functionalities were added.

For example, for a radar display software-based system, we could use the following naming convention: Identification of the contract—System identification— Identification name of the software component—evolution indicator (version/revision). For version 1 and revision 2 of the architecture document of the radar display document, we would obtain: C001-Rad-Aff-DA-01-02.

8.4.3.2 Configuration Item Marking and Labeling

Marking identifies a configuration item such as a software or a requirement specification document.

A software item could be identified with the help of the following information (e.g., its metadata): the software component identification information, its author, its creation date, its functional description, its history of modifications including a date, the modification reason as well as the author and finally, a summary of its design. For documents, this metadata could be saved using the following structure: a presentation page, a section explaining the evolution of the document, the main text, and possibly attachments.

The presentation page could contain the following information:

  • the name and address of the organization;
  • the document author name;
  • the document creation date (yyyy-mm-dd);
  • the document version;
  • the security level (e.g., confidential, limited circulation, secret).

The evolution section is updated when the document is modified and includes the following information:

  • the version indicator;
  • the date of change: yyyy-mm-dd;
  • the section or page that was modified;
  • a brief description of the modification.

The evolution section is often formatted as a table as shown in Table 8.2.

Table 8.2 Example of Table Describing the Evolution of a Document

Revision Date (yyyy-mm-dd) Page or section modified Author Description of the modification
00     C. Laporte First version
1.1 2006-03-01 P 5 A. April Added section 2.1
1.2 2007-02-13 Section 3.1 A. Abran Corrected a reference

8.4.3.3 Selecting CI

A software configuration item (SCI) is an aggregation of software components identified for CM and treated as a whole (e.g., one entity) by the SCM process. In addition to the source code, there are a number of software work products, such as plans, requirements, specifications, and design documents, that can be controlled by SCM. The project manager and his team must decide which ones to select to be controlled by the SCM process.

The SCI selection is always some form of compromise between enough visibility to provide tight control on an element versus not managing it at all. It is not possible to tightly manage all the elements of a software project at a reasonable cost. Once an item is chosen, it will be subject to formal review and acceptance by a number of individuals. Some reviews are not too formal, as we have seen in the review chapter. Formal reviews, on the other hand, require that a process be followed, minutes be issued and that defects be tracked, corrected and verified. This is why choosing the right amount of CI is an important task. The following text box lists criteria to help with this decision.

8.5 Baselines

A software development life cycle model defines each of the development processes uniquely and places them in a pipeline. Each step is defined as a coherent group of activities and is characterized by a dominant activity. Normally, to ensure its quality, a review is performed at the end of each stage or iteration.

A baseline is a set of CI that have been carefully pre-selected and are fixed along with specific milestones throughout the project. A baseline can only be changed through a change control procedure. A given baseline, plus all the changes subsequently approved to it, represents its current configuration. This is important because we want our employees to work on the right version of things and know where they are. The baselines for key project milestones commonly referred to by team members and listed in a typical CM plan are:

  • specification;
  • design;
  • construction;
  • integration;
  • validation;
  • delivery.

Figure 8.3 shows an example of a product development cycle that includes hardware and software. The dotted lines indicate some of the milestones. For example, the system requirements analysis phase produces the software and hardware requirements document. A review of this document, called “System Requirement Review,” is then performed with the customer. Once this document is approved, it is placed in the functional baseline of the project. Then, the document software requirements are reviewed by the development team. It can then be presented to the customer for approval at a formal review called the “Software Specification Review.” Once this document is approved, it is stored in the repository called “allocated baseline.” Other software reviews that could occur are: a review of the preliminary design (Preliminary Design Review), a detailed design review (Critical Design Review), and a review to ensure that software components are ready for testing (Test Readiness Review).

Diagram shows project life cycle example with labels for hardware, software, system design, functional baseline, allocated baseline, et cetera.

Figure 8.3 Example of a project life cycle where planned baselines are indicated.

Once the CI are tested and corrections are made, they are incorporated into the hardware. Lastly, the system is production tested and is then validated with the client.

Figure 8.4 presents elements of the specification phase of a project using the Entry-Task-Verification-eXit (ETVX) process notation [RAD 85] described in an earlier chapter. Notice that a CM plan is part of the inputs. Other CI will also be added to the baseline throughout the software life cycle.

Table shows specifications description steps with columns for inputs, tasks, and outputs.

Figure 8.4 Description of the specifications steps using ETVX notation.

Following the incorporation of a SCI into the SCM repository, any further changes to the SCI will need to be approved as described in the SCMP. Following this approval process, the item will be incorporated to its proper location in the project repository.

8.6 Software Repository and Its Branches

There are many options for SCM repository tools, often called version control software or software repository. They have been created to facilitate working as a group on software development, maintenance, and production, where code and documentation need to be shared and updated.

The software repository is central to development, maintenance, and release management activities during a project. Table 8.3 lists some of the functions of a software repository. Several types of libraries may be employed. For example, one of following three types of libraries can be used:

  • Private library: used by the developer to make or modify CI, for development or unit testing activities;
  • Project library: accessible to all the members of a project, it contains the elements likely to be used by the team members. This library is the official source of all information about the project. Its access is normally controlled;
  • Public library: is often where the library elements common to several projects, such as common tools and reusable components, are located.

Table 8.3 Examples of Functions Provided by the SCM Repository

Functions of a software repository
Supports multiple levels of SCM (managers, developers, SQA, systems engineering, etc.);
Enables the storage and retrieval of CI;
Enables the sharing and transfer of CI between groups and developers;
Enables the storage and recovery of archive versions of CI;
Provides verification of status, of the presence of all the elements, and allows for the integration of changes into new baselines;
Ensures the correct build and correct versions of products;
Provides storage, update, and retrieval of SCM records;
Supports the production of SCM lists and reports;
Supports backward and forward traceability of the requirements throughout the life cycle;
Provides safe storage and restricted access of CI so that they cannot be changed without authorization.

Source: Adapted from [CEG 90a].

When configuring the SCM repository, a number of decisions must be made by the librarian. It might be a bit confusing (see Figure 8.5) the first time you do this but after using it for a time, this becomes second nature. One key item of the SCM plan is the proposal of a branching strategy that will be appropriate for the project. Nearly every software repository tool has some form of branching support. Branching means you diverge from the main line of development (also called the trunk) and continue to do work without affecting them. This is called isolating yourself. In many tools, this is a somewhat expensive process often requiring you to create a new copy of your source code directory, which can take a long time for large projects. You will also find many other resources online. The following text summarizes the basic strategies for typical branches used in software development projects.


Before getting into the description of the different branching strategies, we draw your attention to the fact that each branch incurs a certain management cost. It is therefore important to choose a strategy that will have a minimal impact on your specific project. Adding a new branch has the potential of additional costs that will be incurred later, in the integration and testing phases. With this in mind, here are just some of the many popular branching strategies (e.g., patterns) used in software projects:

  • simple: two to three developers working together on a project;
  • typical: four or more developers working on a project requiring several versions;
  • advanced: five or more developers working on the same project;
  • functional: five or more developers working on specific functions, resulting in several versions.

The elements of these strategies are iterative, so it is possible to start with a simple strategy and gradually move toward an advanced strategy. Again, trying to minimize the complexity of your project in order to facilitate its development is the key to success with SCM.

8.6.1 A Simple Branching Strategy

This strategy is appropriate for simple cases, for the development of a website for example, and requires the creation of two types of branches (see Figure 8.6):

  • the main branch;
  • the versions branch.
Diagram shows strategy of bad branching where person is cutting branch he is sitting on.

Figure 8.5 Choosing a bad branching strategy.

Source: Used under license from Shutterstock.com.

Flow diagram shows main branch leads to branching, leads to version 1.0.1 and version 1.1.3.

Figure 8.6 The simplest branching strategy of versions by branch.

This simple branching strategy proposes that the main branch is used by the developers of the software. It implies that the main branch must remain stable at all times as we are always in it. Once the software is quite advanced and the team wants to deliver a version to its client, a version branch is created (e.g., 1.0.1) that will contain a complete version of all artifacts from the first production version. On the main branch, the team can continue working and improving the software. Over time, the development team will be ready to deliver a subsequent release and create another release branch (e.g., 1.1.3) and this branch will become the new production version for the client. The previous branch can be kept as historical or may be archived given that the customer has been provided a new version.

This strategy is appropriate for the following conditions:

  • a very small team who works in the same location in order to communicate easily;
  • corrections to production software require a fusion to the main branch. These must be closely controlled because they are made directly within the development branch;
  • new version shipped from the main branch includes all previous changes from this branch.

8.6.2 A Typical Branching Strategy

This strategy responds to the needs of more than 80% of the SCM requirements for software projects. It requires the implementation of three branches (see Figure 8.7):

  • a main branch;
  • a development branch;
  • a production branch.
Flow diagram shows labels for development branch, branching, trunk, and feature (version).

Figure 8.7 A typical strategy of development and production branches.

In this strategy, no one works directly in the main branch. It is only used for the integration of components from the team members. This strategy will force team members to work in the development branch. It is in this branch that most of the activity and changes will take place. The development team must control its content. As a general principle, components in a branch should always be able to compile without error. The main branch will receive an intermediary version from time to time that marks progress and can be used for demonstrations as well. Its rate of change will depend on the number of merges coming from development (typically every few days, but at least once a week). Finally, the version branch will also be quite stable as it contains the production version. This branch can be used to fix production problems but if it is changed, then someone must merge these changes to the development branch to ensure it is kept in sync. This strategy can be applied in the following situations:

  • delivery of a unique major version;
  • delivery of a major version at fixed intervals;
  • every new version delivered, coming from the version branch, includes all the changes from the previous versions.

8.7 Configuration Control

Configuration control (also named change control) is concerned with managing changes during the project. Change control identifies and documents the relative importance of proposed or needed changes to the product, when they will be deployed and who will approve the change (except urgent fixes that will follow a fast path process).

Changes to the software can have several origins:

  • problem reports (PR), or trouble report (TR), from the development team, maintenance team, or customer;
  • modification/evolution requests (MR) communicated as a result of an environment change or the need for new features;
  • requests from maintenance and infrastructure (preventive and perfective) issued to improve the maintainability of the software.

In some organizations, these types of changes require that an engineering change request be raised in a centralized system (e.g., often referred to as a change report or ticket). Figure 8.8 describes the impact of a change request involving software and its intermediate products.

Flow diagram shows change request impact where change request leads to business requirement, software functional requirement, architecture, user interface, functional design, et cetera.

Figure 8.8 Impact of a change request on a software [WIE 13].

8.7.1 Requests, Evaluation, and Approval of Changes

A change request management process, as shown in Figure 8.9, describes the typical sequence for processing a change request (called a ticket in some environments):

  • the customer (internal or external) or a team member submits a request;
  • a maintainer evaluates the priority, impact and cost;
  • the Change Control Committee (CCC) or Configuration Control Board (CCB) reviews and approves the change;
  • the change is made to the software and associated documentation;
  • the change is tested and approved by the end-user;
  • the change is moved to production or installed in a system and verified afterward;
  • the change request or ticket is closed and then later archived.
Flow diagram shows workflow of change request change management where submitted leads to evaluated, leads to approved and rejected, rejected leads to archived, approved leads to change made, et cetera.

Figure 8.9 Change request change management workflow.

Source: Adapted from Wiegers (2013) [WIE 13].

Note that the request will change state at each stage of this process (see Figure 8.9).

During the verification activity, developers and maintainers will also typically perform a series of regression tests to ensure that a change has no impact on other characteristics. Some automation servers, like Jenkins (https://jenkins.io/) or locally developed test robots are also used to perform accelerated regression testing.

Regarding critical software, it is common to add evaluation tasks to assess the level of risk for each of the proposed changes. Individuals who can conduct this type of risk evaluation will need to be invited to contribute to the impact analysis of this change request.

The notion of traceability was introduced in an earlier chapter. Traceability is also used in SCM to facilitate the impact analysis of a change request.

8.7.2 Configuration Control Board

Typically, the authority that can accept or reject a proposed change to a software is named a configuration control board (CCB) or a change management office. In smaller projects, this authority may be directly delegated to the project manager or a maintainer. There may be several levels of change authority depending on your organizational processes, the criticality of the software involved, the nature of change (e.g., impact on budget or schedule), or the current step of the life cycle of the project.

The composition of a CCB with respect to a particular project changes on a case by case basis depending on the criticality of the change. The project specialists, according to project size and criticality, may be asked to give their opinion at CCB meetings. In addition to the project manager, a SCM representative and even a SQA representative may be present to verify that the change process and CM plan are followed.

The main tasks of the CCB are: take a go/no-go decision, assign a priority, assign the change to a future version, answer request issuers, issue access rights to libraries and write a change order with decisions taken. The change request includes the following information: identification of the affected software, the list of items in a baseline to modify, SQA tasks to ensure quality checks, if any.

8.7.3 Request for Waivers

The constraints imposed during the development activities may lead to situations where some constraints may need to be relaxed to ensure the success of the project (e.g., a process is not adequate to meet project needs, a request for a non-compliance). A waiver may then be raised on project plans or obligations (e.g., agreement or contract) of the approved life cycle processes. A waiver is an authorization to depart from an obligation. When approved, it also allows the use of that item when completed although it does not meet all of its requirements.

A procedure for submitting and approving waivers should be described in the organizational processes.

8.7.4 Change Management Policy

A policy sets out general principles that have to be followed and are reflected in the processes and procedures of an organization. The elements of a change management policy are:

  • the original text describing a change request will not change or will not be deleted from the organizational repository;
  • each changed requirement will be traceable to an approved change request;
  • all changes to requirements should follow the SCM process. If a change request is not documented, it will not be considered;
  • a CCB is created for each project;
  • the contents of the change request library must be available to all project team members;
  • no design or development/maintenance work can be initiated on unapproved changes, with the exception of exploration or feasibility studies required by the CCB.

8.8 Configuration Status Accounting

The status accounting of CI represents all the recording and reporting activities required for managing the SCM.

8.8.1 Information Concerning the Status of CI

Information concerning the state of configuration elements must be identified, collected, and maintained. The following information should be available to managers and developers: the approved configuration identification, as well as the identification and current status of changes, deviations and waiver approvals. SCM items are recorded in sufficient detail so that previous versions can be recovered when needed. Questions answered by the status of CI:

  • what is the status of item X?
  • was change request X approved or rejected by the CCB?
  • what has changed in this new version of this item?
  • how many defects were detected last month and how many are corrected?
  • what is the cause of this change request?

8.8.2 Configuration Item Status Reporting

Reported information can be used by various organizational units and the project team. The CMMI noted that this report typically includes [SEI 10a]:

  • the meeting minutes of the change management board;
  • the summary and status of change requests;
  • the summary and status of problem reports (including corrective measures);
  • the summary of changes to software repositories;
  • the revision history of CI;
  • the state of software repositories;
  • the results of audits of the software repositories.

Figure 8.10 shows the output of a tool that reports on CI.

Window shows status report example using Commit Monitor tool with options for CVS root and local path, section for filters, and table shows columns for date, author, message, and file.

Figure 8.10 Example of a status report with the Commit Monitor tool [COL 10].

8.9 Software Configuration Audit

As presented already, the IEEE 1028 standard defines audits as an independent examination of a software product, software process, or set of software processes performed by a third party to assess compliance with specifications, standards, contractual agreements, or other criteria [IEE 08b].

A SCM audit could be called for a software project to assess how CIs satisfy the functional and physical characteristics needed and as well as to assess how the SCM plan was implemented in the project. Two types of formal audits are typically performed: a functional configuration audit (FCA) and the physical configuration audit (PCA). Details about these audits can be found in the informative annex J of IEEE 828 titled “Examples of how configuration auditing is applied.” We will now present an overview of these two audits.

8.9.1 Functional Configuration Audit

The objective of the FCA is to provide an independent evaluation of software products to verify that the actual functionality and performance of each configuration item is within specifications. FCA should be concerned not only with the functionality, but also with the non-functional requirements. FCA typically includes the following [KAS 00]:

  • an audit of test documentation and test results;
  • audit reports of V&V to ensure their accuracy;
  • a review of all approved changes to ensure they have been properly incorporated and verified;
  • a review of updated documents to ensure their accuracy;
  • a sampling of minutes of design meetings to ensure that all findings have been incorporated;
  • a sampling of performance and other non-functional test results for completeness.

FCA of the outputs of the design process verifies the following [IEE 12b]:

  • traceability between the design items and their sources (requirements);
  • every requirement is linked to at least one design element;
  • every design element is linked to at least one requirement that justifies it.

8.9.2 Physical Configuration Audit

The objective of the PCA is to provide an independent assessment of CI to confirm that each element that makes up the software as delivered is present and traceable to specifications [KAS 00]. This audit verifies that the software and documentation are correct, consistent and ready for delivery. The available documentation typically includes: installation manuals, operation manuals, maintenance manuals, and version description documents.

A PCA will typically include the following elements [KAS 00]:

  • an audit of specifications to ensure completeness;
  • a review of the problem reporting and change management process;
  • a comparison between the architectural design and components to ensure consistency;
  • a code review to assess compliance to coding standards;
  • audit documentation to ensure the completeness and compliance with the format and with functional descriptions. These manuals include user manuals, programmer's manual, and operator's manuals.

PCAs of the outputs of the requirements process in the life cycle verify the following [IEE 12b]:

  • requirements assets have been placed under configuration control;
  • requirements assets have been properly labeled in accordance with the CMP;
  • an inventory of requirements assets exists and correctly reflects the attributes of each CI;
  • there is evidence of the use of change control procedures for each of the changes made to previous baselines, if any (for example, in a previous iteration).

8.9.3 Audits Performed During a Project

These audits are required during the phases of design and development (before the PCA and FCA) to verify the consistency of the design during its evolution. These audits are performed [KAS 00]:

  • to verify that the interfaces between hardware and software comply with the design;
  • to verify that the code is fully tested and that business requirements are met;
  • to check whether the product design throughout the development meets the functional requirements;
  • to check whether the code adheres to the detailed design.

8.10 Implementing SCM in Very Small Entities with ISO/IEC 29110

As described in the management and engineering guide of the Basic profile of the ISO 29110 standard for a small organization, a simple approach to CM is to perform the following tasks [ISO 11e]:

  • identify components;
  • describe the standards that will be used during a typical project;
  • formalize the reviews before a configuration item is deposited in the repository;
  • establish a simple change control process;
  • establish the library and control access;
  • manage change requests;
  • occasionally check that the backups to the repository were correctly performed.

ISO 29110 recommends that a repository be set up to store work products and their versions. Table 8.4 describes one task of the software process associated with CM.

Table 8.4 A CM task of ISO 29110 [ISO 11e]

Role Task list Input work products Output work products
TL

SI.3.8 Incorporate the Software Design, and Traceability Record to the Software Configuration as part of the baseline.

Incorporate the Test Cases, and Test Procedures to the project repository.

Software Design [verified]

Test Cases, and Test Procedures [verified]

Traceability Record [verified]

Software Configuration
  • Software Design [verified, baselined]
  • Test Cases, and Test Procedures [verified]
  • Traceability Record [verified, baselined]

Table 8.5 shows an example of the suggested content of a change request as proposed by the ISO 29110 management guide. The column on the right shows the source of the request, that is, who asked for the change. In this example, a change request could be raised by the customer, by the development team or the project manager. Note that the states of the request are also listed at the bottom of the description column.

Table 8.5 A Change Request as Recommended by ISO 29110 [ISO 11e]

Name Description Source
Change request

Identifies a software, or documentation problem or desired improvement, and requests modifications. It may have the following characteristics:

  • identifies purpose of change;
  • identifies request status;
  • identifies requester contact information;
  • impacted system(s);
  • impact to operations of existing system(s) defined;
  • impact to associated documentation defined;
  • criticality of the request, date needed.

The applicable statuses are: initiated, evaluated, and accepted.

Customer

Project manager

Software implementation

8.11 SCM and the SQAP

The IEEE 730 standard [IEE 14] defines the requirements for SQA activities during the project. As we said earlier, each project needs to have one SQAP. Here are the questions that the project team must answer before project planning is approved:

  • has an appropriate and effective SCM strategy, including change control processes, been developed?
  • has the completeness and consistency of CI been ensured?
  • has consistency and traceability been planned between CI?
  • has the storage, handling, and delivery of CI been controlled?

The SQAP should describe the SCM activities that are planned, how they should be performed, and who is responsible for SCM tasks. This plan should also define the methods and tools used to conserve, store, secure and control software records and artifacts, and all their versions, created during all phases of the software life cycle.

During project execution, the team should ask the following questions related to the evaluation of their adherence to the SQAP as well as the tracking of the status of the CIs:

  • has an appropriate and effective SCM strategy, including change control processes, been implemented?
  • have items generated by the process or project been identified, defined, and baselined?
  • are the requirements allocated to the system elements and their interfaces traceable to the customer's requirements baseline?
  • have modifications and releases of the items been controlled?
  • has documentation been maintained in accordance with defined criteria?
  • have modifications and releases been made available to affected parties?
  • has the status of the items and modifications been recorded and reported?
  • has the completeness and consistency of CI been ensured?
  • has the storage, handling, and delivery of CI been controlled?

Concerning the tracking of change requests and problem reports, the following questions should be addressed:

  • has an appropriate and effective problem management strategy been developed?
  • are problems recorded, identified, and classified?
  • are problems analyzed and assessed to identify an acceptable solution(s)?
  • are problem resolutions implemented?
  • are problems tracked to closure?
  • is the status of all problems reported and known?

If a project is required by its customer to have a stand-alone CM plan, then information listed in IEEE 730 could be used to develop a CM plan separate from the SQAP. IEEE 828 could be used to develop the CM plan. In such a case, the SQAP would have to refer to the CM plan regarding CM issues.

8.12 Success Factors

Following are some factors related to an organization's CM practices that can promote or discourage the development of quality software.

Here are some excuses that you may hear when you want to implement SCM in your project [SPM 10]:

  • SCM applies only to code;
  • SCM applies only to documents;
  • SCM is not required because we use the latest technology and agile processes;
  • It's not such a big project;
  • It slows down our technical staff when it's time to make a quick change during testing;
  • We made the change without bothering to submit a change request because we want a satisfied customer and this is only internal paperwork;
  • We do not need a separate CM system because it is automatically done by the IDE tool we use for development;
  • Changing documentation is a thing of the past-we change the source code directly;
  • We do not have the SCM on many of our external interfaces because they are the responsibility of other agencies;
  • SCM is a practice used by the department of defense (DoD) and we do not make software for the DoD;
  • We do not put software architecture and detailed design under the constraint of formal change management during development because it limits our flexibility and productivity;
  • We do not put the operating software, custom software, libraries and compilers under SCM because its available online.

8.13 Further Reading

  1. CASAVECCHIA D. Reality configuration management, Crosstalk, November 2002.
  2. DJEZZAR L. Gestion de configuration: maitrisez vos changements logiciels, Dunod, Paris, 2003.
  3. JOHANSSEN HASS A. Finding CM in CMMI, Crosstalk, July 2005.
  4. LEISHMAN T. and COOK D. But I Only Changed One Line of Code!, Crosstalk, 2003.
  5. PHILLIPS D. Go Configure, Understanding the principles and promise of configuration management, STQE, vol. 4, Issue 3, May–June 2002.
  6. RINKO-GAY W. Preparing to choose a CM Tool, STQE Magazine, July–August 2002.
  7. WIEGERS K. Creating a Software Engineering Culture, Control Change Before It Controls You. Dorset House, New York, 1996, Chapter 15.

8.14 Exercises

  1. Present a definition and the expected results of using SCM.

  2. What are the issues/problems addressed by SCM?

  3. What are the six SCM information categories that need to be included in a software configuration management plan (SCMP)?

  4. Why do we need to place our tools, software and the libraries used for developing a software under configuration management?

  5. How do we identify the CI to be controlled in a project?

  6. List the potential tasks to be executed when changing an existing requirement in an ongoing project. Using this list, create a checklist of items that are impacted when there is a change to an existing requirement during a project.

  7. Extend the checklist developed in question 6 by adding the software items affected by the proposed requirement change.

  8. Describe the typical branching strategy used to manage the software configuration of source code during a software development project?

  9. Develop a process map that explains how to process a change in your software project.

  10. Your project includes firmware. Are the SCM concepts that apply to hardware and software independently also applicable to the firmware portion of your project?

  11. Your manager asks you to perform an impact assessment for a major change planned in your portion of the existing software. He also sends you a copy of the new requirements to be added to the software. Develop a list of SCM factors you need to consider in order to provide a better estimate of this impact (e.g., effort, schedule, etc.).

  12. Regarding the criteria for selecting the software CI: what are the consequences (e.g., risks) of the lack of choosing all the necessary CI for your project?

  13. According to the CMMI-DEV model, what is suggested in a SCM report?

  14. Write a checklist for a FCA.

  15. Write a checklist for an audit of physical configuration.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.184.90