色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

產出領域模型的一個方法:兩圖兩表法

工程師鄧生 ? 來源:技術瑣話 ? 作者:胡正軍 ? 2022-09-20 10:46 ? 次閱讀

前言

接一年多前的上篇(小團隊也能做DDD),上篇主要講了為什么,這篇核心講下怎么做。從上篇的分析可以看出領域模型是一個核心產出物,有了領域模型,限界上下文和代碼模型就可以產出,最終落地到微服務和具體的代碼。本文先介紹業務系統的核心元素,再講產出領域模型的一個方法:兩圖兩表法,最后做個總結。

業務系統的核心元素

在講怎么產出領域模型之前,回顧下一個業務系統最重要的東西是什么,先看1個公式:

計算機程序=算法+數據結構

這個公式是大學課本里見到過,是圖靈獎得主:尼古拉斯·沃斯提出的,那我們平常做得多的軟件是業務系統,看起來也沒什么算法,數據結構用List,Map之外也沒用過多么高大上的東西,明顯不太符合大師的這個公式。我們換個思路,先做類比,把程序當作一個人的話,數據結構是心肝脾肺腎各種器官,相對靜態不動;算法是血液,動態輸送到器官,影響器官。從這個角度看業務系統的血液是業務流程,器官是領域模型,業務流程代表業務流轉過程,這個過程中操作領域模型,所以我們得出如下一個公式:

業務系統=業務流程+領域模型

這個公式是上一個公式的變種,能較好的描述業務系統,可以說是業務系統的結構化表達,為了梳理出業務系統的這兩個核心元素,我們講下一個領域建模的兩圖兩表法,這個方法相對比較簡單,也好操作,方便落地。

兩圖兩表法

這個方法是自己的一個總結,學習了不少專家的文章和書籍,先看定義:

目的 誰產出
業務術語表 統一語言,去歧義 需求分析人員
業務流程圖 梳理流程,觀大局 需求分析人員
角色目標實體表 用例整理,列實體 需求分析人員或者架構師
領域模型圖 實體建模,畫結構 業務系統架構師

為了避免扯皮,上面表格里面給了4個產出物由什么角色產出合適。由于業務術語,業務流程偏向需求分析,所以由需求分析人員產出相對合理,角色目標實體表需要兩個角色一起產出,領域模型圖雖然說也是可以由需求分析人員產出,但這里畢竟跟代碼模型牽扯比較緊密,我建議是業務系統架構師產出,再跟需求分析人員和領域專家達成一致,也可以根據團隊成員的情況來,有些需求分析人員對軟件抽象掌握比較好,產出領域模型也是可以的。

詳細步驟如下:

9eeeec12-388d-11ed-ba43-dac502259ad0.png

接下來針對每個產出物做解釋。

業務術語表

目的是統一語言,減少溝通障礙,簡單說就是名詞解釋,如果一個術語比較復雜,要用why,what,how來解釋清楚,這三個東西不是每個術語都得寫,要看某一項是否明確,比如what非常清楚,就可以省略。特別強調的是我們經常忘記寫為什么,導致業務術語看不懂

業務術語表的一個簡單模板如下:

術語 / 縮略詞 英文 說明
XXX XXX XXX (為什么,是什么,怎么做),
購物車 Shopping Cart 用戶瀏覽很多商品時,方便用戶暫存感興趣的商品,通過加入購物車完成商品的暫存

業務流程圖

業務流程能描述業務整體流轉過程,串起業務活動,是數字化起點。流程圖分為兩類:業務流程(以人為基礎),系統流程(以物為基礎)。這兩個流程圖的出發點不一樣,是先有業務流程再有系統流程,兩者不可混淆在一起。流程圖常用的展現形式是泳道圖,對于業務流程,因為是以人為基礎,那么每條泳道代表一個業務角色。

流程圖有一個難點在于粒度,對于DDD而言,已經到了一個具體問題域的業務分析,這個需要落地到需求開發,流程圖粒度直接到具體的業務角色需要干什么事情,才能有效的指導開發。多提一句,企業架構里面對流程有個PCF流程分級方法,我們這里提到的具體流程算是L3級流程。拿中國地圖舉例說明下流程分級,L1級流程是一個國家省的劃分,L2級流程是對某個省做城市的劃分,L3級流程是對城市做鄉鎮的劃分。可以看到高階抽象的流程是為了看范圍更大,更復雜的企業級的業務過程,這屬于企業架構內容,感興趣的同學可以學習這塊,企業架構+DDD非常配。

下圖是一個員工請假的業務流程圖:

9f1dcb72-388d-11ed-ba43-dac502259ad0.png

角色目標實體表

