|
> Software Configuration Management
Software Configuration Management
Author: Vishwanath Paibir
|
Abstract
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.
|
|
|
|
|
|
|
|
Introduction
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.
Figure 1 SCM activities (Keyes, 2004, p. 9)
|
|
|
|
References
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
Ads
|