2Definition of SCM• Software configuration management is the discipline ofmanaging the evolution of complex software systems [IEEESTD 1987].• Software configuration management is the process ofidentifying, organizing & controlling changes to the softwareduring development & maintenance. SCM Operates throughoutsoftware development lifecycle (SDLC). From the softwaredevelopers perspective, SCM facilitates the development &change implementation activities.
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 viewImportance of SCM in SDLCSCM tools provide project managers with total control of theentire process of software development. It can track changesmade to the code by developers and communicate status ofdocuments and code as well as changes that have been made tothem.3
4Basic concepts of Configuration Management:Configuration Item:A piece of software or work product which is subject to change isa configuration itemChange Request:It is a formal report that contains the request for modification in aconfiguration item.
Versions and configurations: A version identifies the state of aparticular configuration item or a configuration at a welldefined point in timePromotion: A promotion is a version of a configuration item/CMaggregate that has been available to other developers in aproject.Release: A release is a version that has been available to the useror the client.Repository: It stores the various releases of a CMitem/aggregate.Workspace: It is a library of promotions.5
• 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 coexist7
Configuration Management Roles• Configuration Manager– Responsible for identifying configuration items. The configurationmanager can also be responsible for defining the procedures forcreating promotions and releases• Change control board member– Responsible for approving or rejecting change requests• Developer– Creates promotions triggered by change requests or the normalactivities of development. The developer checks in changes andresolves conflicts• Auditor– Responsible for the selection and evaluation of promotions for releaseand for ensuring the consistency and completeness of this release8
Goals of SCM• Configuration identification - Identifying configurations,configuration items and baselines.• Configuration control - Implementing a controlled changeprocess. This is usually achieved by setting up a changecontrol board whose primary function is to approve or rejectall change requests that are sent against any baseline.• Configuration status accounting - Recording and reporting allthe necessary information on the status of the developmentprocess.9
• Configuration auditing - Ensuring that configurations containall their intended parts and are sound with respect to theirspecifying documents, including requirements, architecturalspecifications and user manuals.• Build management - Managing the process and tools used forbuilds.• Process management - Ensuring adherence to theorganizations development process.• Environment management - Managing the software andhardware that host the system.• Teamwork - Facilitate team interactions related to the process.• Defect tracking - Making sure every defect has traceabilityback to the source. 10
Configuration Management Tools• SVN• Revision Control System (RCS )• Concurrent Versions System (CVS)• Perforce• Clearcase• TFS12
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, Jeera13
SVN• Apache Subversion (often abbreviated SVN, after thecommand name svn) is a software versioning and revisioncontrol system distributed under an open source license.Developers use Subversion to maintain current and historicalversions of files such as source code, web pages, anddocumentation. Its goal is to be a mostly compatible successorto the widely used Concurrent Versions System (CVS).14
Nant & AntNantNAnt is a free and open source software tool forautomating software build processes. It is similar to Apache Ant,but targeted at the .NET environment rather than Java. NAntrequires one of the .NET frameworks (1.0, 1.1, 2.0, 3.5 or 4.0) orthe third party Mono platform.AntApache Ant is a software tool for automating software buildprocesses. It is similar to Make but is implemented using the Javalanguage, requires the Java platform, and is best suited tobuilding Java16
• Nullsoft Scriptable Install System (NSIS) is a script-driveninstallation system for Microsoft Windows with minimaloverhead backed by Nullsoft, the creators of Winamp. NSIShas risen to popularity as a widely used alternative tocommercial and proprietary products like InstallShield.• * Even Google Using NSIS for Installers (.exe)17
• Mantis Bug Tracker is a free and open source, web-basedbug tracking system released under the terms of the GNUGeneral Public License version 2. The most common use ofMantisBT is to track software defects. However, MantisBT isoften configured by users to serve as a more generic issuetracking system and project management tool.18