角色目標實體表是為了梳理業務實體,我們的業務流程跟業務實體到底怎么關聯起來,業務實體不是憑空產生的,就是通過這個角色目標實體表,這個方法從Thoughtworks徐昊的文章里面提到過,我覺得比事件風暴要容易學習和落地,畢竟學得會的方法才是好方法。具體方法是把業務角色全部列出來,然后順著業務流程,梳理出用例,過程中出現的名詞,就是涉及的實體。看例子:

角色 目標 干啥(XX地方做XX動作) 實體
員工 請假獲得批準 HR系統或者郵件發起申請 請假單
上級 審批員工的請假 根據員工的假期進行請假審批 請假單,員工,員工假期
HR 維護好員工的假期 郵件類申請在HR系統做好員工的假期備案,留下變更記錄 員工,員工假期,假期變更記錄

上表是個非常簡單的場景,企業的業務遠比這個要復雜,僅僅用來說明角色目標實體表的形態,可以看到這個表相當于把用例和實體結合起來。

領域模型圖

領域模型圖是本文的最終目標,是軟件的骨架。角色目標實體表產出的實體,用UML圖表達出來,就形成了領域模型圖。實體和實體的關系大體有3種:繼承,聚合,關聯。下圖是一個例子:

9f3acbdc-388d-11ed-ba43-dac502259ad0.png

具體可以參考如下步驟:

把角色目標實體表的所有實體畫出來

根據繼承,聚合,關聯3種關系對實體進行連線,聚合可以用一個虛線框框出來

多個聚合組合成限界上下文

團隊共識消化,對于缺少的實體進行補充等

這個步驟的難點在于第4步,怎么合理的劃分出限界上下文。要做到劃分后的限界上下文之間的接口最少,這個最優解肯定存在,但比較依賴經驗,有經驗的架構師深刻理解高內聚低耦合,一把到位。怎么劃分這里也給出一些建議:

根據子域來識別限界上下文,那么子域如何得到呢?我們通過分解問題域的方式,將整個問題域分解成若干個更小、更簡單、更容易解決的問題子域。

一個限界上下文邊界內,實體的含義是不存在二義性的。如果存在兩個人對一個實體理解不同,那這個實體說明有二義性,很可能是這個實體要分離成兩個實體,放到不同的限界上下文。舉個例子,商品管理,銷售訂單,發貨三個業務都有商品的概念,表面看好像是同一個實體,深入分析實際是不同的實體,銷售訂單里面商品其實是訂單項,發貨業務的商品關注的是大小,重量等,實際上是貨品,所以這里是三個不同的限界上下文,每個限界上下文里面都有一個“商品”實體,命名上要區分開。

9f77c8ca-388d-11ed-ba43-dac502259ad0.png

限界上下文分不清就先別分了,減少扯皮,團隊內共識后,迭代演進。

領域模型圖產出后,需要拉上領域專家一起共識,當然很多團隊要做到這個不現實,那就盡最大范圍去共識,形成統一語言。接下來領域模型就可以給代碼開發提供輸入了,我們可以把梳理的領域模型都放到一個單體系統來實現,每個限界上下文是一個package,這個是最簡單的,如果實在要做微服務拆分,限界上下文這個業務邊界也是優先考慮的,除此以外還要綜合考慮彈性邊界,組織架構等問題了,這個屬于微服務拆分的話題了。

總結

業務流程和領域模型構成業務系統的核心要素,業務流程升級到業務價值流,領域模型升級到企業級業務對象,這就變成了企業架構的方法(價值流+業務能力+業務對象),所以DDD和企業架構方法是相通的,一個是微觀,一個是宏觀,兩者結合可以更好的認識數字化建設。最后預告下篇內容,上代碼模型。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • UML
    UML
    +關注

    關注

    0

    文章

    122

    瀏覽量

    30858
  • 數字化
    +關注

    關注

    8

    文章

    8714

    瀏覽量

    61731

