Desarrollo guiado por comportamiento es una manera fantastica de obviar una situación que comúnmente encontramos en el proceso de desarrollo de software entre equipos. Muy a menudo, los desarrolladores y los profesionales del negocio no están satisfechos debido a la gran cantidad de trabajo extra realizado y la cantidad de tiempo y recursos malgastados.

En general, el problema más común que encontramos es la falta de comunicación entre ambas partes implicadas, los desarrolladores no entienden aquello que el negociante pide y viceversa, los clientes no sienten que los desarrolladores puedan conseguir aquello que ellos piden.

En este artículo me gustaría hablar en profundidad del desarrollo guiado por comportamiento, su diferencia con el TDD, unas pocas herramientas para utilizar y beneficios.

 

¿Qué es desarrollo guiado por comportamiento?

 

Desarrollo guiado por comportamiento, o BDD, es otro proceso del desarrollo de software ágil que anima la colaboración entre desarrolladores de software, QA, gestores de proyectos y el equipo de negocio.

Fue inventado en el año 2003 por Dan North como respuesta del Desarrollo guiado por pruebas (TDD). En las “Especificaciones Agile, BDD e intercambio de Pruebas” en Noviembre del año 2009 en Londres, Dan North dió la siguiente definición de BDD, la cual me encantó:

“BDD es un segunda-generación, dentro-fuera, basado en el empuje, diversos stakeholder, diversas escalas, alta automatización, metodología Agil. Describe un ciclo de interacciones con unas salidas muy bien definidas, resultado de la entrega del trabajo, con software testeado de importancia”.
Permite al equipo técnico y al de negocio conseguir sus metas. De hecho, ayuda a definir las líneas de negocio deseadas, comunicar aquello que se necesita hacer por el desarrollador y entender cuales son los retos técnicos que pueden encontrar.

Básicamente, con BDD el foco está en conseguir un buen entendimiento del comportamiento del software al que quieres llegar, comunicandolo a los stakeholders. Por lo que los desarrolladores mantienen el foco en el porque de la creación de un código en vez de centrarse demasiado en los detalles técnicos. Ahora que sabemos un poco mas sobre BDD, veamos cuales son las diferencias con TDD.

 

Diferencias: Desarrollo guiado por comportamiento VS Desarrollo guiado por pruevas

 

Muchos piensan que BDD y TDD son lo mismo y están equivocados. Cuando hablamos de TDD, hablamos de un proceso establecido. Básicamente se utilizan pruebas unitarias automatizadas para darles a los desarrolladores una dirección sobre cómo diseñar el software. BDD puede verse como un conjunto de mejoras prácticas para escribir grandes pruebas.

Yo diría que la mayor diferencia es que el desarrollo guiado por comportamiento describe casos de prueba en un lenguaje natural que los no programadores son capaces de leer. Para expresar el propósito de un código, los desarrolladores combinan su idioma nativo con el lenguaje ubicuo de DDD (Domain Driven Design).

En lugar de codificar las funciones, le dice al código exactamente lo que quiere que haga, utilizando un estilo que está más cerca de nuestra forma de escribir oraciones. Obtiene una comprensión más clara de lo que el sistema debería hacer desde la perspectiva del desarrollador y del cliente, mientras que TDD solo le da al desarrollador una idea de lo que el sistema debería hacer.

Eso significa que BDD permite a los desarrolladores y a los clientes trabajar juntos en el análisis de requisitos que está contenido en el código fuente del sistema. Por lo tanto, BDD se vuelve bastante útil cuando se trata de comunicarse con todos los miembros de un equipo de productos multifuncionales.

En lugar de tener pruebas que solo son útiles para los ingenieros, tiene una prueba que ayuda a todos. Mejora la colaboración entre las partes y permite a los desarrolladores obtener un alcance más claro de las características que se requieren y el cliente tiene una mejor idea de lo que se entregará, con estimaciones realistas.

BDD influye directamente en el diseño del software, mientras que TDD se centra en las pruebas. Entonces podemos decir que TDD se enfoca en el aspecto de implementación del sistema mientras que BDD, como su nombre indica, se enfoca en el aspecto conductual del sistema. La prioridad no es cómo se implementará, sino más sobre lo que el usuario podrá hacer y lo que podrá ver.

Entonces, ¿cual es mejor? Ninguna. ¡Deben usarse juntos!


¡Creo que es obvio que si escribo un artículo sobre desarrollo guiado por comportamiento, hay beneficios que me gustaría mencionar!

 

Beneficios de BDD o Desarrollo guiado por comportamiento

 

  • Fuerte colaboración. Con BDD, todas las partes involucradas tienen una gran comprensión del proyecto y todas pueden tener un papel en la comunicación y realmente tener discusiones constructivas. BDD aumenta y mejora la colaboración. Permite a todos los involucrados en el proyecto participar fácilmente en el ciclo de desarrollo del producto. Y al usar un lenguaje sencillo, todos pueden escribir escenarios de comportamiento.
  • Alta visibilidad. Al utilizar un lenguaje que todos entienden, todos obtienen una gran visibilidad de la progresión del proyecto.
  • El diseño del software sigue el valor comercial. De hecho, BDD le da una gran importancia al valor y las necesidades del negocio. Al establecer prioridades con el cliente, en función del valor que proporciona, los desarrolladores pueden proporcionar mejores resultados porque tienen una sólida comprensión de cómo piensa el cliente. Al enfocarse en el valor, no se crean características inútiles.
  • El lenguaje omnipresente. Como se mencionó anteriormente, el lenguaje ubicuo es comprensible para todos los miembros del equipo, lo que reduce los conceptos erróneos y los malentendidos y facilita que los nuevos miembros se unan al proceso de trabajo.
  • El desarrollo de software cumple con la necesidad del usuario. Al centrarse en las necesidades del negocio, obtiene usuarios satisfechos, y eso implica un negocio feliz, por supuesto. En realidad, con BDD, como su nombre lo dice, te enfocas en el comportamiento, que tiene un impacto más fuerte que la implementación en sí misma.
  • Más confianza del lado del desarrollador. Los equipos que usan BDD en general tienen mucha más confianza en que no romperán el código y tendrán una mejor capacidad de predicción en lo que respecta a su trabajo. 
  • Costes más bajos. Al mejorar la calidad del código, básicamente estás reduciendo los costes de mantenimiento y minimizando los riesgos del proyecto.

 

Herramientas para desarrollo guiado por comportamiento

 

  • JDave – http://jdave.org/ 
  • Concordion – http://www.concordion.org 
  • Easyb – http://easyb.org/
  • JBehave – http://jbehave.org/
  • Cucumber – http://cukes.info/
  • Behat – http://behat.org/en/latest/

Si te gustó este artículo sobre desarrollo guiado por comportamiento, te puede gustar:

Los beneficios de la tecnología Scrum 

Beneficios de la tecnología Agil

Metodo Kanban Principios y Ventajas 

Beneficios de la integración contínua

¿Porque debería usar Docker en mi proyecto de desarrollo?

Beneficios de la pruebas unitarias

La importancia de las retrospectivas en la metodología Ágil 

Los beneficios de TDD

 

Suscríbete a nuestro newsletter para estar al día de los eventos, meet ups y demás artículos!