¿BDD y DDD funcionan bien juntos?

7

El desarrollo dirigido por el comportamiento (BDD) se puede describir como en esta publicación del blog de la siguiente manera:

  

El desarrollo impulsado por el comportamiento (BDD) adopta la posición de que puede convertir una idea para un requisito en un código implementado, probado y listo para la producción de manera simple y efectiva, siempre que el requisito sea lo suficientemente específico para que todos sepan lo que está sucediendo. Para hacer esto, necesitamos una manera de describir el requisito de tal manera que todos, la gente de negocios, el analista, el desarrollador y el probador, tengan un entendimiento común del alcance del trabajo. A partir de esto, pueden estar de acuerdo con una definición común de "hecho", y escapamos a las trampas dobles de "eso no es lo que pedí" o "me olvidé de hablarles sobre esta otra cosa".

Parece una forma de administrar los requisitos del software y realmente tiene una idea clara de lo que se debe desarrollar y los criterios de si se ha desarrollado correctamente o no.

El Diseño Dirigido por Dominio, por otro lado, es un esfuerzo de modelado, que pone el foco en las reglas de negocios y la construcción de un lenguaje ubicuo. Domain-Driven Design proporciona ideas muy bonitas sobre cómo para estructurar el código, cómo para dividir un dominio complejo en partes más pequeñas (con contextos limitados) y cómo para comprender los diferentes "tipos" de objetos que pueden ser necesarios para la codificación, definiendo con precisión entidades, agregados, etc.

Resulta que DDD no dice mucho (que yo sepa), si es que dice algo, sobre cómo lidiar con los requisitos del software.

Cómo establecer un puente entre la organización de requisitos y la noción de qué se debe desarrollar, para desarrollarla realmente, hasta el punto en que la DDD se vuelva útil, parece que la DDD no lo dice.

Dado que DDD se enfoca en construir un lenguaje ubicuo que emplea los términos comerciales y habla de "realmente entender qué es el dominio y qué necesita", me pareció que al principio BDD y DDD pueden ir bien juntos.

Pero esto es una cuestión de experiencia. El único que lo ha intentado puede conocer los resultados.

Mi pregunta aquí es: ¿alguien ha intentado usar BDD y DDD juntos? ¿Es correcto usarlos juntos? Si no, ¿por qué no van en contra de la intuición?

    
pregunta user1620696 12.05.2017 - 03:07

1 respuesta

8

Como ya señaló @ robert-harvey, el lenguaje ubicuo es idealmente la fuerza de enlace común.

DDD se enfoca en definir el vocabulario en ese idioma: actores, entidades, operaciones, ... Una parte importante de DDD es que el lenguaje ubicuo también se puede ver claramente en el código, no solo en la comunicación entre el implementador. y el experto en dominios. Por lo tanto, una visión extrema de DDD es bastante estática: describe el sistema terminado como un todo.

BDD se enfoca en definir historias de usuarios o escenarios. Está estrechamente relacionado con un proceso incremental, pero también puede verse como estático: describe todas las interacciones entre los usuarios y el sistema terminado.

DDD y BDD pueden aplicarse sin superposición: las historias de usuario de BDD se pueden escribir usando solo el vocabulario de la IU (botones, etiquetas, ...), y DDD puede evitar mencionar las interacciones.

Pero lo ideal es que estos dos se superpongan y trabajen juntos: las historias de BDD son ricas en el lenguaje ubicuo, que describe la experiencia del usuario con los conceptos de dominio. Y DDD se asegura de que las historias se pueden encontrar en el código.

    
respondido por el Ville Oikarinen 12.05.2017 - 07:25

Lea otras preguntas en las etiquetas