Projeto de unidade eficiente. Compreensão por meio da pesquisa

Este artigo é uma sinopse da Parte III do Projeto Agregado Eficaz: Obtendo Insight por meio da Descoberta .





A Parte 2 discutiu como os agregados se referem uns aos outros e como usar a consistência eventual para atingir objetivos de negócios específicos. Na terceira parte, veremos como a aderência às regras de agregados afeta o design do modelo Scrum (projeto de teste da primeira parte).





Repensando o Design do Modelo

Depois de uma iteração de refatoração que eliminou o grande agregado Product, BacklogItem se tornou um agregado separado. A nova versão do modelo pode ser vista na Figura 1. O agregado BacklogItem contém uma coleção de instâncias de Task. Cada BacklogItem possui um identificador globalmente exclusivo - BacklogItemId. A associação com outros agregados ocorre por meio de identificadores. O agregado BacklogItem parece ser bem pequeno.





Figura 1.  Diagrama de modelo agregado de BacklogItem
Figura 1. Diagrama de modelo agregado de BacklogItem

Apesar do resultado positivo após a primeira iteração, algumas preocupações ainda existem. Por exemplo, o atributo de história permite que você contenha uma grande quantidade de texto. Podem surgir custos indiretos potenciais devido a isso.





, , . . 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 . . , , .





FIG.  2. BacklogItem e Tarefa 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 . , , .





, :





  • .





  • .





  • .





  • , .





, , , , - .





Links para todas as partes




All Articles