Agile Development
What is Agile Development?
"Agile Development" is an umbrella term for several iterative and incremental
software development methodologies. The most popular agile methodologies include Extreme
Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development,
and Feature-Driven Development (FDD). While each of the agile methods is unique in its
specific approach, they all share a common vision and core values (see the
Agile Manifesto). They all fundamentally incorporate
iteration and the continuous feedback that it provides to successively refine and deliver
a software system. They all involve continuous planning, continuous testing, continuous integration,
and other forms of continuous evolution of both the project and the software. They are all lightweight
(especially compared to traditional waterfall-style processes), and inherently adaptable. As
important, they all focus on empowering people to collaborate and make decisions together
quickly and effectively.
The Evolution of Agile Development
Many of the individual principles and practices that are promoted by agile
development have been around for years, even decades. As opposed to implementing these
best practices piecemeal, agile methodologies have "packaged" various customer,
management, and in some cases, engineering practices and principles together in a way that helps
guide teams through the process of rapidly planning and delivering working,
tested software. Each of the agile methodologies combines both old and new ideas into
refinements that are certainly greater than the sums of their parts.
While it is true that many
of the practices associated with agile development have been around for quite some time, the
average software development team has yet to embrace many of the principles and practices.
Even today, the average software team does not iterate, does not deliver software incrementally,
and does not practice continuous planning nor automate testing. Now that these practices
have been combined in a manner that can more easily be understood and adopted, the trend appears to
be rapidly changing for the better, especially during the last several years.
As with any new way of doing business though, agile methods have generated quite a
bit of controversy within the software community. Yet since their emergence, in project
after project, they have continued to deliver higher quality software systems in less time than
traditional processes. If you are a software development professional, you definitely owe it to
yourself to at least become familiar with the theory and practice of agile development.
Hopefully the information presented on this site can assist.
|