¿Qué es la Definición de Done?
La Guía Scrum 2020 define la «Definición de Done» como la descripción formal del estado del Incremento cuando cumple las medidas de calidad requeridas por el Producto.
También dice que «en el momento que un Product Backlog Ítem cumple la Definición de Done, ha nacido un Incremento».
Así pues, esta definición se aplica a todo el Incremento y detalla las condiciones bajo las cuales el Producto es usable sin tener que añadir ningún trabajo adicional.
Es habitual que se confunda la Definición de Done con las verificaciones de funcionalidad de los Ítems que se van realizando durante el Sprint, como es comprobar el Criterio de Aceptación. Uno de los motivos es que una buena práctica es no dejar estas comprobaciones de funcionalidad para el final del Sprint (realizando una «mini-cascada») para evitar sorpresas desagradables.
Las buenas prácticas de ingeniería de software ágil como la «Integración Continua (CI)» recomiendan verificar frecuentemente tanto las pruebas técnicas, como las funcionales y las de calidad (p.e. la Definición de Done), y obligatoriamente antes de dar por finalizado el Incremento.
La Definición de Done detalla las condiciones de calidad que debe cumplir cualquier Incremento del Producto, mientras que el Criterio de Aceptación define las condiciones específicas de cada funcionalidad respecto su comportamiento y calidad técnica.
¿Qué es el Criterio de aceptación?
El Criterio de Aceptación es una buena práctica de la ingeniería de software ágil consistente en definir, previamente a su implementación, las condiciones específicas de cada funcionalidad respecto su comportamiento y calidad técnica. Esta definición suele realizarse durante el refinamiento previo al Sprint, por parte del Product Owner, los Developers y otros Stakeholders (p.e. los usuarios o expertos concernidos).
Cabe destacar que el Criterio de Aceptación no es estándard de Scrum, no aparece en la Guía Scrum, y que no es un documento que el Product Owner escribe para que lo lean los Developers, sino que suele ser definido de manera conjunta para mejorar su calidad y minimizar malentendidos.
Tampoco debe confundirse el criterio de aceptación con las pruebas funcionales, que se realizan como parte del desarrollo de la funcionalidad durante el Sprint y que pueden adoptar diferentes estilos, como es el Behaviour-Driven Development.
El Criterio de Aceptación es estándard de Scrum, sino una buena práctica ágil, que suele realizarse conjuntamente entre Product Owner y Developers en el refinamiento previo al Sprint.
¿Cómo se usan conjuntamente la Definición de Done y el Criterio de Aceptación?
El Criterio de Aceptación pretende guiar la implementación, así como permitir las estimaciones o detectar dependencias. Permite comprender los aspectos clave de la funcionalidad, p.e. acompañados de una descripción gráfica de las pantallas como un mockup, así como sus condiciones técnicas específicas, como p.e. rendimiento o compatibilidad.
También es un «contrato» básico con el cliente para explicitar las expectativas de los usuarios, lo cual en ningún caso debería significar que se evite la flexibilidad durante la implementación o que se rechacen cambios, pero permite encontrar un término medio de estabilidad durante la implementación.
A partir del Criterio de Aceptación se suele definir de manera más detallada la documentación del comportamiento esperado de la funcionalidad y de sus pruebas funcionales y técnicas. Se pueden utilizar varios enfoques para plasmar estas pruebas, como el Behaviour-Driven Development o las «Pruebas (funcionales) de Aceptación».
Estas últimas son diferentes del Criterio de Aceptación porque tienen como objetivo detallar las funcionalidades para verificar su implementación, aunque la similitud del nombre puede hacer que se confundan con el criterio de aceptación.
Finalmente, la figura siguiente muestra como durante el desarrollo pueden surgir dudas o nuevas ideas que modifiquen el criterio de aceptación. Si esto ocurre, debería consensuarse con el Product Owner y los Stakeholders. Una vez que se concluye la implementación suele verificarse de nuevo la Definition of Done, que no cambia durante el Sprint, sino durante las retrospectivas si se considera necesario o se está en condiciones de mejorar la calidad.
El Criterio de Aceptación, la Definition of Done y la verificación de la implementación (mediante pruebas de aceptación o Behaviour-Driven Development) suelen trabajarse conjuntamente durante el Sprint. Una buena práctica como la Integración Continua recomienda hacerlo a diario, y no dar por entregada una funcionalidad hasta que se cumplen todas ellas.
Si te ha gustado este artículo, ¡no olvides compartirlo en las redes sociales!