Artikel ini adalah sinopsis Desain Agregat Efektif Bagian III: Mendapatkan Wawasan Melalui Penemuan .
Bagian 2 membahas bagaimana agregat merujuk satu sama lain dan bagaimana menggunakan konsistensi akhir untuk mencapai tujuan bisnis tertentu. Di bagian ketiga, kita akan melihat bagaimana kepatuhan terhadap aturan agregat memengaruhi desain model Scrum (uji proyek dari bagian pertama).
Memikirkan Ulang Desain Model
Setelah pengulangan refactoring yang menyingkirkan agregat Produk besar, BacklogItem menjadi agregat terpisah. Versi baru model dapat dilihat pada Gambar 1. Agregat BacklogItem berisi kumpulan instance Task. Setiap BacklogItem memiliki pengenal unik global - BacklogItemId. Asosiasi dengan agregat lain terjadi melalui pengidentifikasi. Agregat BacklogItem tampaknya cukup kecil.
Terlepas dari hasil positif setelah iterasi pertama, beberapa kekhawatiran masih ada. Misalnya, atribut story memungkinkan Anda berisi teks dalam jumlah besar. Potensi biaya overhead mungkin timbul karena hal ini.
, , . . 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 . . , , .
, , 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 . , , .
, :
.
.
.
, .
, , , , - .