在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

產(chǎn)出領(lǐng)域模型的一個(gè)方法:兩圖兩表法

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

前言

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

業(yè)務(wù)系統(tǒng)的核心元素

在講怎么產(chǎn)出領(lǐng)域模型之前,回顧下一個(gè)業(yè)務(wù)系統(tǒng)最重要的東西是什么,先看1個(gè)公式:

計(jì)算機(jī)程序=算法+數(shù)據(jù)結(jié)構(gòu)

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

業(yè)務(wù)系統(tǒng)=業(yè)務(wù)流程+領(lǐng)域模型

這個(gè)公式是上一個(gè)公式的變種,能較好的描述業(yè)務(wù)系統(tǒng),可以說是業(yè)務(wù)系統(tǒng)的結(jié)構(gòu)化表達(dá),為了梳理出業(yè)務(wù)系統(tǒng)的這兩個(gè)核心元素,我們講下一個(gè)領(lǐng)域建模的兩圖兩表法,這個(gè)方法相對(duì)比較簡(jiǎn)單,也好操作,方便落地。

兩圖兩表法

這個(gè)方法是自己的一個(gè)總結(jié),學(xué)習(xí)了不少專家的文章和書籍,先看定義:

目的 誰產(chǎn)出
業(yè)務(wù)術(shù)語表 統(tǒng)一語言,去歧義 需求分析人員
業(yè)務(wù)流程圖 梳理流程,觀大局 需求分析人員
角色目標(biāo)實(shí)體表 用例整理,列實(shí)體 需求分析人員或者架構(gòu)師
領(lǐng)域模型圖 實(shí)體建模,畫結(jié)構(gòu) 業(yè)務(wù)系統(tǒng)架構(gòu)師

為了避免扯皮,上面表格里面給了4個(gè)產(chǎn)出物由什么角色產(chǎn)出合適。由于業(yè)務(wù)術(shù)語,業(yè)務(wù)流程偏向需求分析,所以由需求分析人員產(chǎn)出相對(duì)合理,角色目標(biāo)實(shí)體表需要兩個(gè)角色一起產(chǎn)出,領(lǐng)域模型圖雖然說也是可以由需求分析人員產(chǎn)出,但這里畢竟跟代碼模型牽扯比較緊密,我建議是業(yè)務(wù)系統(tǒng)架構(gòu)師產(chǎn)出,再跟需求分析人員和領(lǐng)域?qū)<疫_(dá)成一致,也可以根據(jù)團(tuán)隊(duì)成員的情況來,有些需求分析人員對(duì)軟件抽象掌握比較好,產(chǎn)出領(lǐng)域模型也是可以的。

詳細(xì)步驟如下:

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

接下來針對(duì)每個(gè)產(chǎn)出物做解釋。

業(yè)務(wù)術(shù)語表

目的是統(tǒng)一語言,減少溝通障礙,簡(jiǎn)單說就是名詞解釋,如果一個(gè)術(shù)語比較復(fù)雜,要用why,what,how來解釋清楚,這三個(gè)東西不是每個(gè)術(shù)語都得寫,要看某一項(xiàng)是否明確,比如what非常清楚,就可以省略。特別強(qiáng)調(diào)的是我們經(jīng)常忘記寫為什么,導(dǎo)致業(yè)務(wù)術(shù)語看不懂

業(yè)務(wù)術(shù)語表的一個(gè)簡(jiǎn)單模板如下:

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

業(yè)務(wù)流程圖

業(yè)務(wù)流程能描述業(yè)務(wù)整體流轉(zhuǎn)過程,串起業(yè)務(wù)活動(dòng),是數(shù)字化起點(diǎn)。流程圖分為兩類:業(yè)務(wù)流程(以人為基礎(chǔ)),系統(tǒng)流程(以物為基礎(chǔ))。這兩個(gè)流程圖的出發(fā)點(diǎn)不一樣,是先有業(yè)務(wù)流程再有系統(tǒng)流程,兩者不可混淆在一起。流程圖常用的展現(xiàn)形式是泳道圖,對(duì)于業(yè)務(wù)流程,因?yàn)槭且匀藶榛A(chǔ),那么每條泳道代表一個(gè)業(yè)務(wù)角色。

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

