Acceleration and Management Tools - jahurtadod/domain-driven-design GitHub Wiki
El desafío es que tenemos que aprender rápidamente. En una industria de ritmo rápido, normalmente estamos trabajando contra el tiempo, porque el tiempo importa, y el tiempo generalmente impulsa muchas de las nuestras decisiones, posiblemente incluso más de lo que debería. Si no cumplimos a tiempo y dentro del presupuesto, no importa lo que hayamos logrado con el software, parece que han fracasado.
Event Storming
El Event Storming es una técnica de diseño rápido que pretende involucrar tanto a los expertos en dominios como a los desarrolladores en un proceso de aprendizaje rápido. Se centra en el negocio y el proceso de negocio en lugar de los sustantivos y los datos.
Ventajas
- Es un enfoque muy táctil.
- Enfoca a todos en los eventos y el proceso empresarial en lugar de en las clases y la base de datos.
- Es un enfoque muy visual, que descarta el código de la experimentación.
- Es muy rápido y muy económico de realizar. Literalmente puedes asaltar un nuevo Dominio principal en formato aproximado en cuestión de horas en lugar de semanas.
Gestión de DDD en un proyecto ágil
Este es un enfoque que rechaza los enfoques de estimación típicos, como los puntos de historia o las horas de trabajo.
Se enfoca en entregar valor sobre el control de costos y no estimar ninguna tarea que probablemente requiera solo unos pocos meses para completarse.
FODA
- Fortalezas: características del negocio o proyecto que le otorgan una ventaja sobre otros
- Debilidades: características que colocan al negocio o proyecto en desventaja con respecto a otros
- Oportunidades: elementos que el proyecto podría explotar en su beneficio
- Amenazas: elementos en el entorno que podrían causar problemas para el negocio o el proyecto
En cualquier momento, en cualquier Scrum u otro proyecto ágil, debe sentirse libre e inclinado a utilizar el análisis FODA para determinar la situación actual de su proyecto.
Modelado de picos y modelado de deuda
No puede esperar modelar su dominio a la perfección desde el principio, incluso si piensa que el inicio de su proyecto tiene un pico de modelado valioso. Ni siquiera serás perfecto mientras usas Event Storming. Por un lado, los negocios y nuestra comprensión de ellos cambian con el tiempo, al igual que su modelo de dominio.
Si tiene la intención de cronometrar sus esfuerzos de modelado como tareas en un tablero de tareas, espere incurrir en alguna deuda de modelado durante cada sprint (o iteración, o WIP). Simplemente no tendrá tiempo para llevar a cabo todas las tareas de modelado deseadas a la perfección cuando tenga un límite de tiempo.
Identificación de tareas y estimación del esfuerzo
El Event Storming es una herramienta que puede ser utilizada en cualquier momento, no sólo durante el inicio del proyecto. Mientras trabajas en una sesión de Event Storming, naturalmente crearás una serie de artefactos. Cada uno de los Eventos de Dominio, Comandos y Agregados que se presentan en su modelo de papel puede ser usado como unidades de estimación.
Una de las formas más fáciles y precisas de estimar es mediante un enfoque basado en métricas.
¿Cómo implementar?
Incluso con artefactos identificados por Event Storming, no necesariamente tendrá todo el conocimiento que necesita para trabajar en un escenario de dominio, historia y caso de uso específicos. Si se necesita más, asegúrese de incluir tiempo para adquirir más conocimientos en sus estimaciones.
- Realice una sesión rápida de Event Stormings, quizás solo por una hora más o menos. Es casi seguro que descubrirá que necesita desarrollar escenarios más concretos en torno a algunos de sus descubrimientos rápidos de modelado.
- Asóciese con un Experto en dominio para discutir uno o más escenarios concretos que necesitan ser refinados. Esto identifica cómo se utilizará el modelo de software.
Estos no son solo procedimientos, sino que deben establecerse con el objetivo de identificar los elementos reales del modelo de dominio.
-
Crear un conjunto de pruebas de aceptación.
-
Cree los componentes para permitir la ejecución de las pruebas / especificaciones. Itere (breve y rápidamente) a medida que perfecciona las pruebas / especificaciones y los componentes.
-
Es muy probable que parte de la iteración (breve y rápida) haga que considere otros escenarios, cree pruebas / especificaciones adicionales y perfeccione los componentes existentes y cree nuevos.
Continúe con esto hasta que haya adquirido todos los conocimientos necesarios para cumplir con un objetivo comercial limitado, o hasta que expire su plazo. Si no ha llegado al punto deseado, asegúrese de incurrir en deuda de modelado para que esto se pueda abordar en el futuro (idealmente cercano).