Software companies in India
and abroad are looking at a marriage
of traditional quality processes like
CMM and ISO with the daily build process,
something global software majors like
Microsoft have been following for ages.
STANLEY GLANCY takes a look at the scene
unfolding in India.
MICROSOFT Windows NT consists
of more than six million lines of code
spread across 40,000 source files. Hundreds
of software engineers spent thousands
of hours writing this code but how many
users every wonder about the mammoth
complexities that a project of this
size would have generated? The fact
is that it takes a tremendous amount
of discipline and effort to complete
such a gargantuan task- even though
there will be bugs even in the final
product. What is it that Microsoft does
right? "Microsoft religiously adheres
to the practice of Daily Build and that
is the secret," says Rajeev Agarwal,
principal, MAQ Software.
Daily Build
explained
Simply put, Daily Build is
a process in which a software product
is completely built everyday and then
put through a series of tests to verify
its basic operations. Elaborates Praveen
Kankariya, president and CEO of Impetus
Technologies, "A Daily Build is
an automatic, daily and complete build
of the entire source code, which is
clubbed with a smoke test to verify
the sanity of the build."
Daily build involves making the latest
version of the product available to
the client every day. The process calls
for integrating the latest work done
by the developers, testing the integrated
version, fixing priority issues and
making it available to the client by
hosting it.
Other than Microsoft, many product
companies in the west have been religiously
following the Daily Build process to
save on time, cut costs, minimize integration
risks and improve software quality.
Indian companies, which have followed
generic process framework like SEI-CMM
and ISO, have now begun to realize the
advantages of Daily Build. Says Agarwal,
"We are taking the practices learnt
at Microsoft and moving them to the
off shore model. We build the product
everyday and host it on the server,
which then goes through bug logs. This
enables us to get a daily review on
the status of the product".
Why Build
daily?
Among the main reasons for
companies adopting Daily Build are the
minimising of integration risks and
improvement in quality of the software
product. For instance, in the case of
a distributed software development environment
(onsite and offshore going on simultaneously)
the risk of integration is very high,
thanks to diverse sets of people working
on different requirements at different
places. The problem arises at the time
of integration of the various codes
and the product does not work well.
If the fault is discovered very late
in the project cycle, then debugging
would take that much longer, resulting
in further delays and added costs. In
extreme cases, projects have even been
shelved because of incompatibility between
various modules.
By building the product daily and smoke
testing processes, developers can minimise
such risks. If a build worked perfectly
well one day but smokes the next, then
some thing that was done in the interval
has gone wrong. So it is a matter of
correcting just one day's build than
rebuilding an entire build.
Some companies follow a Weekly Build
process. But, according to Agarwal,
the problem is that if the build is
broken one week then the organisation
can go for several weeks before the
next good build, resulting in a loss
of all the benefits of frequent builds.
Even Kankariya feels that the sooner
an integration problem is resolved the
less expensive it is to deal with. According
to certain industry estimates, by following
the Daily Build process companies can
save anything between 30-40 percent
of the cost. Even the deployment is
much faster as an organisation can significantly
cut down on the amount of time spent
on development.
Reducing the risk posed by poor quality
is another key advantage. Daily Build
helps capture the defects in the coding
phase itself and reduces burden in the
testing phase. It also helps the development
team focus on larger issues of testing
than dealing with individual bugs. This
adds more value to the overall software
development process. Says Agarwal, "You
bring the system to a known good state
and then keep it there. You simply don't
allow it to deteriorate to the point
where time-consuming quality problems
can occur."
Other than these primary benefits there
are a few tertiary benefits as well.
Iterations are done away with. It is
generally difficult to get customers
to articulate their requirements. So
when you provide them with the product
they will be able to pinpoint their
requirements. Also, according to Raghunathan,
it improves employee morale. Says he,
"By following the Daily Build process,
developers can see the project running
everyday, which serves to be a major
morale booster."
How it compares
?
According to K. Raghunathan,
vice president-technology for Blue Star
Infotech, Daily Build becomes relevant
in two contexts - the Microsoft context
wherein companies run very large projects
to develop products, and secondly in
the context of extreme programming (XP),
wherein versions are released everyday."
Typically, Indian companies do not get
projects on the same scale as those
undertaken by Microsoft. Traditionally,
Indian firms have followed CMM or ISO
processes. But companies that are into
product development and others like
Blue Star that have adopted XP are major
proponents of Daily Build. This is mainly
because XP and CMM cannot be reconciled.
While SEI-CMM suggests incremental
process maturity built across 18 key
process areas covering aspects related
to software engineering, software management
and organizational improvement activities,
the ISO quality management system is
based on the Deming cycle of plan, do,
check and analyse and helps in putting
a customer focused organisation-wide
process framework, aiming at satisfaction
of all stakeholders.
Says Agarwal, "Companies that
follow the CMM process need to necessarily
document every single process. They
also need to get prior approval on every
single document before even a minor
change can be incorporated. This slows
down the process, which in turn leads
to customer dissatisfaction."
But both Raghunathan and Kankariya
feel that software developers can achieve
a fine blend of both SEI-CMM and Daily
Build. Impetus, for example, uses SEI-CMM
and ISO 9000 for an organization-wide
quality management system covering all
aspects of software engineering, software
management and organisational activities.
This integrated process framework helps
the firm to incubate knowledge integration
exercises and also incorporate best
practices like the Daily Build process.
"ISO and CMM are strategic and
philosophical, whereas Daily Build is
tactical and a tool used for implementation
and operational aspects. In that sense,
the two complement each other and provide
a complete and comprehensive guideline
for the development process," articulates
Kankariya. Daily Build encourages a
certain discipline and helps developers
stick to original deadlines as it measures
progress on a daily basis. Even Microsoft
follows processes like documentation,
as it proves doubly beneficial to marry
CMM and Daily Build.
The
other roads to quality
SEI-CMM describes the principles
and practices that can help software
organisations improve the maturity
of their software processes. CMM
identifies key process areas and
the practices that comprise a
disciplined software process.
It provides a layered framework
to achieve the discipline needed
to engage in continuous improvement.
ISO (International Organization
Standardization) is concerned
with formulations of technical
standards to make development,
manufacturing and supply of
products and services more efficient,
safer and cleaner. ISO 9000 standards
aim to guarantee the effectiveness
and efficiency of the organization
its processes and customer focus.
|
Daily Success
Adoption of the Daily Build process
is not without its challenges. Things
can get hectic, as the pace is much
tougher. The process has to be extremely
streamlined, though this can actually
do a lot of good in the long run. Penalties
need to be put in place for breaking
the build, otherwise the point of the
exercise can stand defeated. For instance,
all other works need to come to a halt
till a broken build is fixed. Even when
schedule pressures intensify, companies
need to stick resolutely to the process,
as developers are bound to take design
and implementation shortcuts when stress
levels increase. In the case of Windows
NT a complete build would take as much
as 19 hours, but the team managed to
build everyday. In fact, the NT team
attributes much of its success on that
huge project to their daily builds.
But certainly, more and more organizations
in India are adopting the Daily Build
process of software development. With
ex-Microsoft employees like Agarwal
moving these processes offshore and
making a success of it, others are soon
likely to emulate their example. Companies
have realised the time and cost advantage
of the process. Even clients are beginning
to demand that developers provide them
with a daily version of the solution
being developed. Most major companies
in India already have a Daily Build
component as part of their process and
we should soon see the others joining
the bandwagon. As Raghunathan says,
"Today, advocacy of Daily Build
is just a trickle but we should soon
see it turning into a torrent.
The other
roads to quality
SEI-CMM describes the principles
and practices that can help software
organisations improve the maturity of
their software processes. CMM identifies
key process areas and the practices
that comprise a disciplined software
process. It provides a layered framework
to achieve the discipline needed to
engage in continuous improvement.
ISO (International Organization Standardization)
is concerned with formulations of technical
standards to make development, manufacturing
and supply of products and services
more efficient, safer and cleaner. ISO 9000
standards aim to guarantee the effectiveness
and efficiency of the organization its
processes and customer focus.
Praveen Kankariya feels that the sooner
an integration problem is resolved the
less expensive it is to deal with, and
Daily Build helps in this aspect.