Results (
Thai) 2:
[Copy]Copied!
The best of adaptive and predictive methodologies:
Open source software development,
a balance between agility and discipline
Chitu Okoli and Kevin Carillo
(c) 2010 Chitu Okoli
Abstract
Open source software development (OSSD) is a promising alternative for synthesizing agile
and plan-driven (e.g. waterfall) software development methodologies that retains most
benefits of the two approaches. We contrast the traditional systems development life cycle
approach, more recent agile software development methods, and OSSD. We compare the first
two approaches with OSSD, highlighting its synthesis of benefits from both, with unique
benefits of its own, offering solutions to areas where the other methodologies continue to face
difficulties. OSSD is highly responsive to user needs, and draws talent from a global team of
developers. OSSD is a low-risk methodology with potentially high return on investment.
While not appropriate for all applications, especially those where the needed applications are
extremely idiosyncratic to one company, it is nonetheless a valuable asset in an
organization’s portfolio of software development solutions.2
Keywords: Software development methodologies, open source software development, agile
software development, systems development life cycle, waterfall model, extreme
programming.3
As technology constantly reshapes work environments at a dramatically pace, software
development is increasingly subject to conflicting forces due to ever-increasing uncertainty.
On one side, such turmoil in the business environment constrains users to iteratively redefine
their needs whereas on the other side, software development companies search for stable
planning to allocate their resources and to efficiently control software production processes in
order to meet customers’ expectations. To answer both needs, the software development field
has been prolific in introducing innovative methodologies for the last 25 years that can be
arranged in an “adaptive-to-predictive” continuum (Barry W Boehm & Turner, 2004, pp.
165-194). However, only a small minority survived to be used today. Barry Boehm, a major
contributor in the field of software engineering, places the widely-accepted plan-driven and
agile methods on the two extremes of the planning emphasis spectrum. Many real-world
examples argue for and against both methodologies leading to an ideological battle between
fervent proponents of both sides. However, the resolution may not reside in one of the
extremes but rather in a combined approach, as Barry Boehm (2002)suggested:
Although many of their advocates consider the agile and plan-driven software
development methods polar opposites, synthesizing the two can provide developers
with a comprehensive spectrum of tools and options.
Open source software development (OSSD) appears to be a particularly attractive candidate
for a solution, as it combines and integrates the main strengths of agile and plan-driven
methods. Based on Boehm’s analysis, Warstaand Abrahamsson suggested placing the OSS
paradigm between the agile and plan-driven approaches (Abrahamsson, Salo, Ronkainen, & 4
Warsta, 2002). They build on Boehm’s (2002) frameworkthat compares the methodologies at
the organizational level by focusing on developers, customers, requirements, architecture,
refactoring, size, and primary objective.
Rather than the focusing on the stated purpose of each of the three methodological
approaches, we believe it is valuable to contrast agile, open source and plan-driven
methodologies from the pragmatic perspective of their differences in the various stages of a
software development project. We believe that practitioners could benefit from such an
analysis by identifying the key sensitive factors during project development. To present this
analysis, we first review the traditional systems development life cycle (SDLC) approach in
section I. In section II, we then review more recent agile software development methods
(which we will refer to as “agile methods”) that try to resolve some of the ongoing problems,
and then introduce open source software development in section III. The major part of this
article, section IV, follows with a comparison of the first two approaches with OSSD,
highlighting its synthesis of benefits from both, with unique benefits of its own, offering
solutions to areas where the other methodologies continue to face difficulties. We conclude in
section V with a summary of the benefits of OSSD.
I. Plan-driven approach: the SDLC methodology
Among the plan-driven methodologies, the traditional systems development life cycle
(SDLC) is the most widely used conceptual model in project management to describe the
stages involved in an information system development project (Blanchard & Fabrycky, 2006; 5
Jessup, Valacich, & Wade, 2008). The “waterfall” model is the most popular version of the
SDLC, but not the only form (Royce, 1970; Barry W Boehm, 1988; McConnell, 1996). The
SDLC approach involves a number of systematic stages (usually four or five, depending on
how the stages might be categorized) whose goal is to thoroughly understand users’ needs,
craft a solid design to meet these needs, and implement a functional system that satisfactorily
fulfils the needs. The stages are: identification and planning, where the project is justified;
analysis, where user and project needs are understood in detail; design, where a thorough,
detailed specification of the solution is created; and implementation, where the
programming, testing, and installation are executed. Some add maintenance as a fifth stage
that continues for the life of the system (Jessup et al., 2008).
The traditional strengths of this approach have been its ability to manage very large projects,
its attention to quality assurance, and its long-term scalability (assuming a properly executed
design stage). However, it has several well-known shortcomings. First, the SDLC depends on
the assumption that the users’ requirements are understood from the outset, and that they will
not change significantly during the process of development, nor soon afterwards. When these
assumptions do not hold (and they often do not), this approach can result in working systems
that do not correspond to users’ present and actual needs.
Another fundamental problem is simply that the process takes too long from commencement
to when the end-users can begin using the system. While the length of the project depends on
its size and the available resources, SDLC projects are designed such that they developed
systems are not available to users until the process is completed, which could take from 6
several months to a couple of years. This implicitly means that SDLC projects have a
relatively high risk of finishing over budget and behind schedule, or not finishing at all. The
longer the project lasts, the more likely that user needs will change—often quite
dramatically—before the completed system is delivered, thus not satisfying their needs when
eventually delivered. The cost of large software projects is notoriously difficult to accurately
estimate, and extended time frames aggravate this effect (Jones, 2007; Lederer & Prasad,
1992).
II. Agile software development
A number of development methodologies have been formulated to resolve many of these
shortcomings of the plan-driven approach, including prototyping, rapid application
development, and object-oriented analysis and design, among others. One particularly notable
class of solutions that emerged in the mid 1990s has come to be called agile software
development, which we will refer to here as “agile methods” (Wikipedia, 2008a;
Abrahamsson et al., 2002; B. Boehm, 2002; Cunningham, 2001). While Extreme
Programming (XP) (Beck, 1999) is the best known of these methods, others such as Scrum
(Ambler, 2008) and the Dynamic Systems Development Method (DSDM) (Stapleton, 1999)
hold to a similar philosophy. Agile software development methods are characterized by four
key characteristics, outlined in the Agile Alliance’s “Manifesto for Agile Software
Development” (Manifesto for Agile Software Development, http://agilemanifesto.org).7
1. Individuals and interactions over processes and tools: Generally, programmers do
not work individually in their cubicles, alone with their computers. Rather, they work
closely together (in XP they program in pairs), and review each other’s work in a
high-interaction environment.
2. Working software over comprehensive documentation: Traditional development
might not produce any software for several months or even a year or two. It uses
careful documentation as its primary evidence of productivity and basis of
accountability. In sharp contrast, agile methods release working software (though
perhaps very rudimentary at first) in regular periods of two to six weeks, and work is
centred on this “live documentation”.
3. Customer collaboration over contract negotiation: Agile methods heavily
emphasize customer (end user) collaboration throughout the life of the project. XP
even insists that a non-technical customer representative should be a permanent, fulltime member of the project for its entire lifespan.
4. Responding to change over following a plan: Agile methods de-emphasise lengthy
periods of analysis and design, which usually take half the time of an SDLC project.
Rather, they get right to work, churning incrementally functional releases (not just
prototypes) every three or four weeks. They expect customer needs (or desires) to
change often, and rapidly change direction to accommodate the customer.
As their name implies, agile methods emphasize rapid development and high flexibility
through proven practices such as test-driven development and refactoring. Instead of
carefully laid-out designs, agile methods use short “timeboxes” of focused work to produce 8
working, thoroughly tested rele
Being translated, please wait..