下圖是一個(gè)員工請(qǐng)假的業(yè)務(wù)流程圖:

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

角色目標(biāo)實(shí)體表

角色目標(biāo)實(shí)體表是為了梳理業(yè)務(wù)實(shí)體,我們的業(yè)務(wù)流程跟業(yè)務(wù)實(shí)體到底怎么關(guān)聯(lián)起來,業(yè)務(wù)實(shí)體不是憑空產(chǎn)生的,就是通過這個(gè)角色目標(biāo)實(shí)體表,這個(gè)方法從Thoughtworks徐昊的文章里面提到過,我覺得比事件風(fēng)暴要容易學(xué)習(xí)和落地,畢竟學(xué)得會(huì)的方法才是好方法。具體方法是把業(yè)務(wù)角色全部列出來,然后順著業(yè)務(wù)流程,梳理出用例,過程中出現(xiàn)的名詞,就是涉及的實(shí)體。看例子:

角色 目標(biāo) 干啥(XX地方做XX動(dòng)作) 實(shí)體
員工 請(qǐng)假獲得批準(zhǔn) HR系統(tǒng)或者郵件發(fā)起申請(qǐng) 請(qǐng)假單
上級(jí) 審批員工的請(qǐng)假 根據(jù)員工的假期進(jìn)行請(qǐng)假審批 請(qǐng)假單,員工,員工假期
HR 維護(hù)好員工的假期 郵件類申請(qǐng)?jiān)贖R系統(tǒng)做好員工的假期備案,留下變更記錄 員工,員工假期,假期變更記錄

上表是個(gè)非常簡(jiǎn)單的場(chǎng)景,企業(yè)的業(yè)務(wù)遠(yuǎn)比這個(gè)要復(fù)雜,僅僅用來說明角色目標(biāo)實(shí)體表的形態(tài),可以看到這個(gè)表相當(dāng)于把用例和實(shí)體結(jié)合起來。

領(lǐng)域模型圖

領(lǐng)域模型圖是本文的最終目標(biāo),是軟件的骨架。角色目標(biāo)實(shí)體表產(chǎn)出的實(shí)體,用UML圖表達(dá)出來,就形成了領(lǐng)域模型圖。實(shí)體和實(shí)體的關(guān)系大體有3種:繼承,聚合,關(guān)聯(lián)。下圖是一個(gè)例子:

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

具體可以參考如下步驟:

把角色目標(biāo)實(shí)體表的所有實(shí)體畫出來

根據(jù)繼承,聚合,關(guān)聯(lián)3種關(guān)系對(duì)實(shí)體進(jìn)行連線,聚合可以用一個(gè)虛線框框出來

多個(gè)聚合組合成限界上下文

團(tuán)隊(duì)共識(shí)消化,對(duì)于缺少的實(shí)體進(jìn)行補(bǔ)充等

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

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

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

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

限界上下文分不清就先別分了,減少扯皮,團(tuán)隊(duì)內(nèi)共識(shí)后,迭代演進(jìn)。

領(lǐng)域模型圖產(chǎn)出后,需要拉上領(lǐng)域?qū)<乙黄鸸沧R(shí),當(dāng)然很多團(tuán)隊(duì)要做到這個(gè)不現(xiàn)實(shí),那就盡最大范圍去共識(shí),形成統(tǒng)一語言。接下來領(lǐng)域模型就可以給代碼開發(fā)提供輸入了,我們可以把梳理的領(lǐng)域模型都放到一個(gè)單體系統(tǒng)來實(shí)現(xiàn),每個(gè)限界上下文是一個(gè)package,這個(gè)是最簡(jiǎn)單的,如果實(shí)在要做微服務(wù)拆分,限界上下文這個(gè)業(yè)務(wù)邊界也是優(yōu)先考慮的,除此以外還要綜合考慮彈性邊界,組織架構(gòu)等問題了,這個(gè)屬于微服務(wù)拆分的話題了。

