Documente Academic
Documente Profesional
Documente Cultură
Configuration Management
by Vivek Kaushal
Abstract:
Software configuration management (SCM) is the discipline of controlling the
evolution of complex software systems. This tutorial gives the historical
background and surveys methods and tools that support or automate
aspects of SCM. It proposes a standard terminology describes the areas that
are amenable to automation, discusses a representative set of existing SCM
tools, and identifies directions for future research and development.
Appendix 1 is Glossary and Appendix 2 is an annotated of relevant web sites,
technical papers and other reference materials.
1.Introduction
Configuration management (CM) is the discipline of controlling the
evolution of complex systems; software configuration management (SCM)
is its specialization for computer programs and associated documents.
General CM in a broad way is good for managing large systems but its
actual application for small systems or software is not viable.
SCM differs from general CM in the following two ways. First, software is
easier to change than hardware, and it therefore changes faster. Even a
small software made by a small time can experience change at very fast
rate. And second, SCM is potentially more automatable. Because all
components of a software system are easily stored on-line.
Dealing with software configuration management (SCM) has many
problems involved in it. Many developers work on the same software
which keeps on changing, support for more than one version needs to be
given and the same software will run on different machines and operating
systems maintaining the same user experience due to which there is
many times problem of coordination between the developers. These are
few problems that are handled by Software Configuration Management
which manages the changes and cost involved in those changes
effectively.
1 Tutorial on Software Configuration Management
Opinions still vary greatly as to what tools and methods are best for
software configuration management. This tutorial explains several of the
most widely accepted approaches and also reviews a number of tools
designed to assist with selection.
2.History
The history of software configuration management (SCM) in computing
can be traced back as early as the 1950s, when CM (for Configuration
Management), originally for hardware development and production
control, was being applied to software development. Early software had a
physical footprint, such as cards, tapes, and other media. The first
software configuration management was a manual operation. With the
advances in language and complexity, software engineering, involving
configuration management and other methods, became a major concern
due to issues like schedule, budget, and quality. Practical lessons, over the
years, had led to the definition, and establishment, of procedures and
tools.
The first SCM systems of early 80s were developed in house and their
primary focus was on file control. Most of them were built as a set of UNIX
scripts over RCS (a simple version control tool).
In early 90s, the first real SCM tools emerged. These tools were much
better than the previous generation tools and often used relational
database but still heavily relied on file control. This generation included
Clear Case (DSEE successor) which introduced the virtual file system and
Continues which introduced, with Adele, explicit process support.
Continues and Clear Case are currently the market leaders.
In late 90s, web programming grew big and this gave rise to remote
programming which in turn increased the demand of SCM in the market.
During this period process support came to SCM and all the previous SCM
projects matured. SCM market grew as big as $1 billion in 1998 and SCM
was considered as one of the very important aspects in software
development.
The 21st century, brought further optimizations and innovations in the
working of SCM systems and also brought new SCM solutions like
Subversion with improved memory utilization etc. Big players of the
industry like Microsoft, IBM etc. also found this technology quite useful
and implemented it in their flagship tools like Visual Studio. Another
2 Tutorial on Software Configuration Management
innovative and effective technology GIT emerged recently for SCM making
remote project management more easy job.
Name a CI;
Decide who is the control authority of a CI;
Once the CIs are listed they are then organized in a tree.
3.1.1.1 Baseline:
A baseline is a type of CI that has been formally reviewed
and approved and declared as the basis of further
development. Software development proceeds from
baseline to baseline, accumulating new or revised CIs in
the process. Early baselines contain only documents
specifying the software to be built; later baselines contain
the code as well.
3.1.1.2 Variants:
The term variant' is often used to identify CIs that,
although offering almost identical functionality, differ in
aspects such as:
Hardware environment;
Communications protocol;
User language (e.g. English, French).
4. SCM Planning
A successful SCM implementation requires careful planning and
management. All of the SCM activities introduced above are described
in the SCM plan. The main purpose of the SCM plan is to answer such
questions as: who is going to do what, when, where, and how (Buckley
1996). Thus, the SCM plan serves as a guideline for the people working
with software configuration management. According to Buckley (1996),
a configuration management plan is written for each project. However,
an organization may use a generic SCM plan template that can be
tailored to each particular project.
According to Software Engineering: Principles and Practice by Hans Van
Vliet it can be divided in following parts:
1. Introduction
2. SCM Management
3. SCM Activities
4. SCM Schedules
5. SCM Resources
6. SCM Plan Maintenance
Following table gives the common contents of an SCM plan according
to IEEE standards (IEEE Std. 828-1998):
4.5
SCM Resources:
For ideal case these three should work together for effective CM. But
normally these jobs are performed in different organizations which
sometimes result in problems.
Defines/communicates/enforces procedures.
Establishes baselines and backups.
Forbids unauthorized changes.
Records all changes.
Assures that changes are properly tested.
Resolves all exceptions.
Configures and operates CM tools.
Typical Members:
All members of the Board (or all who might be affected by the
changes under consideration)
Module owner(s) for all modules that may need to be changed
Anyone else who has related expertise or concerns
o Sometimes you have a separate, technical committee
to evaluate proposed changes and advise the CCB as to
the technical issues involved
Version control.
Support for engineers.
Workspace management.
Concurrency control.
System building.
Process control and support.
6.1.1Version Control:
The main purpose of version control is to manage different
versions of configuration objects that are created during the
software engineering process (Pressman 1997). The term
object is used by some authors to describe CI. A
component repository is a place where all the versions of
CIs are kept. The terms version, revision and variant are
basic SCM concepts. Therefore, their differences are explained
next. The meaning of branching and merging is also
explained.
Variants are versions that are organized in parallel
development lines called branches. However, branches are
only one way to implement variants, because they can be
done also with conditional compilation, with installation
description, or with a run-time check. There are two types of
variants: permanent and temporary (Whitgift 1991).
Permanent variants are created, for example, when the
product is adjusted for different environments. There can be a
variant for Linux and another for Windows. The difference
between a permanent and a temporary variant is that a
temporary variant will later be integrated with another variant
(Zeller 1996). This kind of integration is also called merge.
According to Whitgift (1991), an instance of an item, each of
its variants and revisions, is called an item version.
19 Tutorial on Software Configuration Management
6.1.2Workspace Management:
SCM tools can also help developers to work in peace by
providing them with private workspaces. The purpose of
provided workspace is to prevent users from interfering with
one another's work (Dart 1994). Developers can check out
desired files or configuration from the repository in their own
workspaces. The check out operation creates copies of the
items in the developer's workspace; after that, the developer
can modify the items as needed and finally execute check
in. The check in operation copies items back into the
repository: the version control system then creates new
versions as needed. Figure below represents the check out/in
process. A get operation equals to a check out operation,
except that the files copied into the workspace are read-only
and therefore cannot be modified. The terminology in use for
these operations can vary between different SCM tools.
6.1.3Concurrency Control:
The implementation of concurrency control depends on the
SCM tool in use. Some of these tools use so-called optimistic
concurrency control (Asklund &Bendix 2002), which means
that files are not locked when checking them out, and there
may be simultaneous modifications to the same files by
multiple users. Others prevent simultaneous access by using a
locking mechanism. Microsoft's Visual SourceSafe (VSS) is a
one example of an SCM tool in which both of these
mechanisms are implemented and locking is used as a
standard setting.
The advantages of concurrent development are remarkable.
Development teams can work with the same files, while the
SCM tool controls development. The difference between
concurrent and parallel development is that in concurrent
development, branches are finally merged into a single item,
whereas in parallel development merging is not performed
and branches go ahead separately. The same alternatives can
exist at the project level. For example, if there is a project that
reaches the testing stage, the project can be branched so that
testing and bug fixing can be performed separately.
Development continues in the main branch, and later on the
modified files on these two branches can be merged.
21 Tutorial on Software Configuration Management
6.1.4System building
In system building (a.k.a. build management), the purpose is
to combine needed file versions and then compile them to
create an application. Building can be done for a subsystem, a
module, or a whole system (Leon 2000) and the building
strategy can be either incremental or from scratch. In
incremental building, only files that been changed will be
built; correspondingly, all files will be built when building from
scratch. According to Whitgift (1991), building from scratch
can be a very expensive process in terms of machine
resources, because a large system may contain thousands of
files of source code. SCM tools can facilitate building work by
capturing necessary information and making the building
process repeatable. To be repeatable, details of used
components, components' versions, the operating system and
its version, compiler and linker options etc., are required
(Leon 2000). An SCM tool usually includes a Make tool to
generate an executable software system reliably and
efficiently (Conradi & Westfechtel 1998).
Out of the above discussed systems we will now discuss about the
RCS model in detail.
Advantage:
o In single-user scenarios, such as server configuration
files or automation scripts, RCS may still be the
preferred revision control tool as it is simple and no
central repository needs to be accessible for it to
save revisions. This makes it a more reliable tool
when the system is in dire maintenance conditions.
Additionally, the saved backup files are easily visible
to the administration so the operation is
straightforward. However, there are no built-in
tamper protection mechanisms (that is, users who
can use the RCS tools to version a file also, by
design, are able to directly manipulate the
corresponding version control file) and this is leading
some security conscious administrators to consider
client/server version control systems that restrict
users' ability to alter the version control files.
Application:
o Some wiki engines, including TWiki and Foswiki, use
RCS for storing page revisions.
6.2.2Client-server model
In the client-server model, developers use a shared single
repository.
Open source
Concurrent Versions System (CVS) originally built on
RCS, licensed under the GPL.
CVSNT cross-platform port of CVS that allows case
insensitive file names among other changes.
OpenCVS CVS clone under the BSD license, with
emphasis put on security and source code correctness.
Subversion (SVN) versioning control system inspired
by CVS.
Vesta build system with a versioning file system and
support for distributed repositories.
Proprietary
The label operation creates a new label for the selected set
of tasks from the working directory.
The VSS has the following disadvantages:
o The get operation works properly for a workspace
update only when you check out the files you want to
change before making your local changes to them. If
you modify your local copies but don't invoke the get
operation until just before you are ready to check them
in, VSS won't know that your locally modified files were
checked out before other versions that were checked in
after you made your changes.
o VSS doesn't effectively support a branching depth of
more than two levels. If branching is performed for more
than two-levels it will not perform complete merge
operation for the entire hierarchy.
36 Tutorial on Software Configuration Management
6.2.3Distributed Model
In the distributed approach, each developer works directly
with his or her own local repository, and changes are shared
between repositories as a separate step.
Open source
dependencies and automatically rearrange and "cherrypick" them using a "theory of patches"
GNU arch
Proprietary
6.2.3.1 GIT
GIT was developed by Linux development community
(and in particular Linus Torvalds, the creator of Linux) in
2005 when their partnership with BitKeeper for version
controlling broke down. It was developed keeping the
following things in mind:
Speed
Simple Design
Strong Support for non-linear development
Fully distributed
Ability to handle large projects like the Linux Kernel
efficiently.
6.2.3.2 BitKeeper
BitKeeper is one of the very famous and widely ised
proprietary Distributed SCM system. Its history goes back
to 1992 when Linux development team was closely linked
with BitKeeper developing company to build it and from
1992-2002 there was various updates and changes to
make BitKeeper the system it is today. But due to end of
the partnership between the BitKeeper parent firm and
Linux systems it went paid and Linux developed GIT as
discussed in the previous section.
In the BitKeeper system every workspace is a repository.
Also the changes made are in the form of change-sets on
the workspace and the developers can propagate
change-sets back and forth between workspaces using
push and pull operations.
7. Conclusion
SCM is a method of bringing control to the software development
process and is known as an inseparable part of quality-oriented
product development regardless of development method. On the other
hand, software configuration management is often considered
bureaucratic method, an approach that causes additional work and
more documentation. However, the value of SCM should not be
underestimated in the case of agile software development methods.
Currently, there are very few studies of software configuration
management in agile methods.
The aim of this report was to systematically review the existing
literature on agile software development methodologies from an SCM
point of view.
Therefore, analytical SCM lenses based on existing literature were
constructed, including the following five perspectives:
7.1
SCM approach:
7.2
SCM planning:
The purpose of this perspective was to find out what the agile
methods define as SCM planning. The results show that agile
methods literature does not mention SCM planning at all. In
software configuration management literature, SCM planning has
been described as a basis for successful SCM implementation.
Therefore, agile methods should also place emphasis on SCM
planning.
Appendix I- GLOSSARY
This section defines the software configuration management terms used in
this guide.
Archive library
A software library used for storing CIs in releases or retired baselines.
Backup
A copy of a software item for use in the event of the loss of the original.
Baseline
A configuration item that has been formally reviewed and agreed upon, that
thereafter serves as a basis for further development, and that can be
changed only through formal change control procedures.
Change control
An element of configuration management, consisting of the evaluation,
coordination, approval or disapproval, and implementation of changes to
configuration items after formal establishment of their configuration
identification.
Configuration identification
Configuration item
An aggregation of hardware, software, or both, that is designated for
configuration management and treated as a single entity in the configuration
management process.
Control authority
The individual or group who decides upon the changes to a configuration
item; a configuration item cannot be changed without the control authority's
consent.
Derivation record
A record of one event in the life of the configuration item (e.g. source code
change, compilation, testing etc.).
Release
A baseline made available for use.
Review board
The authority responsible for evaluating proposed changes, and ensuring
implementation of the approved changes.
Revision
A version of a document with minor changes from the previous version.
Simultaneous update
The phenomenon of two updates being made by different people on different
copies of the same configuration item; one of the updates is always lost.
Software librarian
A person responsible for establishing, controlling, and maintaining a software
library.
Software library
A controlled collection of software and related documentation designed to
aid in software development, use, or maintenance.
Variant
source world by storm since its inception in 2005, and this book
describes how to use it like a pro.
This book describes the principles and techniques of Distributed
SCM model and how GIT implement its features.
It describes how GIT is used from small-scale to large projects
and how various companies are taking advantage of one of the
most efficient Distributed SCM.
8. http://git-scm.com/
This website is the best source of information we can find about
the theoretical concepts of GIT over the web. It describes all the
features of GIT in detail and also provides comparison of
benchmarks of GIT with the Subversion system.
For new developers who are using GIT for the first time this site
can provide great documentation which can help them get
started and implement GIT in their projects.