什麼是領域驅動設計(DDD)?- mathias

banq發表於2021-09-23

領域驅動設計是一門軟體設計學科,其核心原則是:
  • 複雜領域的軟體要求所有設計人員(工程師、測試人員、分析師……)在領域專家的指導下對該領域有深入的、共同的理解
  • 這種理解植根於語言:領域語言應該被形式化為一種無處不在的語言(共享、一致、明確)
  • 理解表達在專家和設計師之間共享的模型中,該模型表達問題空間(相對於解決方案空間)
  • 模型無法迴避用明確方式表示根本複雜域。
  • 一個複雜的領域不能有效地表達為單一的通用模型和語言,因此必須由系統設計者分離成有界上下文(即內部一致的語言和模型)
  • 模型和語言應該與我們對領域的理解和變化保持同步,透過不斷重構以獲得更深入的洞察力

DDD 是一門設計學科,您可以在其中
  • 把握領域
  • 同意一種語言
  • 在共享模型中表達
  • 擁抱複雜性
  • 在上下文中分離模型
  • ......並不斷進化它們

   
以上是著名DDD專家mathiasverraes的定義,背景資料:
領域驅動設計提供了一個關於軟體設計的包羅永珍的觀點。它從微觀層面的程式碼和設計模式,到模型及其語言,到模型之間的通訊和關係,再到對系統系統的大規模推理來考慮設計。最重要的是,它旨在務實。您不會在所有地方都應用 DDD,而是在它會產生最大影響的地方進行。
DDD 不是規定性的。它沒有關於如何去做的規則,並且對新的解釋持開放態度。它沒有規定的方法,或做法,甚至圖案書中1是為了說明,而非最後一組。許多人們現在認為是 DDD 的核心方法,例如 EventStorming,在本書撰寫時並不存在。
這使得眾所周知的 DDD 難以定義。這個定義專門將 DDD 作為一門學科,即設計為你所做的,具有一套指導原則的活動。我已經在我的研討會中使用和改進這個定義大約 6 到 7 年了,所以我希望它足夠堅固,對 DDD 的新手和經驗豐富的從業者都有用。我希望它保持最新的新見解。
 

相關文章