効率的なユニット設計。研究による理解

この記事は、効果的な骨材設計パートIII:発見による洞察の獲得の概要です





第2部では、集計が相互に参照する方法と、結果整合性を使用して特定のビジネス目標を達成する方法について説明しました。第3部では、集計のルールの順守がスクラムモデルの設計にどのように影響するかを確認します(第1部のテストプロジェクト)。





モデルデザインの再考

大きなProductアグリゲートを取り除いたリファクタリングの反復の後、BacklogItemは別のアグリゲートになりました。モデルの新しいバージョンを図1に示します。BacklogItem集計には、タスクインスタンスのコレクションが含まれています。各BacklogItemには、グローバルに一意の識別子であるBacklogItemIdがあります。他のアグリゲートとの関連付けは、識別子を介して行われます。BacklogItem集計はかなり小さいようです。





図1。 BacklogItem集計モデル図
図1。BacklogItem集計モデル図

最初の反復後の肯定的な結果にもかかわらず、いくつかの懸念がまだ存在します。たとえば、story属性を使用すると、大量のテキストを含めることができます。これにより、潜在的な間接費が発生する可能性があります。





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





イチジク。 2.個別の集計としてのBacklogItemとTask
. 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 . , , .





, :





  • .





  • .





  • .





  • , .





, , , , - .





すべての部分へのリンク




All Articles