Agile Methodology
aka: Agile Software Development
(Free Web Tutorials)
by Michael Thomas
( Home Page: Free Web Tutorials
on Java & Web Technologies )
Short Definition:
Agile Methodology - is a system of methods to satisfy the customer through
incremental continuous delivery of working solutions.
Long Definition:
Agile Methodology - is a system of methods to satisfy the customer through
incremental continuous delivery of working solutions in weeks/months still
welcoming change for a competitive advantage which is delivered by collaboration
of cross-functional self-organizing teams made of motivated business people and
developers working in a supportive environment where the team daily report on
progress, reflects on progress to be more effective and uses technical
excellence and good design. The supportive environment values: 1) Individuals
and interactions over processes and tools; 2) Working software over
comprehensive documentation; 3) Customer collaboration over contract
negotiation; 4) Responding to change over following a plan.
(Note: The definition was created by Michael Thomas from the manifesto and
principles of Agile software development found at
http://agilemanifesto.org)
Manifesto for Agile Software Development:
We are uncovering better ways of developing software by doing it
and helping others do it.
Through this work we have come to value:
-
Individuals and interactions over processes and tools
-
Working software over comprehensive documentation
-
Customer collaboration over contract negotiation
-
Responding to change over following a plan
That is, while there is value in the items on the right, we
value the items on the left more.
(Note: The manifesto is taken in its entirety from
http://agilemanifesto.org)
Twelve Principles behind the
Agile Manifesto
We follow these principles:
Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
-
Welcome Change
Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
-
Deliver working software frequently
Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
-
Use cross-functional teams
Business people and developers must work together daily throughout the
project.
-
Create a supportive environment
Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
-
Promote collaboration within the team
The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.
-
Progress is working software
Working software is the primary measure of progress.
-
Promote sustainable development
Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
-
Promote good design
Continuous attention to technical excellence and good design enhances
agility.
-
Simplicity is essential - getter done!
Simplicity--the art of maximizing the amount of work not done--is essential.
-
Use self-organizing teams
The best architectures, requirements, and designs emerge from
self-organizing teams.
-
Use reflection to become more
effecitve
At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly.
(Note: The 12 principles is taken in its entirety from
http://agilemanifesto.org/principles.html. I have added the words in
red.)
Agile History
-
Source:
http://agilemanifesto.org/history.html - history of the Agile manifesto.
-
On February 11-13, 2001, at The Lodge at Snowbird ski
resort in the Wasatch mountains of Utah, 17 people met to talk about a need
for a lightweight software development method alternative to the
documentation driven, heavyweight software development processes (aka:
Waterfall-oriented method).
-
The 17 people represented lightweight software
development methods created in the mid 1990s such as Extreme Programming,
SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven
Development, and Pragmatic Programming.
-
Authors of the Manifesto:
http://agilemanifesto.org/authors.html - a bio of 14 out of the 17
authors of the manifesto.
Authors: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward
Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron
Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken
Schwaber, Jeff Sutherland, Dave Thomas
-
Here are some snippets from the Agile
history page that shows
a more agile way of thinking. You can see the concept of being agile,
lightweight and solution oriented.
-
... Agile Methodologies is about the mushy stuff of
values and culture ...
-
... values based on trust and respect for each
other ...
-
... promoting organizational models based on people
...
-
... collaboration, and building the types of
organizational communities in which we would want to work ...
-
... about delivering good products to customers ...
-
... operating in an environment that does more than
talk about "people as our most important asset" but actually "acts" as
if people were the most important ...
-
... practices define a developer community freed
from the baggage of Dilbertesque corporations ...
(Note: - Dilbert is an American comic strip written about office
humor of being micromanaged.)
-
... don't want to make hard trade-off decisions, so
they impose irrational demands through the imposition of corporate power
structures ...
-
... companies have to rid themselves of their
Dilbert manifestations of make-work and arcane policies ...
-
... This freedom from the inanities of corporate
life attracts proponents of Agile Methodologies ...
-
... Agile approaches scare corporate bureaucrats at
least those that are happy pushing process for process� sake versus
trying to do the best for the "customer" ...
-
... The Agile movement is not anti-methodology ...
We want to restore a balance ...
-
... We embrace documentation, but not hundreds of
pages of never-maintained and rarely-used ...
-
... We plan, but recognize the limits of planning
in a turbulent environment ...
Frameworks (Methods) that implement the
Agile Methodology
Here is a list of frameworks that implement the Agile Methodology. This list
is not comprehensive.
- Adaptive software development (ASD)
- Agile modeling
- Agile Unified Process (AUP)
- Crystal Clear Methods
- Disciplined agile delivery
- Dynamic systems development method (DSDM)
- Extreme programming (XP)
- Feature-driven development (FDD)
- Lean software development
- Kanban (development)
- Scrum
- Scrum ban
Additional Comments concerning Agile methodology
- Most agile development methods break the tasks into small increments
with minimal planning and do not directly involve long-term planning.
Free Download
- Download - a zip file of the website pertaining
to this topic (all content,
tutorials, examples, etc...). Great resource!!! Work
offline!!!
Free Web Tutorials
-
Scrum Framework
- tutorial on the Scrum framework for implementing the Agile Methodology.
-
XP Framework (eXtreme Programming) - need to create....
Agile Resources
- http://agilemanifesto.org -
Agile's homepage which contains the "Agile Manifesto" and links to the
"Twelve Principles of Agile Software", "About the Manifesto", "About the
Authors" and a few other items.
Book Resources
- Robert C. Martin
Agile Software Development: Principles, Patterns and Practices
- Martin Fowler
Refactoring: Improving the Design of Existing Code
- Mike Cohn
Agile Estimating and Planning
- Mike Cohn
User Stories Applied: For Agile Software Development
- Ken Schwaber
Agile Project Management with Scrum
- Ken Schwaber, Mike Beedle
Agile Software Development with Scrum
- Kent Beck
Extreme Programming Explained: Embrace Change (2nd Edition)
- Kent Beck
Test Driven Development: By Example
- Henrik Kniberg on Jun 27, 2007 (How to use Scrum &
XP together)
Scrum and XP from the Trenches (ISBN: 978-1-4303-2264-1) - (Free
Download Available) - account of how a Swedish company implemented Scrum
and XP with a team of 40 people and how they imporoved their process over a
year's time.
http://www.infoq.com/minibooks/scrum-xp-from-the-trenches
Terms
- SDLC - Software Development Life Cycle
- XP - Extreme Programming - a type of
agile software development.
- Scrum - Scrum is an iterative and incremental agile software development
model based on multiple small Scrum teams who deliver quickly and respond to
emerging requirements in an interdependent manner. The term is named for the
scrum (or scrummage) formation in rugby, which is used to restart the game
after an event that causes play to stop, such as an infringement.
- cross-functional team - is a group of people with different functional
expertise working toward a common goal.
- Waterfall - is sometimes referred to as “traditional” method of
development where you sequential flow (step) through the design process in
phases (steps): Conception, Initiation, Analysis, Design, Construction,
Testing, Production/Implementation and Maintenance. In Waterfall you
complete a phase before you start another phase. This method can produce
many asset artifacts (mounds of documents) that are never used or updated if
changes occur.
- Empirical evidence (also empirical data, sense experience, empirical
knowledge, or the a posteriori) - is a source of knowledge acquired by means
of observation or experimentation. (Source: Wikipedia.org)
- manifesto - a public declaration of policy and aims, especially one
issued before an election by a political party or candidate. (Source:
Wikipedia)