کشف و شناسایی همواره جزو کارهای جذاب برای افراد ماجراجو است. اما آیا تا به حال برایتان پیش آمده که ذهنتان درگیر کشف و شناسایی مسایل در حوزهی نرمافزاری باشد که در توسعه آن نقش دارید؟
مسعود بهرامی، در این سخنرانی نشان خواهد که داد چگونه تکنیک EventStorming با تسهیل تعامل سازنده بین همه افراد درگیر در فرآیند توسعه ی محصول، میتواند به شما فرصت شناخت و کشف گروهی فرآیندهای کسب و کار در زمانی کوتاه را بدهد.
در این سخنرانی ارایه خواهد شد:
1. دستورالعمل برگزاری یک کارگاه موثر EventStorming
2. سرنخهایی برای شناسایی Bounded Context ها
3. سرنخهایی برای شناسایی Aggregate ها
It is difficult to guarantee the consistency of changes to objects in a model with complex associations. Objects are supposed to maintain their own internal consistent state, but they can be blindsided by changes in other objects that are conceptually constituent parts. Cautious database locking schemes cause multiple users to interfere pointlessly with each other and can make a system unusable. Similar issues arise when distributing objects among multiple servers, or designing asynchronous transactions. Therefore: Cluster the entities and value objects into aggregates and define boundaries around each. Choose one entity to be the root of each aggregate, and allow external objects to hold references to the root only (references to internal members passed out for use within a single operation only). Define properties and invariants for the aggregate as a whole and give enforcement responsibility to the root or some designated framework mechanism.
First we need an abstraction for encapsulating references within the model. An AGGREGATE is a cluster of associated objects that we treat as a unit for the purpose of data changes. Each AGGREGATE has a root and a boundary. The boundary defines what is inside the AGGREGATE. The root is a single, specific ENTITY contained in the AGGREGATE. The root is the only member of the AGGREGATE that outside objects are allowed to hold references to, although objects within the boundary may hold references to each other. ENTITIES other than the root have local identity, but that identity needs to be distinguishable only within the AGGREGATE, because no outside object can ever see it out of the context of the root ENTITY.