A software development process can be called Agile if it prescribes that all artifacts to be delivered to the customer or required to support the customer are created iteratively. This includes code, user documentation and data base schemas. In addition:
1. Iterations are to last no longer than one month. Each iteration will produce working, tested and deployable software. Each iteration (except possibly the first) will use the software produced at the end of the preceding iteration as its base. Tests for functional requirements must be executable, and expressed in a manner that the customer can use to verify that the tests properly express the requirements.
2. The result of each iteration will either be placed into production, or the customer will provide sufficient resources to determine if the software meets quality goals and is usable for its intended purpose (or both). Meets quality goals includes passing all defined tests.
3. The requirements / goals for each iteration are based on the current state of the software and the business environment at the beginning of the iteration. This implies that requirements stated at the beginning of the project are continuously reevaluated and revised. It also implies that the cost of revising requirements is insignificant.
4. There will be engineering practices in place which are sufficient to ensure that the structure of the software remains continuously maintainable.
5. The development team, including any customer personnel assigned to the team, will periodically evaluate the process to determine if any changes need to be made to improve operations. This implies that there is a defined process, and that the team is empowered to change it as long as the change maintains quality standards, resource constraints, certification requirements and applicable regulatory requirements. It implies that all team members know what the current process is, and are trained to follow it.
Agile processes use frequent, timely, accurate, relevant and pervasive feedback to continously and sustainably increase value and reduce waste.
Aproveitando vou postar a definição da Agile Aliance.
In the late 1990’s several methodologies began to get increasing public attention. Each had a different combination of old ideas, new ideas, and transmuted old ideas. But they all emphasized close collaboration between the programmer team and business experts; face-to-face communication (as more efficient than written documentation); frequent delivery of new deployable business value; tight, self-organizing teams; and ways to craft the code and the team such that the inevitable requirements churn was not a crisis.
Na última sexta-feira eu estava tentando explicar em 3 minutos o que é desenvolvimento Ágil para o dono de uma empresa que não tem a mínima idéia sobre o assunto e não foi fácil…