chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

工程師鄧生 ? 來源:技術(shù)瑣話 ? 作者:胡正軍 ? 2022-09-20 10:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

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

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

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

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

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

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

兩圖兩表法

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

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

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

詳細(xì)步驟如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

領(lǐng)域模型圖

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

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

具體可以參考如下步驟:

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

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

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

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

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

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

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

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

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

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

總結(jié)

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



審核編輯:劉清

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

    關(guān)注

    0

    文章

    122

    瀏覽量

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

    關(guān)注

    8

    文章

    9987

    瀏覽量

    65638

原文標(biāo)題:小團隊也能做DDD

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    硬件SPI兩個CS操作兩個norflash,怎么互斥操作兩個norflash?

    硬件SPI兩個CS操作兩個norflash,怎么互斥操作兩個norflash,有
    發(fā)表于 09-26 06:18

    電阻測量技術(shù)的雙生花:與四線的科學(xué)探秘

    公元前3世紀(jì),阿基米德在浴缸中發(fā)現(xiàn)浮力定律時,或許未曾想過,千年后的科學(xué)家會為測量根發(fā)絲粗細(xì)的導(dǎo)線電阻而絞盡腦汁。在現(xiàn)代工業(yè)的精密儀器里,電阻測量的誤差可能引發(fā)衛(wèi)星失聯(lián)、芯片報廢甚至醫(yī)療設(shè)備誤診
    的頭像 發(fā)表于 09-15 09:56 ?943次閱讀
    電阻測量技術(shù)的雙生花:<b class='flag-5'>兩</b>線<b class='flag-5'>法</b>與四線<b class='flag-5'>法</b>的科學(xué)探秘

    基本半導(dǎo)體連獲兩個行業(yè)獎項

    近日,基本半導(dǎo)體憑借在碳化硅模塊領(lǐng)域的突出表現(xiàn),連獲“國產(chǎn)SiC模塊TOP企業(yè)獎”和“年度優(yōu)秀功率器件產(chǎn)品獎”兩個行業(yè)獎項。
    的頭像 發(fā)表于 09-05 16:31 ?703次閱讀

    WP4000變頻功率分析儀的2V3A線路還是三?

    的2V3A接線原理 上圖中,連接在A相和C相的兩個變頻功率傳感器相當(dāng)于兩個單相有功功率,構(gòu)成
    的頭像 發(fā)表于 07-11 10:58 ?430次閱讀
    WP4000變頻功率分析儀的2V3A線路<b class='flag-5'>圖</b>是<b class='flag-5'>兩</b><b class='flag-5'>表</b><b class='flag-5'>法</b>還是三<b class='flag-5'>表</b><b class='flag-5'>法</b>?

    半導(dǎo)體推出款高壓GaN半橋柵極驅(qū)動器

    半導(dǎo)體推出款高壓GaN半橋柵極驅(qū)動器,為開發(fā)者帶來更高的設(shè)計靈活性和更多的功能,提高目標(biāo)應(yīng)用的能效和魯棒性。
    的頭像 發(fā)表于 06-04 14:44 ?821次閱讀

    FA模型訪問Stage模型DataShareExtensionAbility說明

    DataShareExtensionAbility提供數(shù)據(jù)庫的讀寫服務(wù)。 服務(wù)端由FA模型升級到Stage模型后,會導(dǎo)致FA模型的客戶端在API 9(含)之后的版本上無法訪問服務(wù)端。 為了解決上述問題,系統(tǒng)在框架側(cè)提供了
    發(fā)表于 06-04 07:53

    PLC梯形程序的設(shè)計方法與技巧

    、梯形的經(jīng)驗設(shè)計在PLC發(fā)展的初期,沿用了設(shè)計繼電器電路方法來設(shè)計梯形,即在
    發(fā)表于 05-22 15:18

    光纖線怎么合光纖

    根光纖線合并為根光纖線,通常稱為光纖熔接或光纖耦合,主要目的是將根光纖的光信號無縫連接,以實現(xiàn)信號的連續(xù)傳輸。以下是常見的方法及步驟:
    的頭像 發(fā)表于 05-20 11:15 ?1625次閱讀

    四線測電阻

    1.萬用如何測量電阻(線測電阻) 圖:萬用測電阻電路 萬用
    的頭像 發(fā)表于 03-18 16:34 ?1378次閱讀
    四線測電阻<b class='flag-5'>法</b>

    模型領(lǐng)域常用名詞解釋(近100

    本文總結(jié)了大模型領(lǐng)域常用的近100名詞解釋,并按照模型架構(gòu)與基礎(chǔ)概念,訓(xùn)練方法與技術(shù),模型優(yōu)化與壓縮,推理與應(yīng)用,計算與性能優(yōu)化,數(shù)據(jù)與標(biāo)
    的頭像 發(fā)表于 02-19 11:49 ?1120次閱讀
    大<b class='flag-5'>模型領(lǐng)域</b>常用名詞解釋(近100<b class='flag-5'>個</b>)

    了解DeepSeek-V3 和 DeepSeek-R1個大模型的不同定位和應(yīng)用選擇

    DeepSeek-V3 和 DeepSeek-R1 是深度求索公司(DeepSeek)推出的兩個不同定位的大模型,其核心差異主要體現(xiàn)在目標(biāo)場景、能力側(cè)重和技術(shù)優(yōu)化方向上。以下是二者的實質(zhì)性
    發(fā)表于 02-14 02:08

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗】+大模型微調(diào)技術(shù)解讀

    集對模型進行進步訓(xùn)練的過程。 大模型微調(diào)是利用預(yù)訓(xùn)練模型的權(quán)重和特征,通過在新任務(wù)數(shù)據(jù)集上的訓(xùn)練,對模型進行適應(yīng)性和優(yōu)化調(diào)整。使
    發(fā)表于 01-14 16:51

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

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

    云端語言模型開發(fā)方法

    云端語言模型的開發(fā)是復(fù)雜而系統(tǒng)的過程,涉及數(shù)據(jù)準(zhǔn)備、模型選擇、訓(xùn)練優(yōu)化、部署應(yīng)用等多個環(huán)節(jié)。下面,AI部落小編為您分享云端語言模型的開發(fā)
    的頭像 發(fā)表于 12-02 10:48 ?837次閱讀

    如何在 PyTorch 中訓(xùn)練模型

    PyTorch 是流行的開源機器學(xué)習(xí)庫,廣泛用于計算機視覺和自然語言處理等領(lǐng)域。它提供了強大的計算功能和動態(tài)特性,使得
    的頭像 發(fā)表于 11-05 17:36 ?1125次閱讀