Professional Documents
Culture Documents
Software Configuration Management (SCM) : SCM Actually Consists of Several Separate Yet Cumulative Disciplines
Software Configuration Management (SCM) : SCM Actually Consists of Several Separate Yet Cumulative Disciplines
TM
TM
Abstract :
Software Configuration Management (SCM) is an essential software engineering discipline
used to manage change in today’s complex, fast-paced software development environment.
Many organizations approach SCM without a long term plan. When SCM related problems
occur, they are solved on an “as-needed” basis. Companies in this reactive stance miss
significant benefits SCM can provide. They are forced to experience the negative impact of
each successive SCM – related failure before can act to solve it. This white paper presents the
fundamental concepts of SCM, its benefits for developers and the return on investment (ROI)
for the business. Using examples, we will explore why you need to organize, manage and
protect digital assets during team development, and why code and content need to be
managed together for maximum efficiency of SCM in the e-business enterprise. We will also
discuss the different commercial and non-commercial tools used for source control and their
benifits.
SCM Features:
SCM actually consists of several separate
yet cumulative disciplines. Version
Management is an entry point for SCM.
Issue Management and automated build
tools are often integrated with version
management in SCM suites. The addition of
process and work flow control tools enables
a new level of change management,
including definition and control of baselines
and releases.
Version Management :
Version is a named instance of a product or component, a specific release of a software product.
Several projects may want to share and reuse components across teams such as COM objects,
EJBs, DLLs, LIB and Include Files, etc. When these components are stored in a central
repository, then everyone can access the latest version. A version management tool may
include some or all of the functions listed below.
Version labeling to group related files together and treat them as a unit.
Build Management :
The build management process describes the activities necessary to support the software
application transformation from development to run time. A defined build process is an essential
part of any development cycle because it helps close the gap between the development,
integration, test, and production environments. A build process alone will speed the migration of
software from one environment to another. With build management as part of your SCM plan,
you can:
Know the parent/child relationships between source, object, & executable files knows
which child files are out-of-date due to a change in one or more of its parent files.
Avoid unnecessary rebuilds of child files whose parents have not changed.
Avoid having to rebuild at each test phase to ensure consistency, because all built
objects are automatically placed under version control.
Issue Management :
A subset of change management, generally referring to help desk reported problems only. With
automated issue and change management, it becomes easy to capture and track change
requests and project issues, and obtain the metrics and reports to support team decisions. You
will be able to see how many bugs were found at each stage – Development, System testing,
User Acceptance testing, Production and so forth- and know the cost of fixing them. And, you
may want to see the sequence of checkpoints and approvals to more effectively assign
ownerships and track developer results.
Baseline Management :
The software baseline refers to all source code, run time files, documentation, configuration
files, and installation scripts that comprise a software release, both input and output of the build
management process. The baseline must include any data or database related scripts or files
that were used in the creation of the release. Stored as part of the baseline is information about
compilers, operating systems, and dependent systems (internal and third party) that, together
with the baseline, will enable the organization to recover from a disaster, comply with an audit, or
understand the full release and its context.
Release Management :
Release management provides full traceability, which records the details of customers/sites
who have received product releases and which releases have been issued to them. This means
that, for any files that need to be changed, analysts can query where and in what manner the file
is being used. Additionally, release management protects the released files from unauthorized
modification thus closing the backdoor whereby developers can make “quick fixes.”
Sophisticated release management products can also create a delta release, which includes
those items which have changed since the previous specified release was made. This can
greatly decrease installation time and conversely reduce the amount of time that the production
system must be off-line.
CVS :
CVS is the Concurrent Versions System, the dominant open-source network-transparent
version control system. CVS is useful for everyone from individual developers to large,
distributed teams:
Its client-server access method lets developers access the latest code from anywhere there's
an Internet connection.
Its unreserved check-out model to version control avoids artificial conflicts common with the
exclusive check-out model.
CVS saves its version control information in RCS files stored in a directory hierarchy, called the
Repository, which is separate from the user’s working directory. CVS is intended to handle
source control for files in three major situations:
Aside from the “Vendor Branch”, there are three kinds of “branches in development” that
CVS can support.Your working directory can be treated as a private branch. A development
branch can be shared by one or more developers. At release time, a branch is usually
created for bug fixes.
Disadvantages:
CVS is an industry standard, reliable, free and has been around for a long time. But, CVS is
not a configuration management system. CVS is a source control system.
VSS :
VSS is not the best tool around. It only supports Windows Environment. No
Unix/Linux/MVS/OSR. It keeps all sources together in one place, keeps history of all files and
helps to work in a team by merging shared files. It also controls access to resources. It works
Disadvantages:
Own authentication with own users and passwords (independent of the system accounts).
VSS seems to be a black box. If something went wrong, you run its repair tool without a clue
what is going on.
ClearCase :
Rational ClearCase is a configuration management product that provides version control, asset
management, build and release management, including features for merging, branching,
labeling and auditing. Using UCM eliminates the need to develop and maintain scripts and
automates project and developer workspace setup, enabling us to quickly bring new members
onto the team as needed.
Rational ClearCase is an extensive set of tools that you can use to manage and track software
resources, whether they are web pages, mission-critical data, documentation,or source code.
Like other source control tools, ClearCase helps you do the following with your software
resources:
Create new versions of a software resource.
Supports team leaders who need to coordinate the activity of people developing products
together.
Gives project managers control over the extent and frequency with which team members
synchronize their work.
Supports parallel development: developers work in private areas and do not affect the work
of team members.
Multi-site development: ClearCase has a good multi-site development tool that allows
multiple locations to work on the same code at the same time. It has the benefit over most
other tools because it only moves changes across the net. It is highly customizable, and by
far the best solution for multi-site development out there.
Summary :
Development time reduction: achieved due to improved productivity and identification of
repeatable patterns in software development.