What is CrazyEngico.com (CE)?

CrazyEngico (CE) is a one-stop solution for interview questions and answers, domain knowledge, e-learning, tutorials, articles and many more learning material.
e-learning - Intelligent e-learning tutorials and articles
Domain Knowledge Learn about various business domains/verticals such as Banking, Financial, Insurance, Healthcare and many more...
Interview Questions and Answers - Post your questions and answers. 1000+ database of ready questions and answers available to prepare for an interview.
Tutorials - 300+ video tutorials from beginner to expert level.
Articles - 300+ technical articles to understand concepts.
Forum - A technical forum to post your queries/responses.

e-learning > Software Configuration Management

Software Configuration Management

Author: Vishwanath Paibir


What happens when the same code is modified by two different people? How do we maintain consistency and preserve code changes? How do we manage and keep things under control to complete software projects on time and within budget? How do we control this chaos and confusion? One answer to all these questions lies in implementation of good Software Configuration Management (SCM) system in an organization. In this article, we will first define Software Configuration Management. We will discuss the importance and benefits of SCM. Finally, we will discuss SCM key players, SCM concepts, and SCM activities.

Today software systems are becoming complex and large. Companies developing the software are spread across the world. Development of software takes place around the world, where multiple teams contribute to the project. Multiple people are working on the same piece of software. They modify the same code at the same time but at different locations. What happens when the same code is modified by two different people? How do we maintain consistency and preserve code changes? How do we manage and keep things under control to complete software projects on time and within budget? How do we control this chaos and confusion? One answer to all these questions lies in implementation of good Software Configuration Management (SCM) system in an organization.

SCM system provides all the key players involved in a software project, to work efficiently and effectively by developing and maintaining complex software systems. SCM is a process which helps in managing, monitoring, and controlling the process of software development throughout the Software Development Life Cycle (SDLC) process. According to Leon, "SCM is a process used for more efficiently developing and maintaining software, which is accomplished by improving accountability, reproducibility, traceability, and coordination" (2005, p. 3). Implementing an SCM process is not an easy task and has to be planned properly to ensure maximum benefits from the SCM system.
What is Software Configuration Management (SCM)?

SCM assists the project managers, software developers, testers, quality assurance personnel, the maintenance team, the support team, and customers in developing, managing, and maintaining software product "in a structured, orderly, and productive manner" (Keyes, 2004, p. 2).

According to Pressman, SCM is a "set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made" (2001, p. 225).

According to Babich, SCM is "the art of identifying, organizing, and controlling modifications to the software being built by a programming team. It maximizes productivity by minimizing mistakes" (1986, p. vi).

SCM process is implemented at the beginning of the SDLC and continues throughout the life cycle. SCM planning takes place during the project initiation phase. SCM plan is created and documented using a standard document. Following sections are included in ANSI/IEEE Std-828-1998: Introduction, SCM Management, SCM Activities, SCM Schedules, SCM Resources and SCM Plan maintenance. Some of the other standards include MIL-HDBK-61A (SE)-2001, EIA-649-1998, and ISO 10007: 2003. Also, during the planning phase a scheme is developed for configuration identification. In the other phases of SDLC till the end, configuration control and status accounting is performed. Some of the most common problems in the software development process include communication breakdown problem, shared data problem, multiple maintenance problem, and simultaneous update problem (Leon, 2005, p. 35). SCM helps in fixing these issues by implementing a robust change control management through an SCM system.
Importance and benefits of SCM

The importance of an SCM system lies in a blend of software products, different software projects, diverse software development teams working in a distributed environment, complexity of the system, increasing demand for new and better software systems, and nature of software change (Leon, 2005, p. 43). All these factors drive for better change management process. Another term for software is a change and successful software project managers insist on scientific methods and tools for managing projects (Leon, 2005, p. 44).

