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:

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.

  1. Welcome Change
    Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  2. 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.
  3. Use cross-functional teams
    Business people and developers must work together daily throughout the project.
  4. 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.
  5. 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.
  6. Progress is working software
    Working software is the primary measure of progress.
  7. Promote sustainable development
    Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  8. Promote good design
    Continuous attention to technical excellence and good design enhances agility.
  9. Simplicity is essential - getter done!
    Simplicity--the art of maximizing the amount of work not done--is essential.
  10. Use self-organizing teams
    The best architectures, requirements, and designs emerge from self-organizing teams.
  11. 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

Frameworks (Methods) that implement the Agile Methodology

Here is a list of frameworks that implement the Agile Methodology. This list is not comprehensive.

Additional Comments concerning Agile methodology

Free Download

Free Web Tutorials

Agile Resources

Book Resources

Terms