Beruflich Dokumente
Kultur Dokumente
Puneet Agarwal
TCS Innovation Labs Delhi
154B, Block A, Sector 63,
Noida, Uttar Pradesh 201301 India
+91 120 6657366
puneet.a@tcs.com
ABSTRACT
1. INTRODUCTION
A recent Forrester report [17] states that Some IT execs put off
upgrades as long as possible to avoid costs and minimize business
disruption. More-over there is an old saying: if it's not broke
dont fix it. As a result, enterprise software products installed onpremise are usually upgraded only when necessary, either due to
obsolescence (often forced by the vendor) or (more rarely) a real
need to incorporate new features. In contrast, applications
developed in-house are enhanced more frequently.
The reluctance to accept new versions of software products is
usually because of non-backward-compatible versions or due to
issues related to version-compatibility of other inter-dependent
software products in use. In both cases the risk of destabilizing
business services warrants care before accepting a new release. In
essence the issue is related to poor-quality releases rather than the
fact that new versions are deployed.
Additionally, it is also recognized that new technology as well as
competition between product vendors, rather than genuine userneeds, are often the genesis of new versions of products. As
consequence, users are even more skeptical of accepting new
versions; as a result, not more than one major and 3-4 minor
releases annually are accepted for deployment in practice.
In contrast, hosted software-as-a-service (SaaS) products offer
consumers new features on a far more regular basis. Often the
user is not even aware of a new feature until it suddenly becomes
available, resulting in a positive experience of delight.
Thus, from the perspective of the consumer, using a SaaS product
eliminates the cost of an on-premise upgrade. The task of
upgrading the solution is the responsibility of the service provider
and it is bundled with the service, and, as mentioned above, users
are in fact often unaware of the upgrade.
General Terms
Management, Design
Keywords
SCRUM, Agile Process, Continuous Deployment, Release
Management, PAAS, SAAS, Configuration Management
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that
copies bear this notice and the full citation on the first page. To copy
otherwise, to republish, to post on servers or to redistribute to lists,
requires prior specific permission and/or a fee.
ISEC'11, February 23-27, 2011 Thiruvananthapuram, Kerala, India
Copyright 2011 ACM 978-1-4503-0559-4/11/02 ... $10.00
51
2.
3.
4.
5.
6.
7.
2. Dimensions of Agility
Fred Brooks has argued in [15], and more categorically stated in
his recent book [14], that the waterfall model does not work.
Agile methodologies attempt to rectify the shortcomings of the
waterfall model through variations of the iterative development
model, wherein certain or all phases of the software development
life cycle (SDLC) are executed iteratively. We can classify agile
methods based on which particular phase of the SDLC is executed
iteratively. Further, depending on which phases are involved,
different agile methods, such as RUP [7], XP [8,9] and SCRUM
[5,6], address different dimensions of agility, viz. development,
requirements, and continuous deployment respectively, as
depicted in Figure 1.
The Rational Unified Process (RUP) and its variations [7], such as
the Essential Unified Process, Open Unified Process and Agile
Unified Process mainly prescribe multiple iterations of the
development phase of the SDLC. Each of the iterations produces a
working prototype of the software product being developed, not a
released version deployed in production. Software release and
deployment is handled during the transition phase of the
52
4. Related Work
As we have already discussed, iterative development processes,
such as RUP [7] or XP [9], focus on either the development or
requirements phases and do not directly apply to the problem of
rapid and continuous deployment of new versions of a software
product in production.
53
Based on the time gap between end and start of two consecutive
sprints on, or the degree of overlap between multiple sprints, there
are different types of SCRUM, identified as Type A, Type B and
Type C, as described in [1, 3]. These different types of SCRUM
are illustrated in Figure 2. (It has been observed that Type B and
C SCRUM result into hyper-productive teams that produce new
features at a very a rapid rate [3].) We describe each type of
SCRUM in detail below.
5. ABCs of SCRUM
At the core of SCRUM is an iterative, incremental process of
software planning, development, testing, release and deployment.
Thus, all phases of the SDLC are iterative. The set of
requirements for the software product, at a given point in time, is
divided into smaller isolated cycles of work called sprints.
Regular team meetings are another important feature of SCRUM.
The meetings before the start and end of each sprint are especially
important Before a sprint, a sprint planning meeting is held to
define the list of features to be included in the sprint, their
estimated time for completion and feasibility; this list is also
referred to as the sprint backlog. (We shall also refer to features
as work-items.) Both team members and managers attend this
meeting which usually lasts for eight hours (often in two spells of
4 hours each) [6]. Once a sprint-backlog is approved and
committed to by the team members; it cannot be modified until
the end of sprint. Usually no schedule slippage is allowed and
some groups practice SCRUM with 10% as maximum permissible
schedule slippage. If the estimated slippage is greater, some
features are dropped from the current sprint-backlog.
54
6. Continuous SCRUM
The process we describe now abstracts from our experience of
practicing weekly releases in the engineering team of a hosted
platform-as-a-service (PaaS) product called InstantApps [19, 20
and 21], over a period of more than two years. We have also
compiled a number of best practices from our experience, which
together are enablers of a sustainable weekly release cycle. These
best practices are technology agnostic and can be applied to any
agile methodology with suitable tailoring. At the same time, the
process we have used, which we call Continuous SCRUM, is, we
claim, an example of True Type C SCRUM. Continuous
SCRUM achieves fully overlapping sprints using a single team,
with different team-members purposefully engaged in different
phases of consecutive sprints.
55
single sub-team assigned to this task. Note once more how our
approach differs from the multi-team Meta-SCRUM [3], where
different teams develop different types of features. Our approach
also avoids the need for intra-development-team synchronization,
which is needed in Meta-SCRUM, with the team working on
larger sprints (i.e. focused on customer required features or the
one focused on product roadmap) needing to co-ordinate with the
weekly team on regular basis, which in some situations may
warrant considerable additional effort.
At the end of phase P3 (i.e. QA) a sprint normally results in a
well-tested set of features constituting a new release, which is also
deployed into production. (We describe details of how this is
actually achieved in the sections below.) Thus, a new release is
deployed every week, even though each spring itself takes three
weeks.
However, if a release-candidate still has critical bugs with which
the software cannot be released, the release needs to be cancelled
and either the current (almost complete) sprint needs to be merged
with its successor. As a consequence the functional scope of the
successive release will increase to that of two sprints. In this
manner we ensure that all sub-teams always have work, nobody is
idle, and most importantly the cycle of releases is not broken.
In order to plan a sprint in SCRUM, items from the productbacklog are chosen (also termed as sprint-backlog) to be
fixed/developed in that sprint. The scrum-master then assigns
these work-items to individual developers.
56
Finally, developers are also allowed to make changes to the postfix-scenario during P2; subject to review and approval by
product-owner.
57
Often situations arise such as: A critical bug is found in last few
hours of testing just before a release is planned; further, it is
determined that fixing it will not only require more time but also
extensive testing. A well-defined decision making process as
shown in Figure 8 is followed.
1.
2.
3.
4.
5.
6.
58
6 RCT
7 BCT
8 PRT
1 UT
2 PT
In the third week of the sprint, the QA team locks the releasecandidate environment and performs RCT and BCT. In case any
work-items are rejected by QA, they are removed from the release
(with the assistance of the respective developer). Once releasecandidate is declared as ready by the QA team, the release
manager generates upgrade scripts that are applied in all the
production environments. (Occasionally, the QA team may
require an entire release to be withheld and postponed by a few
days, or rarely, even cancelled and merged with the next sprint.)
4 QA2
5 QA3
59
Type
Count
Planned
Defect
41
Planned
Enhancement
13
Planned
New Feature
Customer Requested
Defect
Customer Requested
Enhancement
Customer Requested
New Feature
Total
Defect
42
Total
Enhancement
18
Total
New Feature
9. REFERENCES
60