總結(jié)

業(yè)務(wù)流程和領(lǐng)域模型構(gòu)成業(yè)務(wù)系統(tǒng)的核心要素,業(yè)務(wù)流程升級(jí)到業(yè)務(wù)價(jià)值流,領(lǐng)域模型升級(jí)到企業(yè)級(jí)業(yè)務(wù)對(duì)象,這就變成了企業(yè)架構(gòu)的方法(價(jià)值流+業(yè)務(wù)能力+業(yè)務(wù)對(duì)象),所以DDD和企業(yè)架構(gòu)方法是相通的,一個(gè)是微觀,一個(gè)是宏觀,兩者結(jié)合可以更好的認(rèn)識(shí)數(shù)字化建設(shè)。最后預(yù)告下篇內(nèi)容,上代碼模型。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    30870
  • 數(shù)字化
    +關(guān)注

    關(guān)注

    8

    文章

    8763

    瀏覽量

    61838

原文標(biāo)題:小團(tuán)隊(duì)也能做DDD

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【「大模型啟示錄」閱讀體驗(yàn)】如何在客服領(lǐng)域應(yīng)用大模型

    在客服領(lǐng)域是大模型落地場(chǎng)景中最多的,也是最容易實(shí)現(xiàn)的。本身客服領(lǐng)域的特點(diǎn)就是問答形式,大模型接入難度低。今天跟隨《大模型啟示錄 》這本書,學(xué)
    發(fā)表于 12-17 16:53

    直流感應(yīng)和交流電壓的原理、特點(diǎn)及應(yīng)用

    直流感應(yīng)和交流電壓種常用的測(cè)量方法,它們?cè)陔姎夤こ獭㈦娮蛹夹g(shù)、自動(dòng)化控制等領(lǐng)域有著廣泛的應(yīng)用。
    的頭像 發(fā)表于 08-29 10:53 ?1359次閱讀

    邏輯函數(shù)的化簡(jiǎn)方法有哪

    摩根定律、分配律、結(jié)合律、吸收律、互補(bǔ)律等)對(duì)邏輯函數(shù)進(jìn)行變換,從而得到最簡(jiǎn)形式。這種方法通常需要對(duì)邏輯表達(dá)式進(jìn)行多次變換,直到無法再進(jìn)步簡(jiǎn)化為止。 卡諾化簡(jiǎn) :卡諾
    的頭像 發(fā)表于 08-22 16:40 ?869次閱讀

    瞬時(shí)極性電容端極性判斷

    瞬時(shí)極性電容端極性判斷是電子電路中的個(gè)重要問題,涉及到電容的工作原理、特性以及在電路中的應(yīng)用。 、電容的基本概念 電容的定義 電容是
    的頭像 發(fā)表于 08-21 16:01 ?1302次閱讀

    節(jié)點(diǎn)電壓和回路電流的選取原則

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

    回路電流和支路電流的實(shí)質(zhì)是什么

    回路電流和支路電流是電路分析的種基本方法,它們?cè)陔娐吩O(shè)計(jì)和分析中具有重要的應(yīng)用價(jià)值。 、引言 電路是電子技術(shù)的基礎(chǔ),而電路分析則是電
    的頭像 發(fā)表于 08-09 17:13 ?883次閱讀

    開路電壓和短路電流的優(yōu)缺點(diǎn)

    開路電壓和短路電流種常用的電路分析方法,它們?cè)陔娐吩O(shè)計(jì)和分析中有著廣泛的應(yīng)用。 、開路電壓
    的頭像 發(fā)表于 08-07 14:33 ?3898次閱讀

    電源紋波平行線與靠測(cè)的區(qū)別

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

    人臉檢測(cè)模型的精確度怎么算

    檢測(cè)是計(jì)算機(jī)視覺領(lǐng)域個(gè)重要研究方向,其目的是在圖像或視頻中快速準(zhǔn)確地定位人臉的位置。人臉檢測(cè)模型通常包括兩個(gè)主要步驟:人臉候選區(qū)域的生成
    的頭像 發(fā)表于 07-04 09:14 ?535次閱讀

    【大語言模型:原理與工程實(shí)踐】大語言模型的基礎(chǔ)技術(shù)

    概率推斷,利用共現(xiàn)矩陣學(xué)習(xí)每個(gè)詞的主題分布,進(jìn)而將其作為詞的表示向量。在大規(guī)模語料庫中進(jìn)行模型訓(xùn)練,使語義相似的詞具有相似的主題分布。然而,這類方法存在個(gè)問題,即
    發(fā)表于 05-05 12:17

    個(gè)電感兩兩耦合怎么去耦

    在電路設(shè)計(jì)中,電感的耦合和去耦技術(shù)是非常重要的環(huán)。通過合理的電感耦合可以實(shí)現(xiàn)信號(hào)的傳輸和功率的傳遞,而電感的去耦則可以消除干擾、提高系統(tǒng)的穩(wěn)定性和可靠性。本文將詳細(xì)介紹三個(gè)電感兩兩耦合的原理、
    的頭像 發(fā)表于 03-09 10:50 ?4094次閱讀

    瓦特和二瓦特的測(cè)量結(jié)果比較

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

    arcgis中如何關(guān)聯(lián)兩個(gè)屬性

    在ArcGIS中,關(guān)聯(lián)兩個(gè)屬性個(gè)重要的操作,可以通過此操作將兩個(gè)中的數(shù)據(jù)關(guān)聯(lián)起來,以便進(jìn)
    的頭像 發(fā)表于 02-25 11:01 ?4282次閱讀

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

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

    兩個(gè)機(jī)器的時(shí)鐘怎么同步?

    兩個(gè)機(jī)器的時(shí)鐘怎么同步? 在現(xiàn)代社會(huì)中,時(shí)間同步對(duì)于各種科學(xué)研究、工業(yè)生產(chǎn)和通信技術(shù)都具有重要意義。在許多應(yīng)用程序中,如分布式系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)和數(shù)據(jù)同步等領(lǐng)域,為了確保數(shù)據(jù)的致性和準(zhǔn)確性,需要確保
    的頭像 發(fā)表于 01-16 14:26 ?1693次閱讀
    主站蜘蛛池模板: 九色在线播放| 在线观看免费视频资源| 色播六月| 四虎永久在线精品| 天堂在线www网亚洲| 国产三级在线观看免费| 六九视频在线观看| 花怜write. as| a毛片成人免费全部播放| 亚洲禁片| 久久久福利| 亚洲欧美啪啪| 午夜视频黄| 一级片aaa| 男生女生靠逼视频| 日本a级精品一区二区三区| 国产小视频免费| 成人亚洲网站www在线观看| 免费大片黄国产在线观看| 亚洲一区二区免费在线观看| 久久久久国产成人精品亚洲午夜| 亚洲一区二区电影| 日本色色图| 国产综合久久久久影院| 伊人操| 狠狠五月天小说| 尻逼尻逼| 国产农村乱色xxxx| 99视频热| 欧美一级欧美三级在线| 国产资源站| 天堂最新资源在线| 免费免播放器在线视频观看| 91福利社在线观看| 日韩免费毛片全部不收费| 国产一区二区影院| 天天操天天曰| 男人操女人免费网站| 亚洲伊人久久大香线蕉影院| 欧美日韩在线成人看片a| 182福利视频|