2. 2
Definition of SCM
• Software configuration management is the discipline of
managing the evolution of complex software systems [IEEE
STD 1987].
• Software configuration management is the process of
identifying, organizing & controlling changes to the software
during development & maintenance. SCM Operates throughout
software development lifecycle (SDLC). From the software
developer's perspective, SCM facilitates the development &
change implementation activities.
3. The common features in a SCM tool are:
* Support for controlling all types of file
* Managing changes
* Supporting branching & merging
* Identifying & recreating releases
* Providing a project view
Importance of SCM in SDLC
SCM tools provide project managers with total control of the
entire process of software development. It can track changes
made to the code by developers and communicate status of
documents and code as well as changes that have been made to
them.
3
4. 4
Basic concepts of Configuration Management:
Configuration Item:
A piece of software or work product which is subject to change is
a configuration item
Change Request:
It is a formal report that contains the request for modification in a
configuration item.
5. Versions and configurations: A version identifies the state of a
particular configuration item or a configuration at a well
defined point in time
Promotion: A promotion is a version of a configuration item/CM
aggregate that has been available to other developers in a
project.
Release: A release is a version that has been available to the user
or the client.
Repository: It stores the various releases of a CM
item/aggregate.
Workspace: It is a library of promotions.
5
7. • Configuration item identification
– modeling of the system as a set of evolving components
• Promotion management
– is the creation of versions for other developers
• Release management
– is the creation of versions for the clients and users
• Change management
– is the handling, approval and tracking of change requests
• Branch management
– is the management of concurrent development
• Variant management
– is the management of versions intended to coexist
7
8. Configuration Management Roles
• Configuration Manager
– Responsible for identifying configuration items. The configuration
manager can also be responsible for defining the procedures for
creating promotions and releases
• Change control board member
– Responsible for approving or rejecting change requests
• Developer
– Creates promotions triggered by change requests or the normal
activities of development. The developer checks in changes and
resolves conflicts
• Auditor
– Responsible for the selection and evaluation of promotions for release
and for ensuring the consistency and completeness of this release
8
9. Goals of SCM
• Configuration identification - Identifying configurations,
configuration items and baselines.
• Configuration control - Implementing a controlled change
process. This is usually achieved by setting up a change
control board whose primary function is to approve or reject
all change requests that are sent against any baseline.
• Configuration status accounting - Recording and reporting all
the necessary information on the status of the development
process.
9
10. • Configuration auditing - Ensuring that configurations contain
all their intended parts and are sound with respect to their
specifying documents, including requirements, architectural
specifications and user manuals.
• Build management - Managing the process and tools used for
builds.
• Process management - Ensuring adherence to the
organization's development process.
• Environment management - Managing the software and
hardware that host the system.
• Teamwork - Facilitate team interactions related to the process.
• Defect tracking - Making sure every defect has traceability
back to the source. 10
12. Configuration Management Tools
• SVN
• Revision Control System (RCS )
• Concurrent Versions System (CVS)
• Perforce
• Clearcase
• TFS
12
13. Topics going to be covered
• Version Controlling tools:
• SVN (Subversion), CVS
• Project Compiling scripts and Automation:
• ANT, NANT, VB Script, Cruise Control
• Software Packaging:
• NSIS – Nullsoft Scriptable Install System
• Bug Tracking:
• Mantis, Jeera
13
14. SVN
• Apache Subversion (often abbreviated SVN, after the
command name svn) is a software versioning and revision
control system distributed under an open source license.
Developers use Subversion to maintain current and historical
versions of files such as source code, web pages, and
documentation. Its goal is to be a mostly compatible successor
to the widely used Concurrent Versions System (CVS).
14
16. Nant & Ant
Nant
NAnt is a free and open source software tool for
automating software build processes. It is similar to Apache Ant,
but targeted at the .NET environment rather than Java. NAnt
requires one of the .NET frameworks (1.0, 1.1, 2.0, 3.5 or 4.0) or
the third party Mono platform.
Ant
Apache Ant is a software tool for automating software build
processes. It is similar to Make but is implemented using the Java
language, requires the Java platform, and is best suited to
building Java
16
17. • Nullsoft Scriptable Install System (NSIS) is a script-driven
installation system for Microsoft Windows with minimal
overhead backed by Nullsoft, the creators of Winamp. NSIS
has risen to popularity as a widely used alternative to
commercial and proprietary products like InstallShield.
• * Even Google Using NSIS for Installers (.exe)
17
18. • Mantis Bug Tracker is a free and open source, web-based
bug tracking system released under the terms of the GNU
General Public License version 2. The most common use of
MantisBT is to track software defects. However, MantisBT is
often configured by users to serve as a more generic issue
tracking system and project management tool.
18