原文標題:小團隊也能做DDD

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「大模型啟示錄」閱讀體驗】如何在客服領域應用大模型

    在客服領域是大模型落地場景中最多的,也是最容易實現的。本身客服領域的特點就是問答形式,大模型接入難度低。今天跟隨《大模型啟示錄 》這本書,學
    發表于 12-17 16:53

    直流感應和交流電壓的原理、特點及應用

    直流感應和交流電壓種常用的測量方法,它們在電氣工程、電子技術、自動化控制等領域有著廣泛的應用。
    的頭像 發表于 08-29 10:53 ?1256次閱讀

    邏輯函數的化簡方法有哪

    摩根定律、分配律、結合律、吸收律、互補律等)對邏輯函數進行變換,從而得到最簡形式。這種方法通常需要對邏輯表達式進行多次變換,直到無法再進步簡化為止。 卡諾化簡 :卡諾
    的頭像 發表于 08-22 16:40 ?750次閱讀

    瞬時極性電容端極性判斷

    瞬時極性電容端極性判斷是電子電路中的重要問題,涉及到電容的工作原理、特性以及在電路中的應用。 、電容的基本概念 電容的定義 電容是
    的頭像 發表于 08-21 16:01 ?1127次閱讀

    節點電壓和回路電流的選取原則

    節點電壓和回路電流是電路分析中種常用的方法。它們各有優缺點,適用于不同的電路類型和分析需求,它們的選擇原則主要基于電路的特性和求解的便利性。以下是對這
    的頭像 發表于 08-09 17:22 ?1775次閱讀

    回路電流和支路電流的實質是什么

    回路電流和支路電流是電路分析的種基本方法,它們在電路設計和分析中具有重要的應用價值。 、引言 電路是電子技術的基礎,而電路分析則是電
    的頭像 發表于 08-09 17:13 ?813次閱讀

    開路電壓和短路電流的優缺點

    開路電壓和短路電流種常用的電路分析方法,它們在電路設計和分析中有著廣泛的應用。 、開路電壓
    的頭像 發表于 08-07 14:33 ?3658次閱讀

    電源紋波平行線與靠測的區別

    電源紋波是電源輸出電壓中的高頻波動,它會影響電子設備的正常工作。為了測量電源紋波,通常采用兩種方法:平行線和靠測。 平行線 平行線
    的頭像 發表于 08-02 09:43 ?660次閱讀

    人臉檢測模型的精確度怎么算

    檢測是計算機視覺領域重要研究方向,其目的是在圖像或視頻中快速準確地定位人臉的位置。人臉檢測模型通常包括兩個主要步驟:人臉候選區域的生成
    的頭像 發表于 07-04 09:14 ?498次閱讀

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    概率推斷,利用共現矩陣學習每個詞的主題分布,進而將其作為詞的表示向量。在大規模語料庫中進行模型訓練,使語義相似的詞具有相似的主題分布。然而,這類方法存在問題,即
    發表于 05-05 12:17

    電感兩兩耦合怎么去耦

    在電路設計中,電感的耦合和去耦技術是非常重要的環。通過合理的電感耦合可以實現信號的傳輸和功率的傳遞,而電感的去耦則可以消除干擾、提高系統的穩定性和可靠性。本文將詳細介紹三電感兩兩耦合的原理、
    的頭像 發表于 03-09 10:50 ?3957次閱讀

    瓦特和二瓦特的測量結果比較

    瓦特和二瓦特都是電能的測試方法,用于測量電能消耗。這
    的頭像 發表于 02-27 09:50 ?2830次閱讀

    arcgis中如何關聯兩個屬性

    在ArcGIS中,關聯兩個屬性重要的操作,可以通過此操作將兩個中的數據關聯起來,以便進
    的頭像 發表于 02-25 11:01 ?4195次閱讀

    兩個電位器地控制變頻器,如何接線?

    兩個電位器地控制變頻器,如何接線? 接線方式如下: 1. 首先,明確需要使用的電器設備。在這個場景中,我們需要兩個電位器(即可變電阻器
    的頭像 發表于 02-05 10:13 ?5232次閱讀

    兩個機器的時鐘怎么同步?

    兩個機器的時鐘怎么同步? 在現代社會中,時間同步對于各種科學研究、工業生產和通信技術都具有重要意義。在許多應用程序中,如分布式系統、計算機網絡和數據同步等領域,為了確保數據的致性和準確性,需要確保
    的頭像 發表于 01-16 14:26 ?1629次閱讀
    主站蜘蛛池模板: 玄幻全黄h全肉后宫| 亚洲大码熟女在线| 钉钉女老师| 视频一区视频二区ae86| 国产精品青青青高清在线密亚 | 97国产人妻精品无码AV在线 | 大学生第一次破女在线观看| 91久久偷偷看嫩草影院无费| 伊人情人网综合| 蜜桃传媒在线观看入口| 成人网18免费韩国| 一区二区三区福利视频| 日韩AV片无码一区二区三区不卡| 国产日韩久久久精品影院首页| 在线观看日韩一区| 素人约啪第五季| 麻豆狠色伊人亚洲综合网站| 德国黄色录像| 高H内射NP古文| 长泽梓黑人初解禁bdd07| 三级全黄a| 美女白虎穴| 蜜桃婷婷狠狠久久综合9色| 内射爽无广熟女亚洲| 国内精品久久人妻无码HD浪潮| 91精品视频网站| 69夫妇交友群| 亚洲精品乱码久久久久久直播 | 国产精品人妻系列21P| 国产精品久久毛片A片软件爽爽| 国产精品路线1路线2路线| 国产一级毛片在线| 俄罗斯人与动ZOOZ| 国产高清视频免费最新在线| jaPanesmature儿母| 伊人网综合| 0951影音在线| 亚洲一区在线视频观看| 无限资源网免费看| 欧洲电影巜肉欲丛林| 久久黄色录像|