聊一聊對領域驅動設計中“領域”這個詞語的理解與分析方法

往事隨灬鋒發表於2023-04-14

1. 什麼是領域

百度百科對領域的解釋:領域具體指一種特定的範圍或區域

領域一般指的是業務的問題域,領域是有邊界的,邊界內,規定了我們要做什麼,要做的範圍,軟體專案從開始到交付的過程中, 所有涵蓋的業務,每個業務模組或者方向都有自己的業務範圍和問題

  • 比如做裝潢行業的公司進行軟體系統研發,那麼公司的業務的範圍都是跟裝潢相關的,大的領域就是裝潢領域

2. 什麼是子域

想一想面對複雜問題時,如何去解決的,會想到一個常用的方法,把一個複雜的問題,按照一定的關係,逐步分解,逐步的解決問題

做軟體工程也是這樣,面對一個複雜的領域,也需要對領域進行劃分,劃分出來的領域就叫做子域

核心思想就是將問題域逐步分解,降低業務理解和系統實現的複雜度

  1. 把複雜的領域,根據業務模組,業務方向等劃分,劃分為一個個小的,且能解決的子域,每個子域都有自己的業務範圍和邊界,以及需要解決的問題
  2. 子域也可以繼續劃分和細化

在領域逐步劃分成子域的過程中,子域可以根據自身重要性,功能屬性,商業價值等,劃分為三類子域,它們分別是:核心域、通用域和支撐域

核心域、通用域和支撐域 其實就是子域上的一個標籤屬性識別核心域比較重要,通用域和支撐域 看起來就是依賴關係

為什麼要劃分核心域,通用域,支撐域

  1. 核心域、支撐域和通用域的主要目標是:透過領域劃分,區分出子域的功能屬性和重要性,從而公司可對不同子域採取不同的資源投入和建設策略,其關注度也會不一樣
  2. 劃分核心域:重要性很高,是系統成功失敗的關鍵指標,投入優質的資源,重點建設,一些系統的核心域可能包含很高的商業價值
  3. 劃分通用域:是為了更好的複用
  4. 劃分支撐域:支援其他子域的建設

3. 進行領域分析可能有用的方法(更偏向於B端)

領域和領域的劃分,都是屬於問題空間,更偏向於業務側,必須要掌握一定的業務知識,或者能全面的瞭解到業務

業務側存在很大的資訊差距,儘量取得領導的支援,多參與業務的討論和分析,多與產品溝通

  1. 很空的一個詞語 “商業模式”,就是要搞清楚,企業是怎麼賺錢的,途徑有哪些,使用者群體,給使用者提供的服務以及產品,成本結構是怎樣的,重要的合作伙伴,做這個專案準備投入多少資源等 可以使用商業模式畫布來整理

    • 這裡存在很大的資訊差距,除非是高階的管理人員,或者外部諮詢師,不然很難瞭解全貌(需要一定的軟實力)
    • 一般開發人員接觸的資訊比較少,儘量和產品或者leader溝通,獲取更多的資訊,這一步還是比較重要,至少知道公司大概是做啥的,主要業務是那些
  2. 瞭解專案的背景,願景和目標,為什麼要做,價值是什麼

    • 這裡存在很大的資訊差距,除非是高階的管理人員,或者外部諮詢師,不然很難瞭解全貌(需要一定的軟實力)

    • 瞭解專案的願景和目標,以及價值 ,提供方向,可以粗略的定位專案的範圍,以及那些是要做的,提供決策的依據

    • 建設專案,需要大量的成本,那麼公司為什麼要做,肯定有必要的原由,能給公司帶來一定的價值,具體的價值是什麼

  3. 進行幹係人的整理和分析,制定相應的訪談計劃,瞭解業務,以及獲取幹係人的期望和目標

    • 輸出幹係人分析地圖,視覺化的展示幹係人的資訊,關係,聯絡方式等
    • 針對幹係人制定訪談計劃,瞭解業務流程,以及現在的痛點和期望
    • 輸出業務流程圖 ,也可以根據對幹係人的瞭解,輸出角色卡片
  4. 根據業務流程圖,組織結構,專案資源,以及專案的願景和目標,評估要做的範圍和內容,大概會涉及到的模組和功能,以及評估時間

    • 帶有泳道的業務流程圖,可以表達出大概的業務流轉情況,一起分析和篩選要做的內容,調整流程圖
    • 根據業務流程和對業務的瞭解,對要做的內容,進行評估,需要那些功能,那些能力的支援,評估每個功能的時間
    • 結合專案的資源,組織結構,評估出大概的時間,以及迭代計劃,領導比較關心這個

透過這幾個步驟,瞭解業務的全景,這樣就可以根據 組織結構,資源,業務模組,業務方向等劃分領域,根據商業模式和專案的願景與目標,以及價值,定位 核心的業務模組與方向,核心的業務模組與方向 就是核心域

相關文章