Disciplined Agile Software Development: Definition

A lot of people have been asking the question "What is Agile Software Development?" and invariably they get a different definition depending on who they ask. Many people will correctly say that agile software development conforms to the values and principles of the Agile Manifesto, and those sites are clearly great resources. But, if you're looking for a "sound bite" definition of agile software development, that's a little harder to come by. Furthermore, the definition that you get might not promote the level of maturity, or perhaps discipline is a better word, that you're hoping to achieve. Here's a definition that I think is pretty good (the layout of the points may be important) which I hope you find useful. Disciplined agile software development is:

An iterative and incremental (evolutionary) approach to software development

which is performed in a highly collaborative manner

by self-organizing teams within an effective governance framework

with "just enough" ceremony

that produces high quality solutions

in a cost effective and timely manner

which meets the changing needs of its stakeholders.

You might find my articles The Criteria for Determining Whether a Team is Agile, Examining the Agile Manifesto, and Agile System Development Lifecycle (SDLC) to be interesting introductions to agile software development. Also, my various agile surveys provide some insight into the how Agile is being adopted within organizations.

My Agile Books

Agile Modeling The Object Primer 3/e Agile Database Techniques Order now! Refactoring Databases Disciplined Agile Delivery