Upgrade to Pro — share decks privately, control downloads, hide ads and more …

淺談 Domain Driven Design

James Wang
June 14, 2020

淺談 Domain Driven Design

淺談 Domain Driven Design。從 DDD 戰略層面開始,然後簡介 Event Storming 工作坊流程與用途,包含看見領域全貌、設計商業流程與價值,最後抵達軟體建模整個過程。
影片連結:https://youtu.be/nWOtKptX1Z0

James Wang

June 14, 2020
Tweet

More Decks by James Wang

Other Decks in Design

Transcript

  1. I’m James • 公司內擔任 Programmer。 • 於 AgileCommunity.tw 與 Domain

    Driven Design Taiwan 擔任社群志工。 • 偶爾出沒感興趣主題的社群。 • 曾於 Agile Tour Taipei 和 Agile 新竹/高雄社群分享。 DDD Taiwan (FB) AgileCommunity.tw (FB)
  2. What's Domain Driven Design 簡介 我們看看提出 DDD 概念的 Eric Evans

    的解釋: Tackling Complexity in the Heart of Software. 【軟體核心複雜度的解決方案】
  3. Domain Driven Design 價值 DDD 其重要價值就是有系統地解構複雜的問題: The critical complexity of

    many software projects is in understanding the domain itself. 【軟體開發過程,最為關鍵複雜根本的原因是目標領域本身就錯綜複 雜】
  4. Domain Driven Design 如何與領域專家協作 團隊 / 利害關係人透過工作坊形式與領域專家訪談: 1. EventStorming(事件風暴) 2.

    Domain Storytelling(領域敘事) 我知道的 他知道的 他知道的 他知道的 透過工作坊,認識領域知識。
  5. PIG PICTURE EVENTSTORMING 目的 a large scale workshop where software

    and business practitioners are building together a behavioral model of a whole business line. 【聚集具有不同背景關係人(Business and technical stakeholders),並且每個人提供瞭解的部分領域知識,共同 建構整個業務架構。】
  6. PROCESS MODELING EVENTSTORMING 情境思考 小明於電商平台選了幾本書準備下單(總計金額 789 元)時, 發現限時特惠,買書滿 1000 元回饋

    200 元禮券,每組帳號回 饋上限 400 元。 結果最後又加了幾本書,最後下單總金額 2012 元整,得到 了兩張 200 元的折扣券。
  7. Bounded Context(BC) DDD 核心最重要概念之一。 DDD deals with large models by

    dividing them into different Bounded Contexts and being explicit about their interrelationships.
  8. 團隊與領域專家合作優點 • 一同瞭解複雜的領域全貌。 • 將複雜領域拆分成較小且易於解決的 Bounded Context。 • 建立團隊 Ubiquitous

    Language。 A language structured around the domain model and used by all team members to connect all the activities of the team with the software. 【一種圍繞領域模型構造的語言,所有團隊成員都使用該語言, 將團隊所有活動與系統聯繫起來。】 ... within a bounded context. 【...在限界上下文的範圍內。 】
  9. DDD 戰略流程 Complexity Domain UL Bounded Context UL Bounded Context

    UL Bounded Context U U D D Stakeholders Domain Experts Event Storming Domain Storytelling
  10. © 2020, Domain Driven Design Taiwan Community Aggregate Canvas Overview

    Concern TODO Concern Scenario Name • Item1 • Item2 • Item3 Domain Service Command Command Command Command Domain Service Application Service Application Service Use Case Use Case Use Case Use Case Use Case Use Case <Invariant conditions> Scenario Scenario Scenario DDDDD: Aggregate Canvas: A fluent way to walk through Strategical modeling to tactical design
  11. 今天簡單說了 Domain Driven Design 戰略部分 戰略 Strategic 戰術 Tactical •

    Bounded Context • Context Map • 系統開發相關 備註:戰略到戰術是持續迭代持續改進的流程。 建模 (聚合畫布)
  12. Ubiquitous Language UL UL UL U D D Bounded Context

    Bounded Context Bounded Context Stackholders Domain Experts Feedback Refactoring Coding Red Green Refactoring Modeling U Potentially Shippable Product Increment Merge the people, split the software.
  13. DDD 社群近期活動 • 如果想要深入瞭解 DDD 在小型 專案或導入相關議題嗎? • 如果想要知道 DDD

    與微服務之 間的關連嗎? • 如果想要探索 DDD 戰術開發常 被人遺忘卻很有用的技巧嗎? DDD TW 於 6/27(六) 下午線上三場 講座,一次滿足大家三個願望。 https://tinyurl.com/y7cj725c