Agile Software Development
Jeff Sutherland, one of the developers started it In February 2001, 17
Tools:continuous integration, automated or xUnit test, pair
programming, test driven development, design patterns, domain-
driven design, code refactoring and other techniques.
Negative point: Agile methods are sometimes characterized as being
at the opposite end of the spectrum from "plan-driven" or "disciplined"
methods. This distinction may be misleading, as agile methods are not
necessarily "unplanned" or "undisciplined". Agile teams may employ
highly disciplined formal methods. A more accurate distinction is that
methods exist on a continuum from "adaptive" to "predictive". Agile
methods lie on the "adaptive" side of this continuum.
Positive point: Agile development emphasizes working software as
the primary measure of progress. This, combined with the preference
for face-to-face communication, produces less written documentation
than other methods. The agile method encourages stakeholders to
prioritize wants with other iteration outcomes based exclusively on
business value perceived at the beginning of the iteration.
Kent Beck created it in October 1999.
Negative Point: A methodology is only as effective as the people involved, Agile
does not solve this
Often used as a means to bleed money from customers through lack of defining
Lack of structure and necessary documentation
Only works with senior-level developers
Incorporates insufficient software design
Requires meetings at frequent intervals at enormous expense to customers
Requires too much cultural change to adopt
Can lead to more difficult contractual negotiations
Can be very inefficient—if the requirements for one area of code change
through various iterations, the same programming may need to be done several
times over. Whereas if a plan were there to be followed, a single area of code is
expected to be written once.
Impossible to develop realistic estimates of work effort needed to provide a
quote, because at the beginning of the project no one knows the entire
Can increase the risk of scope creep due to the lack of detailed requirements
Agile is feature driven; non-functional quality attributes are hard to be placed as
Positive Point: Building software systems requires communicating
system requirements to the developers of the system.
Extreme Programming encourages starting with the simplest solution.
Within extreme programming, feedback relates to different
dimensions of the system development
Several practices embody courage. One is the commandment to
always design and code for today and not for tomorrow.
The respect value includes respect for others as well as self-respect
Behavior driven development is an agile software
development technique that encourages collaboration
between developers, QA and non-technical or
business participants in a software project.
It was originally named in 2003 by Dan North as a
response to Test Driven Development, including
Acceptance Test or Customer Test Driven
Development practices as found in Extreme
Test-driven development is a software development process
that relies on the repetition of a very short development cycle:
first the developer writes a failing automated test case that
defines a desired improvement or new function,
then produces code to pass that test and
finally refactors the new code to acceptable standards.
Kent Beck, who is credited with having developed or
'rediscovered' the technique, stated in 2003 that TDD
encourages simple designs and inspires confidence.
Test-driven development is related to the test-first
programming concepts of extreme programming, begun in
1999, but more recently has created more general interest in
its own right.
Rapid Application Development
Rapid Application Development refers to a type of software
development methodology that uses minimal planning in favor of
Rapid Application Development is a software development methodology
that involves techniques like iterative development and software prototyping.
According to Whitten (2004), it is a merger of various structured techniques,
especially data-driven Information Engineering, with prototyping techniques
to accelerate software systems development
RAD approaches may entail compromises in functionality and
performance in exchange for enabling faster development and
facilitating application maintenance