The implementation of an SCM system provides a lot of benefits to the project team as well the organization. Project managers should work towards implementing a robust SCM system which eases the change management process. Some of the benefits of SCM include (Leon, 2005, pp. 46-47):
  • Improved organizational competitiveness
  • Better customer service and improved customer goodwill
  • Better return on investment
  • Improved management control over software development activities
  • Improved software development productivity
  • Easier handling of software complexity
  • Improved security
  • Higher software reuse
  • Lower software maintenance costs
  • Better quality assurance
  • Reduction of defects and bugs
  • Faster problem identification and bug fixes
  • Process-dependent development rather than person-dependent development
  • Assurance that the correct system was built
Key Players in SCM

Some of the key players involved in SCM process are project managers, software developers, testers, quality assurance personnel, the maintenance team, the support team, customers and the senior management of the company. The culture of an organization also plays a vital role in smooth implementation and execution of SCM system. The senior management’s support is extremely crucial for to implement a good SCM system. Project managers should implement a robust SCM system which is beneficial to the project and the organization. Software developers, testers, quality assurance personnel, the maintenance team, and the support team assists in routine operational activities of SCM. The project, which implements a robust SCM system in turn, helps the customer to get a quality product on time, within budget and with all the required functionality.
SCM Concepts

The change in software can occur at any phase of the SDLC. It can happen during the requirements phase, design phase or even after the product is delivered. At any point, the software can change, and we should track, document, and manage change. Software development project usually produces computer programs, project documentation, and project data. All these are called as software configuration. The purpose of SCM system is to manage these items through following activities (Leon, 2005, p. 56):
  • Identify the configuration items such as source code, executable, libraries, etc.
  • Find the properties, characteristics, and interdependencies of these items and record them
  • Monitor these items
  • Manage the changes made to these items
  • Document and report the change process
  • Ensure that the items delivered are complete and satisfy all requirements
The identification process of configuration items (CI) is particularly crucial to implement successful configuration management. All these items are stored in SCM repository or database. Some of the examples of CI include software project management plan, software configuration plan, software requirements specification, project management standards, system analysis document, system design document, software prototypes, design documents both high and low, quality assurance plan, test plan, test cases, program source code, executable, dynamic linked libraries, component libraries, unit test code, database design document, test data, project data, product documentation and help files.

Some of the frequently used SCM terminology and concepts include baselines, check-in, checkout, versions, variants, parallel development, branching, naming of versions, source items, derived items, system building, releases, and deltas.
SCM Activities

SCM includes four critical activities, also known as functional elements. They are configuration identification, configuration control, configuration status accounting, and configuration auditing. Configuration items (CIs) are identified throughout the SDLC during the configuration identification activity. It also defines the process for defining, managing, monitoring, documenting, and recording CI. Configuration control activity provides a process to control the configuration management process. It defines all the dos and do not's of configuration management. It establishes a guideline to manage CI change. "The change control process ensures that changes that have been initiated are classified and evaluated, approved or denied, and that those approved are implemented, documented, and verified" (Leon, 2005, p. 71).

Configuration Status Accounting process keeps track of the status. It makes sure that the configuration change status is recorded, monitored, and reported. Lastly, the configuration auditing activity ensures that the configuration item is verified and audited. Auditing is extremely crucial in order to maintain software product consistency and to make sure all the requirements are delivered correctly. Figure 1 shows the hierarchical relationship of SCM activities with SCM.

SCM Activities
Figure 1 SCM activities (Keyes, 2004, p. 9)

Babich, Wayne A. (1986). Software configuration management: Coordination for team productivity. Reading, MA: Addison-Wesley.

Keyes, J. (2004). Software configuration management. Boca Raton, FL: Auerbach Publications.

Leon, A. (2005). Software configuration management handbook Second Edition. Norwood, MA: Artech House, Inc.

Pressman, Roger S. (2001). Software engineering: A practitioner’s approach 5th ed. New York, NY: McGraw-Hill.

Share This Page


Copyright © 2018 CrazyEngico.com. All rights reserved.
CrazyEngico.com is not responsible for the content and CrazyEngico.com does not evaluate or guarantee the accuracy of any CrazyEngico.com content.
Please read our terms of service agreement before using this site.