Escolar Documentos
Profissional Documentos
Cultura Documentos
Management
www.scmGalaxy.com
sG
scmGalaxy
Agenda
www.scmGalaxy.com
Introduction to software configuration management (SCM),
build and release (BnR)
Initiating CM activities
Case study - 1.5 hours case study to help participants get a
complete view of a CM process in a project.
SCM tools comparison
CVS – deep dive
ANT – basics and advanced tasks
Automated builds using cruise control
scmGalaxy
Agenda for session 1
www.scmGalaxy.com
Introduction to software configuration management (SCM), build and
release (BnR)
The need for SCM, BnR in a project lifecycle
Objectives of a SCM BnR system
Role of a configuration manager
Typical activities of a configuration manager
Initiating CM activities
Identifying the inventory of configurable items
Defining a CM plan
Defining a release traceability with tagging and CR numbers
Build and build automation
Introduction to environments,
Tools used in CM
scmGalaxy
Objectives
www.scmGalaxy.com
Understand the role of a CM
Understand the type of activities a CM is involved in
How to initiate and administer CM activities in a project
Strategies for build, environments and automated builds
Appreciate what is the list of tasks of a CM and be able to
begin working as a CM
scmGalaxy
Need for
Configuration
Management
sG
The Rambo developer
www.scmGalaxy.com
John Rambo is a single developer of
a mid sized project Click to edit Master text styles
A one man team taking care of Second level
requirements, design , development, ● Third level
testing and delivery
● Fourth level
scmGalaxy
Rambo developer and his woes
www.scmGalaxy.com
With increasing complexity the same
parts of the code were getting
overwritten Click to edit Master text styles
More often than not, business users Second level
would request a change in a feature ● Third level
and soon expect to go back to the
● Fourth level
old feature or expect a mix of old
and new features ● Fifth level
scmGalaxy
A disorganized team
www.scmGalaxy.com
1
Guys, I heard you 2
have finally cracked It’s a silly mistake
the cluster problem!! boss!! An old version
Congratulations !! of the code was
What was it? over-written which
did not serialize the
property files.
3
How did the old
version get in there?
4
Prakash was trying
to debug some
problem last week
from on-site and he
fixed the problem in
the old source and
pushed them!!
scmGalaxy
The problems
www.scmGalaxy.com
scmGalaxy
The problems and solutions
www.scmGalaxy.com
Currently there is no code A way to track changes and
changes being tracked. maintain versions of his code. A
Version management tool is
Once a change is made the old necessary
code is over written, there is no
way to get back to the old code
scmGalaxy
Role of a
Configuration
manager
sG
Definitions - wikipedia
www.scmGalaxy.com
Configuration Management - The control of changes, including
the recording thereof, that are made to the hardware,
software, firmware, and documentation throughout the
system lifecycle
Software Configuration Management - 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 - pressman
SCM concerns itself with answering the question: somebody
did something, how can one reproduce it?
scmGalaxy
Software Configuration Management
www.scmGalaxy.com
scmGalaxy
Activities involved
www.scmGalaxy.com
Software Software
Management Software Software Software
Configuration Release
& Planning Configuration Configuration Configuration
Status Mgmt
(SCMP) Identification Control Auditing
Accounting & Delivery
scmGalaxy
Need for a Configuration Manager
www.scmGalaxy.com
With increasing complexity of a system one needs a dedicated
person who can manage the changes to a large software unit
What is complexity of a software system
Long running projects
Large teams
Distributed teams (distributed development)
Multiple software units that form one large chunk
Assets related to the code – scripts, test cases
Assets not related to the code – documents, release notes
…
scmGalaxy
What is a CM’s role
www.scmGalaxy.com
A configuration manager works with the project leadership to
provide an environment that controls, tracks and reports
changes made to any unit of information
Broadly speaking the various buckets of activities that a CM
needs to own are
Identification of configurable items
Control the changes of these items
Provide status and reports related to the changes to an asset
Manage the build, packaging and release of the software units
Provide a mechanism of traceability from the software units to
the root cause of a change or the primary requirements
Audit the project and ensure that the CM process is being
followed
scmGalaxy
Role of CM at various stages
www.scmGalaxy.com
● Fourth level
● Fifth level
scmGalaxy
CM – stage 1 - Identify and
establish
www.scmGalaxy.com
The first phase of the project
Along with the project Click to edit Master text styles
initiation phase, the CM plan
needs to be defined
Second level
● Third level
scmGalaxy
CM – stage 1 - Identify and
establish
www.scmGalaxy.com
Objective
List of CI identified Click to edit Master text styles
Directory structure defined for Second level
all ● Third level
● Fourth level
Tool for version management
● Fifth level
scmGalaxy
CM – stage 2 - Build and release
definition
www.scmGalaxy.com
Design and development phases
defines the code structure, the tools,
the frameworks to be used in the
project Click to edit Master text styles
CM defines a build strategy for the Second level
project ● Third level
● Fourth level
First cut build should ensure that it
integrates well with the version ● Fifth level
management tool
scmGalaxy
CM – stage 2 - Build and release
definition
www.scmGalaxy.com
Objectives
Base line Build script Click to edit Master text styles
Strategy to enhance Second level
● Third level
build script ● Fourth level
version management
Strategy to release code
Ability to support various
environments
scmGalaxy
CM – stage 3 - enhance and
strategize
www.scmGalaxy.com
The development and testing phases
bring with it new tools and changes
to source code structure
Click to edit Master text styles
The build script needs to evolve and
automate as many tasks as possible Second level
● Third level
Towards the end of the development ● Fourth level
phase the need to begin a release
process would have arrived ● Fifth level
scmGalaxy
CM – stage 3 - enhance and
strategize
www.scmGalaxy.com
The ability to tag a release and the
ability to roll back a release should
be available
Click to edit Master text styles
Second level
In the near future code will move ● Third level
into a maintenance mode. ● Fourth level
● Fifth level
scmGalaxy
CM – stage 3 - enhance and
strategize
www.scmGalaxy.com
Objectives
Enhanced build script
Click to edit Master text styles
Integrated build and Second level
release process ● Third level
● Fourth level
Tagging of specific releases
● Fifth level
scmGalaxy
CM – stage 4 - Continuous Improvement and auto-
pilot
www.scmGalaxy.com
Mostly in administration mode
scmGalaxy
CM – stage 4 - Continuous Improvement and auto-
pilot
www.scmGalaxy.com
Objectives
● Fourth level
Ability to regression test and
● Fifth level
manage releases
scmGalaxy
CM – important
tasks
sG
Important tasks
www.scmGalaxy.com
Among all the phases a few tasks will be the most important part of a CM’s
job
The next few slides will delve deep into some of these tasks
The intent is to provide you with a view of the over all objective of the task
and there on to arrive at a few strategies for each of them
scmGalaxy
Important tasks - list
www.scmGalaxy.com
Identify CI
Version management and tool selection
Prepare CMP
Release and Branching strategy
(Multiple) Environment management
Build script
Integrating tools with build
Audit of the CM process
Automating builds
scmGalaxy
Configuration
items
sG
Identify Configurable Items
www.scmGalaxy.com
scmGalaxy
CI list
www.scmGalaxy.com
Asset type Audience Document Source code Access control Frequency of Need for CM
s / PDFs/ updates
excel / ppt
scmGalaxy
CI list
www.scmGalaxy.com
Asset type Audience Documents Source Access control Frequency Need for CM
/ PDFs/ code of updates
excel / ppt
scmGalaxy
Where to version the CI
www.scmGalaxy.com
Choice of network share, internal CVS and an external facing
CVS
Classified reports and sensitive documents may not be shared
with the whole team or even the client.
Access control and level of access should be considered while
choosing the location of store
Use a network share or a private CVS repository
Different repository for client and internal teams with
scheduled synch-up between the two
A network share is not version sensitive but can be used for
static items like 3rd party software downloads, documentation
etc.
scmGalaxy
Directory structure
www.scmGalaxy.com
Over all a directory structure is mostly common sense
Ability to logically separate out asset types and put them into
separate folders
Based on the version management tool, one can setup
directory level permissions or permissions at a repository level
It may also be prudent to understand the need for private
work areas and private folders for each individual in the
project
Leverage the existing structures at an organization / group /
account level for a start point
scmGalaxy
Directory - first level
www.scmGalaxy.com
<repository name>
Requirements
Design
App
Templates
QA
PM
UI
reports
scmGalaxy
Naming conventions
www.scmGalaxy.com
Naming conventions (even if a file is organized into
directories), should describe the asset type to the fullest using
some meta data of the asset.
intent of the document (or asset) –
GlobalOne_reference_exisitng_report_template.doc
date (specially with MOM) –
MOM_admin_role_clarififcaton_010207.doc
module it is relevant to – design_admin_logging.doc
All asset types identified in the CI list should be given a
naming convention
Source code will follow the naming convention given by the
coding standards document
scmGalaxy
Version
management
tools
sG
Version management tools
www.scmGalaxy.com
There are various tools that allow version management
The primary features of these tools are
Version management
Concurrent development (lock or merge)
Client server model
Branching
Tagging
Multiplatform support
Integration with IDE
Multiple authentication modes
scmGalaxy
Version management tools
www.scmGalaxy.com
scmGalaxy
Selection criteria
www.scmGalaxy.com
Criteria
Locking and merging
Authentication and authorization mechanism
Need for distributed repositories / distributed clients
Web interface
Licenses (cost and ease of setup)
Mostly the client / organization standard will be used as the
default for a project
However, in case we are presented with a ground up scenario,
then the criteria listed above can be used for selection of the
tool
scmGalaxy
Various types of repository
access
www.scmGalaxy.com
scmGalaxy
Version management – version
number
www.scmGalaxy.com
The basic versioning of an asset will be 1.0 onwards in most
version management tools.
Incremental changes are recorded as 1.1, 1.2 and so on
From an asset perspective, a version history will be
maintained in the asset itself to define the changes made
across each released version
The version numbering at a tool level can be used as is
Thought should be applied more to tagging of assets and base
lining assets
scmGalaxy
Version management - tagging
www.scmGalaxy.com
A tag helps in creating a logical name for all assets within a
repository at a particular instance
A tag can be given at a branch level and based on the tool even
at a directory level
scmGalaxy
Files in the repository
www.scmGalaxy.com
Click to edit Master text styles Click to edit Master text styles
Second level Second level
● Third level ● Third level
Click to edit Master text styles Click to edit Master text styles
Second level Second level
● Third level ● Third level
scmGalaxy
Tagging the repository
www.scmGalaxy.com
scmGalaxy
CMP –
configuration
management
plan
sG
Intent of a CMP
www.scmGalaxy.com
A CMP describes the configuration management plan for a
project
Describes the repositories, naming strategy, versioning
strategy and more
Reference point for the team to begin working in a project
Helps in documenting all the CM activities and delegating
responsibilities of a CM activity to team members
A CM initiates the CM processes and rolls out a process
It is for the project there on to adhere to it there on. The CMP
defines the various roles and their responsibilities
scmGalaxy
Intent of a CMP
www.scmGalaxy.com
scmGalaxy
Intent of a CMP
www.scmGalaxy.com
A CMP should document enough data to help answer the
following questions
What kind of items are CI?
Where should I put what CI?
What are the naming conventions for various items?
What kind of documents should I maintain and what is my
responsibility from a CM perspective?
What is the versioning strategy of any artifact?
How will project level changes be tracked?
What is base lining and how will releases be managed
scmGalaxy
Change management
www.scmGalaxy.com
A key task of the CM is to control the changes to an asset
A change control process defines the monitoring / approval
process that allows incorporating changes into a CI
Requirements, tools, criteria of acceptance etc. are CI that are
stored in the repository
A change in one of them could affect many other assets and
the project schedule
The intent here is not to resist changes, but to allow a
controlled way of managing the changes
scmGalaxy
Change management
www.scmGalaxy.com
The CMP should record the ways to track / control the
changes to each CI
if not all at least the critical assets such as requirements,
design, acceptance criteria, plan, strategies specific to the
project and more should be considered
Document the ways to accept changes to a particular asset
bug tracker / email can be a source of change requests.
The CMP should also call out the person responsible to
manage these changes
This level of clarity in change management ensures that
changes to appropriate documents are controlled
scmGalaxy
Change management
www.scmGalaxy.com
Another aspect of change management is the process that
one should follow to get a change incorporated
More relevant to a PM
However the CM needs to ensure that a CCB has been
instituted for the project
The change management for appropriate assets would need a
CCB approval (schedule change / feature list increase)
scmGalaxy
Read a sample CMP
www.scmGalaxy.com
Demonstration of a CMP
scmGalaxy
Key points in a CMP
www.scmGalaxy.com
Ensure that all CI have a repository to go to
Ensure that all CI have an appropriate location in the
repository (directory structure)
Ensure that each repository identified is backed up and an
appropriate person / group is given the responsibility
Ensure that all CI have an owner (person, group, roles).
These owners will maintain the versions of these items
Most importantly, ensure that the CMP is well circulated and
call out the responsibilities in a team meeting or in a short
training program
Do not assume that people will know about their
responsibilities.
scmGalaxy
Rolling out a CM process
www.scmGalaxy.com
Rolling out the process, often is taken too lightly and the team is not
always in synch with the process
Identify who needs to be told what and tell them the process using
training programs / meetings
Do not shy away from setting up a meeting each time the team size
swells up.
For large teams, work with each module rather than a large team
scmGalaxy
Access to the repository
www.scmGalaxy.com
A well defined way to setup the client software and integrating it
with the IDE should be documented
Re-use the standard within the organization for a particular type
of repository
The steps could be simple and easy, but do not assume that a
team of 10-50 people will know it
Ensure that a setup document, is available within the repository /
network share
The setup document should speak about
Where to get the installable (ensure that nobody uses their own
versions)
How to install it (ensure that the installation document has
screenshots)
How to integrate my IDE with the repository (ensure that people
to not have copies of the code in their own machines)
scmGalaxy
Check point
www.scmGalaxy.com
At this point, the CM process has been initiated and
established
The team can setup the clients and begin versioning their
assets
The next set of steps is related to building the code and
creating a single composite unit
Keeping the build process aside it is important to understand
the concept of release, branching and traceability
A build process could be a script or a manual one. The intent
of the script is to create a comprehensive unit of code that
can be released to an environment
Lets work with the assumption that a build script exists and
understand the concept of release
scmGalaxy
Release
Management
sG
Need for a release
www.scmGalaxy.com
A single unit of software has many dependencies on other
entities
Database
Environment parameters
Application parameters
Parameters could differ based on the environment the
application is being deployed into
The intent of a release is to build that comprehensive unit and
deploy to an environment
A release could be a manual one, automated one or a blend
the key point to note is that it should modify all related
entities with a particular version of code and allow users to
view new features
scmGalaxy
Notes about a release
www.scmGalaxy.com
Important considerations for a release
The whole software unit should be one single unit (e.g. ear
file)
Ensure that all external dependencies are modified along with
a release
● Database
● Properties file
These modifications can be manual (not preferred),
automated script (better), integrated within the application
deployment (like an installation exe - ideal)
Ensure that a set of happy flows are tested before the release
is used by everybody
Release notes should be used to document the “new features”
and the “known issues” in a release
scmGalaxy
Traceability
www.scmGalaxy.com
Traceability helps to relate a component to its requirement
Once the software is released to an environment there is the
additional complexity of bugs
Each change to the software to resolve a bug, should also be
traceable to the bug and the requirements / updated
requirement (in the form of a bug)
A change could even be initiated by a review comment.
All changes to the unit should be traceable to its original
cause for change
scmGalaxy
Traceability
www.scmGalaxy.com
This concept of being able to trace back a need or a cause
(requirement) from the effect (code base) is traceability
A cause of change could be a requirement, a review or even a
change to design
A configuration manager needs to enable traceability with the
CM processes
It is up to the team to make adequate comments, put into
version history etc to manage the traceability but the
infrastructure to bring in traceability is the task of a CM
scmGalaxy
Traceability in Documents
www.scmGalaxy.com
Documents such as requirements or design are generally
described in a word document
These assets are also CI and therefore will be versioned
The comments while checking them into the versioning tool is
important to bring about some level of traceability against time.
The comments will be seen in the future to understand why a
check in happened
scmGalaxy
Traceability and tagging
www.scmGalaxy.com
The ideal way to work with release is to first tag the code and then
retrieve the code based on that tag
Branch name
scmGalaxy
Demo of release and tagging
www.scmGalaxy.com
Demonstrate tagging and obtaining a release
scmGalaxy
How to support multiple projects /
features
www.scmGalaxy.com
Once a project is delivered, and tagged, often the next release is
decided at a pre-defined interval
In the interim the developers continue to edit the files to prepare for
the next release
In the interim, if there are bugs on the production release, the files
latest files cannot be used to fix them
At each point where a release is made, once needs to create a branch
A branch is like a copy of the whole code base except that it starts of
from a particular tag / version
The main branch is called the ‘HEAD’ branch. All other branches can
be named as required
Branches can be merged once it is no longer relevant
View CodeBranch_Merge.vsd
scmGalaxy
Note on branching
www.scmGalaxy.com
A new branch is more responsibility on the CM and the dev
team
Each bug and change there on should be done on the right
piece of code
Update the setup documents to reflect the steps needed to
retrieve sources from a particular branch and not just the
main trunk
Branching as a concept should be taught to novice developers
Builds and environments to deploy the build is also impacted
with each new branch
Often the number of CM in a project may need to be increased
scmGalaxy
Branching in CVS
www.scmGalaxy.com
● Fourth level
● Fifth level
scmGalaxy
Impact of branching
www.scmGalaxy.com
branching of a repository impacts
Tags
release process
frequency of builds
developer environments
build scripts
Setup documents
Authentication permissions
Build machine hardware requirements
Understand the impact of branching for your project
A new branch is a simultaneous project on the same code base but on
different threads. It is simple only if pain is taken early on to strategize
scmGalaxy
Demo of branching
www.scmGalaxy.com
scmGalaxy
Supporting multiple
environments
www.scmGalaxy.com
● Fourth level
● Fifth level
scmGalaxy
Common issues with CM and a team
www.scmGalaxy.com
Issues a team often faces with a bad CM
I do not know how to configure my client environment?
What is the process to follow when I check in my code?
What is traceability? What is my role in it?
The DB does not reflect the latest status, what should I do to
get the DB changes into the code base?
Where is the documentation of the 3rd party library? May I
should download and use the latest version?
The build takes too long, all I wanted to do was to deploy a
JSP page?
Which environment is the tester getting these bugs? How
many environments are there?
scmGalaxy
Audit of a process
www.scmGalaxy.com
scmGalaxy
SCM audit
www.scmGalaxy.com
scmGalaxy
Frequency of audit
www.scmGalaxy.com
Quarterly audits or auditing between phases will keep the
process compliance high
Audit will usually done by PM / Leads from other projects
Audits within the project is also a good practice
The CM is the owner of the CMP and has to ensure its
adherence
Regular checks by the CM will help in the long run
comments when doing a check-in
maintaining the version history in documents
adherence to the naming conventions
scmGalaxy
CM best practices
www.scmGalaxy.com
Integrate all users with the repository. Build, development IDE
and other touch points should use the repository as the
source
Dissuade users from making copies of the repository items
Focus on automating as many tasks in the build script
Automate the build kick off using tools like cruise control
Manage only the source and not the derived binaries
Arrive at an appropriate branching strategy for the project
Roll-out the CM process and educate the team
scmGalaxy
Mindtree CM’s
role
sG
SCMP Process at MindTree
www.scmGalaxy.com
scmGalaxy
What are PM’s Responsibilities?
www.scmGalaxy.com
sG
Thank You !
www.scmGalaxy.com