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

領域驅動設計戰略篇

 領域驅動設計戰略篇

Domain Driven Design(DDD) 分成戰略(Strategic)與戰術(Tactical)兩大塊。本次簡報專注於 DDD 戰略面議題,從企業面臨的問題,組織團隊面臨的問題,簡介透過事件風暴(EventStorming)工作坊解決實務常見問題。之後總結 DDD 戰略中最重要的兩個概念,分別是統一語言(Ubiquitous Language)與限界上下文(Bounded Context)。

此投影片適合剛入門想瞭解 DDD 的新手,認識 DDD 戰略,再學習 DDD 戰術才不容易走火入魔。

與另外一篇淺談領域驅動設計(連結 https://speakerdeck.com/jame2408/qian-tan-domain-driven-design )切入視角不同,本篇較多著墨企業與組織問題。

James Wang

May 29, 2021
Tweet

More Decks by James Wang

Other Decks in Business

Transcript

  1. 關於我 ▪ I’m a programmer. ▪ Agile Community 與 Domain-Driven

    Taiwan 志工。 ▪ 學習領域驅動設計兩年多。
  2. Enterprise face a challenging environment High customer expectations, fickleness Low

    barriers to entry Constant, rapid change and uncertainty … More
  3. Domain-Driven Design 簡介 ▪ 我們看看提出 DDD 概念的 Eric Evans 的解釋:

    Tackling Complexity in the Heart of Software. 【軟體核心複雜度的解決方案】
  4. Domain-Driven Design 價值 ▪ DDD 其重要價值是有系統地解構複雜的問題。 ▪ 什麼是複雜的問題? The critical

    complexity of many software projects is in understanding the domain itself. 【軟體開發過程中,最為關鍵複雜根本的原因是目標領域本身就錯綜複雜】
  5. Domain-Driven Design 解決方案 ▪ 團隊 / 利害關係人透過工作坊形式與領域專家訪談 – EventStorming –

    Domain Storytelling 我知道的 他知道的 他知道的 他知道的 透過工作坊,學習領域知識。 目標領域
  6. Recap SOFTWARE DESIGN 透過 Consistent Business Rule 形成 Aggregate。 將

    Aggregate 透過業務性質相近的再收攏 成 Bounded Context。 Bounded Context 是從業務流程梳理而形 成的,也很自然的成為我們系統邊界。
  7. 完成事件風暴工作坊 ▪ 輸入 Business Flow,輸出 Bounded Context 與 Context Mapping。

    ▪ 透過交流,讓參與者對於 Business Flow 有一致性的理解與認知。 ▪ 下一步: – 找出最小可行性產品(Minimum Viable Product, MVP)。 – 依據 MVP 的 Bounded Context 進行建模與架構設計。 – 開發。 – 交付至市場,收取回饋再調整。
  8. Bounded Context(BC) ▪ DDD 核心最重要概念之一。 DDD deals with large models

    by dividing them into different Bounded Contexts and being explicit about their interrelationships.
  9. 團隊與領域專家合作優點 • 一同瞭解複雜的領域全貌。 • 將複雜領域拆分成較小且易於解決的 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. 【...在限界上下文的範圍內。 】
  10. DDD 戰略流程 Complexity Domain UL Bounded Context UL Bounded Context

    UL Bounded Context U U D D Stakeholders Domain Experts Event Storming Domain Storytelling
  11. Domain-Driven Design 知名案例 星巴克 獎勵平台:有 能力處理十 億個事件的 事件來源引 擎。 英國衛報

    花費兩年時間, 將十多年老系 統全部翻新。 SalesForce 以 DDD 來面對 超過兩萬五千 個開發者協同 的複雜問題。
  12. Domain-Driven Design 台灣趨勢 ▪ KKDay 於 2019 年引入事件風暴工作坊。 – 目的是加強業務團隊與技術人員協作時的共同理解。

    ▪ 國泰金控與中國信託銀行於 2020 年投入更多實踐。 – 目標都是在既有系統能因應快速創新的需求下,能將既有資產、系統更好地 梳理業務流程,重整出高內聚、低耦合的一套有彈性的軟體。
  13. 建模 (聚合畫布) 今天簡單說了 Domain Driven Design 戰略部分 戰略 Strategic 戰術

    Tactical • Bounded Context • Context Map • 系統開發相關 備註:戰略到戰術是持續迭代持續改進的流程。
  14. 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