Instead, agile methodologies such as Scrum and Extreme Programming (XP) rely on a couple of less-formal approaches for ensuring that the application does what it is supposed to do and that it doesn't have bugs:
- They let users see the application as early and as often as possible to help confirm that project goals, whether they are stated, implied, or subconscious, are being met.
- They use automated tests, written by developers as they code, to help prevent bugs and make re-factoring easier
- They encourage face-to-face communication between developers and product owners to help prevent the misunderstandings that almost always occur in the over-the-wall exchange of documentation that often lead to failure to meet the goals of the product owner
- They employ motivated generalists (i.e. developers who are competent not just at coding, but also at analysis, testing, communication, etc.) rather than specialists to eliminate "hand-offs" in the development process
The net effect of these approaches is, when done well, a high-quality application. In the 11 production releases that I had in 2007 with my agile project, I had only one or two bugs reported by users in the production environment, and the users were openly thrilled with the functionality we delivered.