Diseño de unidad eficiente. Comprensión a través de la investigación

Este artículo es una sinopsis de Effective Aggregate Design Part III: Gaining Insight through Discovery .





La parte 2 discutió cómo los agregados se refieren entre sí y cómo usar la consistencia final para lograr objetivos comerciales específicos. En la tercera parte, veremos cómo el cumplimiento de las reglas de agregados afecta el diseño del modelo Scrum (proyecto de prueba de la primera parte).





Repensar el diseño de modelos

Después de una iteración de refactorización que eliminó el gran agregado Product, BacklogItem se convirtió en un agregado separado. La nueva versión del modelo se puede ver en la Figura 1. El agregado BacklogItem contiene una colección de instancias de Task. Cada BacklogItem tiene un identificador único global: BacklogItemId. La asociación con otros agregados se produce a través de identificadores. El agregado de BacklogItem parece ser bastante pequeño.





Figura 1.  Diagrama de modelo agregado de elementos
Figura 1. Diagrama de modelo agregado de elementos

A pesar del resultado positivo después de la primera iteración, todavía existen algunas preocupaciones. Por ejemplo, el atributo de historia le permite contener una gran cantidad de texto. De esto pueden surgir posibles costos generales.





, , . . BacklogItem Task? ? ?





. :





  • , .





  • 0 , . , done.





  • , done, .





. , . , 1 . , . , , , .





, , . , .





1, Task EstimationLogEntry. , . , Task BacklogItem, EstimationLogEntry Task? . , . .





, . , . 10 15, , 12 .





, . 4 16. , 12 , Scrum . , 12 (1 ). , 12 , , 12 , .





: ? , , 12 ( , ; ). 12 , 12 , 144 (12*12) . , .





, . Scrum , . (24) (6) 144. (24 12) , . 12 12 .





. 144 ? -? , ? , , ? .





. BacklogItem. , BacklogItem . , , .





, , , , , .





, . . . . BacklogItem. , .





, , . BacklogItem Task . . , .





0 , , . , done, , , done, .





? . , , . , . . 12- . , 144 12 , done.





. , (6 ), . , . , .





. , . , . . , , , . , , . , .





? 12 + 12 , 12 . , 12 . , 12 12 , 25 . . , . .





? , .





. , story points, . , . , , . , story points .





Task . . , , .





Higo.  2. BacklogItem y Task como agregados separados
. 2. BacklogItem Task

, , Tak BacklogItem. , , .





Task estimateHoursRemaining(), . :





public class TaskHoursRemainingEstimated implements DomainEvent { 
    private Date occurredOn;
    private TenantId tenantId;
    private BacklogItemId backlogItemId; 
    private TaskId taskId;
    private int hoursRemaining;
    ...
}

      
      



. :





  • BacklogItemRepository BacklogItem .





  • TaskRepository Task,    BacklogItem





  • BacklogItem estimateTaskHoursRemaining(), hoursRemaining Task. BacklogItem .





, . . , Task, , , .





public class TaskRepositoryImpl implements TaskRepository {
    ...
    public int totalBacklogItemTaskHoursRemaining( 
      	TenantId aTenantId,
        BacklogItemId aBacklogItemId) {

            Query query = session.createQuery(
            "select sum(task.hoursRemaining) from Task task "
            + "where task.tenantId = ? and "
            + "task.backlogItemId = ?");
            ...
    }
}

      
      



. , ? - ? « UI». . .





Ajax, . , , Ajax . 143 144 , . Ajax Push.





, – . , , , .





, Task BacklogItem. , . . 50 , 25, .





Task BacklogItem . , , .





, :





  • .





  • .





  • .





  • , .





, , , , - .





Enlaces a todas las partes




All Articles