国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

領(lǐng)域建模的體系化思維與6種方法論

這篇具有很好參考價(jià)值的文章主要介紹了領(lǐng)域建模的體系化思維與6種方法論。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

領(lǐng)域建模的體系化思維與6種方法論

本文希望能夠通過(guò)總結(jié)過(guò)去自己對(duì)領(lǐng)域建模的一點(diǎn)粗淺經(jīng)驗(yàn)給需要的同學(xué)能有些許啟發(fā),少走彎路。

背景

軟件工程師做的核心事情就是對(duì)現(xiàn)實(shí)世界的問(wèn)題進(jìn)行抽象然后用計(jì)算機(jī)的語(yǔ)言對(duì)其進(jìn)行重新刻畫(huà),在通過(guò)信息化來(lái)提高生產(chǎn)力。而這其中一個(gè)關(guān)鍵環(huán)節(jié)就是如何對(duì)問(wèn)題域進(jìn)行建模,在過(guò)去的工作中經(jīng)常遇到一個(gè)問(wèn)題是前期因?yàn)闃I(yè)務(wù)比較簡(jiǎn)單所以設(shè)計(jì)的模型在支撐時(shí)沒(méi)有發(fā)現(xiàn)什么問(wèn)題而隨著業(yè)務(wù)復(fù)雜度的增加就會(huì)發(fā)現(xiàn)需要對(duì)模型進(jìn)行升級(jí),如果是對(duì)模型關(guān)系維度的新增那還好,而如果是對(duì)原有模型關(guān)系的重構(gòu),那將會(huì)變的非常困難。本文希望能夠通過(guò)總結(jié)過(guò)去自己對(duì)領(lǐng)域建模的一點(diǎn)粗淺經(jīng)驗(yàn)給需要的同學(xué)能有些許啟發(fā),少走彎路。

總體思想

關(guān)于如何建模并不是一個(gè)單一維度的問(wèn)題而是一個(gè)體系化的工程,我們需要對(duì)其進(jìn)行拆解然后逐個(gè)攻破,如何建好模并能順利落地可以拆分為四個(gè)子問(wèn)題,1)對(duì)需求進(jìn)行功能建模 2)對(duì)業(yè)務(wù)進(jìn)行領(lǐng)域建模 3)將領(lǐng)域模型映射到代碼模型 4)根據(jù)代碼模型落地?cái)?shù)據(jù)模型。

領(lǐng)域建模的體系化思維與6種方法論

  • 需求模型:通過(guò)和產(chǎn)品及業(yè)務(wù)同學(xué)的溝通,結(jié)合行業(yè)經(jīng)驗(yàn)和知識(shí),明確用戶(hù)的真實(shí)需求;
  • 領(lǐng)域模型:基于需求模型,提煉出領(lǐng)域相關(guān)的概念,為后面的面向?qū)ο笤O(shè)計(jì)打下基礎(chǔ);
  • 代碼模型:以領(lǐng)域模型為基礎(chǔ),綜合面向?qū)ο蟮母鞣N設(shè)計(jì)技巧,完成類(lèi)的設(shè)計(jì);
  • 數(shù)據(jù)模型:以代碼模型類(lèi)及類(lèi)之間的關(guān)系,用ER圖刻畫(huà)數(shù)據(jù)的底層存儲(chǔ)關(guān)系;

還有一個(gè)重要的認(rèn)知,領(lǐng)域建模并不是萬(wàn)能的,比如你做的系統(tǒng)很簡(jiǎn)單,使用數(shù)據(jù)庫(kù)的CRUD可能一個(gè)更好的方式(如上圖中的虛線(xiàn)箭頭),如果做的是基礎(chǔ)架構(gòu),比如開(kāi)發(fā)一個(gè)RPC框架,也不需要用領(lǐng)域驅(qū)動(dòng)。運(yùn)用領(lǐng)域驅(qū)動(dòng)的前提一定是業(yè)務(wù)足夠復(fù)雜且多變,需要系統(tǒng)靈活支持。下面這個(gè)圖供參考:

領(lǐng)域建模的體系化思維與6種方法論

需求建模

萬(wàn)事開(kāi)頭難,需求是項(xiàng)目最開(kāi)始的輸入,肯定是非常重要的,但現(xiàn)實(shí)情況往往是當(dāng)我們接到需求后第一個(gè)想到的問(wèn)題確是我該如何實(shí)現(xiàn),而沒(méi)有在業(yè)務(wù)思考這一塊過(guò)多的停留。如果最開(kāi)始理解的輸入是錯(cuò)誤的,后面的過(guò)程再優(yōu)秀可想而知也只能是垃圾。為了解決這一問(wèn)題,很多優(yōu)秀的大佬發(fā)明了很多對(duì)需求進(jìn)行功能建模的工具,主要目的就是讓我們更好的理解需求并認(rèn)識(shí)其背后的本質(zhì)。如常用的工具有5w2h、業(yè)務(wù)活動(dòng)、用戶(hù)旅程、商業(yè)畫(huà)布等。這些在網(wǎng)上都有很多的資料,只舉幾個(gè)例子,不做重點(diǎn)介紹。

  • 業(yè)務(wù)活動(dòng)

領(lǐng)域建模的體系化思維與6種方法論

  • 用戶(hù)旅程

領(lǐng)域建模的體系化思維與6種方法論

  • 商業(yè)畫(huà)布

領(lǐng)域建模的體系化思維與6種方法論

領(lǐng)域建模

下面的每一種方法都是從某一個(gè)角度幫助我們更好理解客觀(guān)事物,所以沒(méi)有哪一種方法是萬(wàn)能的,在實(shí)際項(xiàng)目中常常要多種方法共用,才可能認(rèn)清事情的全貌。

?

四步建模

在我們?nèi)粘9ぷ鞯捻?xiàng)目中,大多數(shù)場(chǎng)景都可以通過(guò)在需求用例中通過(guò)找名稱(chēng)的方式來(lái)最終刻畫(huà)出領(lǐng)域模型,當(dāng)然找到的名詞后并不是所有的都符合要求,這時(shí)可以通過(guò)一條原則"一個(gè)名詞或?qū)嶓w必有其屬性和行為,一屬性或行為也必歸屬于一個(gè)實(shí)體"來(lái)進(jìn)行提煉,不符合這條原則的名詞就是需求剔除的。總體來(lái)說(shuō)建模一共分為四步

  • 選名詞:從用例中選出所有名詞,在去偽存真選出符合要求的;
  • 找動(dòng)詞:找出所有動(dòng)詞,在判斷這些動(dòng)詞屬不屬于上一步選出的名詞所具有的行為;
  • 加屬性:找出所有屬性,在判斷這些屬性屬不屬于上一步選出的名詞所具有的特征;
  • 連關(guān)系:確定實(shí)體和實(shí)體之間的協(xié)作關(guān)系;

領(lǐng)域建模的體系化思維與6種方法論

案例:用戶(hù)購(gòu)買(mǎi)商品

需求用例

用例名稱(chēng)

用戶(hù)購(gòu)買(mǎi)商品

用例描述

1、用戶(hù)在購(gòu)物app上選取多款商品進(jìn)行下單

2、通過(guò)用戶(hù)檔案獲取用戶(hù)名稱(chēng)、地址等信息

3、從不同商家購(gòu)買(mǎi)的商品生成不同的子訂單;記錄商品及其數(shù)量,并匯總付款金額

4、保存訂單

5、選擇一種支付方式(包括銀行卡、支付寶、微信)并進(jìn)行支付;超過(guò)30分鐘未支付自動(dòng)取消訂單

約束和限制

1、一個(gè)商品單次購(gòu)買(mǎi)不能超過(guò)30單

2、單次支付金額最大不能超過(guò)99999RMB


建模步驟

第一步:選名詞。從用例上選的名詞如下:用戶(hù)、購(gòu)物app、商品、用戶(hù)檔案、用戶(hù)名稱(chēng)、地址、商家、訂單、子訂單、支付方式、銀行卡、支付寶、微信。通過(guò)這種方式可以很輕松的識(shí)別領(lǐng)域中的相關(guān)概念,但選取的名詞并不一定都是領(lǐng)域相關(guān)的,所以接下來(lái)還需要進(jìn)一步的提煉。提煉過(guò)程

  • 刪除"購(gòu)物app":購(gòu)物app只是一個(gè)功能的載體,并不屬于購(gòu)買(mǎi)商品流量里的一個(gè)領(lǐng)域概念,所以刪掉
  • 刪除"用戶(hù)名稱(chēng)" :用戶(hù)名稱(chēng)只是用戶(hù)的一個(gè)屬性,并不是領(lǐng)域概念
  • 刪除"地址" :地址只是用戶(hù)檔案的一個(gè)屬性,并不是領(lǐng)域概念
  • 刪除"銀行卡、支付寶、微信、支付方式":銀行卡、支付寶、微信屬于支付方式的一種具體形式,而支付方式可以歸屬為訂單的一個(gè)屬性,并不是獨(dú)立的領(lǐng)域概念

所以最終提取的領(lǐng)域?qū)嶓w是:用戶(hù)、商品、用戶(hù)檔案、子訂單、訂單、商家

第二步:找動(dòng)詞。從用例上選的動(dòng)詞如下:選取、匯總、下單、保存、支付、取消

找動(dòng)詞的目的是反向檢查是否有遺漏的實(shí)體沒(méi)有提煉出來(lái),因?yàn)橛行╇[含的概念并不一定能在用例里找到,且一個(gè)動(dòng)作必歸屬于一個(gè)實(shí)體。如果有發(fā)現(xiàn)動(dòng)作沒(méi)有歸屬實(shí)體只有2種情況,一是這個(gè)動(dòng)作不屬于這個(gè)領(lǐng)域,二是有遺漏的實(shí)體沒(méi)有提取出來(lái)。經(jīng)過(guò)分析 "選取" 是用戶(hù)主觀(guān)的一種行為,并不屬于這個(gè)領(lǐng)域所以刪掉,"下單、匯總、保存、支付、取消" 都屬于訂單的動(dòng)作。

第三步:加屬性。理論上產(chǎn)品同學(xué)要在用例上把模型的所有屬性全部列出來(lái),但現(xiàn)實(shí)情況不一定能做到,這時(shí)除了用例還需要當(dāng)面和產(chǎn)品對(duì)焦清楚各個(gè)模型的屬性。

名詞

屬性

用戶(hù)

用戶(hù)名稱(chēng)、性別、證據(jù)類(lèi)型、手機(jī)號(hào)

商品

商品名稱(chēng)、單價(jià)、商家、商品類(lèi)別、商品編碼

用戶(hù)檔案

國(guó)家、省份、地市、區(qū)縣、地址詳情、聯(lián)系電話(huà)

子訂單

商品、數(shù)量、單價(jià)、金額

訂單

用戶(hù)、地址、金額、下單時(shí)間

商家

商家名稱(chēng)、經(jīng)營(yíng)地址、經(jīng)營(yíng)范圍、聯(lián)系人、聯(lián)系電話(huà)


第四步:連關(guān)系。關(guān)系主要表達(dá)模型和模型之間怎樣協(xié)作

領(lǐng)域建模的體系化思維與6種方法論

補(bǔ)充場(chǎng)景:比如 "一個(gè)客戶(hù)想入駐平臺(tái)成為一個(gè)服務(wù)商",按照上述方法提煉出動(dòng)詞"入駐",但會(huì)發(fā)現(xiàn)其并不適合成為"客戶(hù)"、"平臺(tái)"、"服務(wù)商"實(shí)體的行為,因此可以反向推出還應(yīng)存在另外一個(gè)實(shí)體"入駐申請(qǐng)單"的概念,"入駐" 這個(gè)動(dòng)詞更準(zhǔn)確的叫法是"申請(qǐng)入駐"。

?

歸類(lèi)分組

歸類(lèi)分組,就是把具有相似性或相關(guān)聯(lián)的信息,按照一定的標(biāo)準(zhǔn)進(jìn)行分類(lèi),歸為同一個(gè)邏輯范疇?!邦?lèi)”是一個(gè)極其重要的概念,可以看作本質(zhì)相同或相似的事物的集合。分類(lèi)就是按照一定的標(biāo)準(zhǔn),根據(jù)對(duì)象屬性、特征的共同點(diǎn)和不同點(diǎn),將對(duì)象劃分為不同的種類(lèi)。分類(lèi)時(shí),需要對(duì)這些類(lèi)別進(jìn)行鑒定、描述和命名。

分類(lèi)在生活中無(wú)處不在。通過(guò)分類(lèi),一方面可以把雜亂無(wú)序的事物區(qū)分開(kāi)來(lái);另一方面還要賦予不同類(lèi)別以穩(wěn)定的、概念化的名稱(chēng)。一個(gè)好的命名,能夠簡(jiǎn)潔有力地表述事物的本質(zhì)。分類(lèi)的過(guò)程,就是探尋事物和問(wèn)題本質(zhì)的過(guò)程。

如何用歸類(lèi)分組進(jìn)行領(lǐng)域建??梢苑譃?個(gè)步驟

第一步:定義要建模的領(lǐng)域問(wèn)題:也就是要清楚我們要解決的問(wèn)題是什么?

第二步:對(duì)領(lǐng)域問(wèn)題進(jìn)行拆解:對(duì)問(wèn)題進(jìn)行分析拆解,形成平鋪的多個(gè)子問(wèn)題,此步驟可以盡量發(fā)散

第三步:歸類(lèi)分組:對(duì)子問(wèn)題進(jìn)行歸類(lèi),剪枝,將趨同的子問(wèn)題,合并成一類(lèi)(可以理解問(wèn)產(chǎn)出實(shí)體)

?

領(lǐng)域建模的體系化思維與6種方法論

案例:生活服務(wù)類(lèi)商品

生活服務(wù)類(lèi)商品場(chǎng)景

  • 預(yù)定類(lèi)商品(KTV預(yù)定、休娛預(yù)定、麗人預(yù)定等):
  • 可以按照周期設(shè)置每周的價(jià)格;支持設(shè)定節(jié)假日的價(jià)格;
  • 業(yè)務(wù)特點(diǎn):商品價(jià)格同樣呈周期性變化,有特殊日期以及不可用日期;計(jì)價(jià)方式包括按人、按間

領(lǐng)域建模的體系化思維與6種方法論

  • 場(chǎng)館預(yù)定類(lèi)

領(lǐng)域建模的體系化思維與6種方法論

歸類(lèi)分組建模過(guò)程:

  • 第一步:定義要建模的領(lǐng)域問(wèn)題:從上面的售賣(mài)商品場(chǎng)景可以看出一個(gè)商品有多個(gè)價(jià)格;而決定這個(gè)價(jià)格的是由一系列的因子決定的,有可能是0個(gè)也可能是多個(gè);如何用一套完備的價(jià)格模型來(lái)支持這些場(chǎng)景是需要解決的問(wèn)題;
  • 第二步:對(duì)領(lǐng)域問(wèn)題進(jìn)行拆解:羅列出所有商品價(jià)格的場(chǎng)景;

領(lǐng)域建模的體系化思維與6種方法論

  • 第三步:歸類(lèi)分組:
  • 按人群、日期、階梯、座位等類(lèi)型,可以統(tǒng)一抽象為價(jià)格的不同"維度"
  • 原價(jià)、起拍價(jià)、保證金、評(píng)估價(jià)等可以看做室價(jià)格的不同類(lèi)型

所以一個(gè)價(jià)格由什么決定:sku的價(jià)格 = 價(jià)格類(lèi)型 + 價(jià)格維度 + 具體價(jià)格,具體抽象過(guò)程如下:

領(lǐng)域建模的體系化思維與6種方法論

  • 第四步;產(chǎn)出領(lǐng)域模型

領(lǐng)域建模的體系化思維與6種方法論

案例:本地通商家成長(zhǎng)

商家成長(zhǎng):為不同層級(jí)的商家門(mén)店下發(fā)不同類(lèi)型的任務(wù),完成對(duì)應(yīng)的任務(wù),商家會(huì)獲取到對(duì)應(yīng)的權(quán)益,進(jìn)而幫助商家在平臺(tái)的不同階段能夠更好的成長(zhǎng)。

領(lǐng)域建模的體系化思維與6種方法論

  • 第一步:定義要建模的領(lǐng)域問(wèn)題,針對(duì)門(mén)店維度為商家建立一套任務(wù)體系,不同的門(mén)店可以下發(fā)不同的系列任務(wù)

  • 第二步:略

  • 第三步:
  • 基礎(chǔ)裝修、商品優(yōu)化、服務(wù)評(píng)價(jià)等屬于一個(gè)維度,可以抽象為"任務(wù)流"
  • 門(mén)店圖、手藝人、是否有品牌故事等屬于一個(gè)維度,可以抽象為"任務(wù)"
  • 而由"門(mén)店圖、手藝人"等任務(wù)組成的基礎(chǔ)裝修,可以抽象為"任務(wù)組"
  • 門(mén)店圖片里又包含指標(biāo)和完成的跳轉(zhuǎn)動(dòng)作,可以分別抽象為"任務(wù)指標(biāo)","任務(wù)動(dòng)作"
  • 第四步;產(chǎn)出領(lǐng)域模型

領(lǐng)域建模的體系化思維與6種方法論

?

事件風(fēng)暴

為什么引入事件風(fēng)暴。事件風(fēng)暴之一的作用就是拉通業(yè)務(wù)方、產(chǎn)品、研發(fā)、測(cè)試對(duì)業(yè)務(wù)知識(shí)的統(tǒng)一理解,避免各方理解誤差。但在實(shí)際操作中受限于各方時(shí)間協(xié)調(diào)的難度及領(lǐng)域?qū)<业慕巧娜笔?,事件風(fēng)暴往往作為理解業(yè)務(wù),領(lǐng)域建模及領(lǐng)域劃分的利器去使用。

什么是事件風(fēng)暴。事件風(fēng)暴是一種以工作坊的方式對(duì)復(fù)雜業(yè)務(wù)領(lǐng)域進(jìn)行探索的高效協(xié)作方法,事件風(fēng)暴強(qiáng)調(diào)以事件驅(qū)動(dòng)團(tuán)隊(duì)探索分析業(yè)務(wù)領(lǐng)域。

  • 一種捕獲行為需求的方法

  • 強(qiáng)調(diào)以先發(fā)散后收斂的方式開(kāi)展

  • 相關(guān)干系人協(xié)作的方式進(jìn)行

  • 注重對(duì)領(lǐng)域事件的識(shí)別

事件風(fēng)暴相關(guān)元素

  • 事件:重要且已發(fā)生的事情。命名方式:完成時(shí)+被動(dòng)語(yǔ)態(tài)=賓語(yǔ)+動(dòng)詞過(guò)去式

  • 命令:產(chǎn)生事件觸發(fā)的動(dòng)作

  • 角色/執(zhí)行者:觸發(fā)命令的主體,包括:人員、系統(tǒng)、定時(shí)任務(wù)

  • 讀模型:執(zhí)行者決策執(zhí)行命令時(shí)參考的視圖元素

事件風(fēng)暴操作流程
  • 識(shí)別重要事件

  • 識(shí)別命令

  • 識(shí)別執(zhí)行者和讀模型

  • 識(shí)別領(lǐng)域?qū)ο?/p>

  • 產(chǎn)出領(lǐng)域模型

領(lǐng)域建模的體系化思維與6種方法論

案例:銷(xiāo)售基礎(chǔ)

產(chǎn)品截圖

領(lǐng)域建模的體系化思維與6種方法論

  • 識(shí)別重要事件

領(lǐng)域建模的體系化思維與6種方法論

  • 識(shí)別命令

領(lǐng)域建模的體系化思維與6種方法論

  • 識(shí)別執(zhí)行者和讀模型

領(lǐng)域建模的體系化思維與6種方法論

  • 識(shí)別領(lǐng)域?qū)ο?/section>

這里說(shuō)的領(lǐng)域?qū)ο?,是從命令、領(lǐng)域事件、執(zhí)行者、查詢(xún)數(shù)據(jù)里找到的名詞性概念。例如,對(duì)于簽訂合同這個(gè)命令而言,受到影響的名詞性概念是“合同”;類(lèi)似地,對(duì)于合同已簽訂這個(gè)領(lǐng)域事件,是由于“合同”這個(gè)名詞性概念的狀態(tài)變化所導(dǎo)致的。

領(lǐng)域建模的體系化思維與6種方法論

  • 產(chǎn)出領(lǐng)域模型

?

領(lǐng)域建模的體系化思維與6種方法論

?

四色建模

關(guān)于四色建模的概念我們可與追溯到90年代,是被廣泛使用的一種系統(tǒng)分析方法。四色建模的目的是要對(duì)目標(biāo)業(yè)務(wù)系統(tǒng)進(jìn)行分析并通過(guò)不同的顏色標(biāo)示出人,事,物,角色,通過(guò)四色建模得到四色原型圖,每個(gè)原型圖有屬性和連接(關(guān)聯(lián)與依賴(lài)等關(guān)系)兩個(gè)部分組成。

那四色原型具體是哪四色呢?一起來(lái)看看

  • 時(shí)標(biāo)原型(Moment-Interval Archetype,簡(jiǎn)稱(chēng)MI)
  • 表示事物在某個(gè)時(shí)刻或某一段時(shí)間內(nèi)發(fā)生的,如銷(xiāo)售訂單、收款記錄等,使用淺紅色表示。
  • PPT原型(Part-Place-Thing Archetype,人/事/物原型,簡(jiǎn)稱(chēng)PPT)
  • 表示參與扮演不同角色的人或事物,如商品、賬戶(hù)、店鋪等,使用淺綠色表示。
  • 角色原型(Role Archetype,簡(jiǎn)稱(chēng)ROLE)
  • 抽象了一種參與方式,由人或組織機(jī)構(gòu)、地點(diǎn)或物品來(lái)承擔(dān),如客戶(hù)、商家、財(cái)務(wù)組織等,使用淺黃色表示。
  • 描述原型(Description Archetype,簡(jiǎn)稱(chēng)DESC)
  • 對(duì)上述顏色表示的內(nèi)容進(jìn)行解釋?zhuān)糜诜诸?lèi)或者描述建模過(guò)程中產(chǎn)生的數(shù)據(jù),事件,或者活動(dòng),使用淺藍(lán)色表示。

用一句話(huà)來(lái)概括四色原型就是:一個(gè)什么樣的人或物品以某種角色在某個(gè)時(shí)刻或某段時(shí)間內(nèi)參與某個(gè)活動(dòng)。其中“什么樣的”就是DESC,“人或物品”就是PPT,”角色”就是ROLE,而“某個(gè)時(shí)刻或某個(gè)時(shí)間段內(nèi)的某個(gè)活動(dòng)”就是MI。

接下來(lái)使用四色建模法來(lái)分析領(lǐng)域模型,總共分為四大步:

  • 建立時(shí)標(biāo)原型:尋找需要追溯的事件,根據(jù)追溯事件尋找足跡

  • 建立PPT原型:豐富模型,尋找時(shí)標(biāo)原型周?chē)娜?事/物,使它可以更好地描述業(yè)務(wù)概念

  • 建立角色原型:進(jìn)一步從中抽象出可以參與到不同流程中去的角色

  • 建立描述原型:把一些信息用描述對(duì)象補(bǔ)足

案例:商家咨詢(xún)

產(chǎn)品截圖

領(lǐng)域建模的體系化思維與6種方法論

梳理咨詢(xún)業(yè)務(wù)時(shí)序,任何的業(yè)務(wù)事件都會(huì)以某種數(shù)據(jù)的形式留下足跡。我們對(duì)于事件的追溯可以通過(guò)對(duì)數(shù)據(jù)的追溯來(lái)完成,當(dāng)我們把這些數(shù)據(jù)的足跡按照時(shí)間順序排列起來(lái),就可以清晰的推測(cè)出過(guò)往的一段時(shí)間內(nèi)發(fā)生的事情。

領(lǐng)域建模的體系化思維與6種方法論

通過(guò)對(duì)業(yè)務(wù)的梳理可以產(chǎn)出了四色原型圖的關(guān)鍵業(yè)務(wù)時(shí)刻,如下面表格

關(guān)鍵業(yè)務(wù)活動(dòng)

關(guān)鍵業(yè)務(wù)時(shí)刻對(duì)象

備注

注冊(cè)到店app賬號(hào)

用戶(hù)賬號(hào)信息

?

建群

群關(guān)系記錄

用戶(hù)點(diǎn)擊咨詢(xún)會(huì)自動(dòng)創(chuàng)建群

聊天

群消息

通過(guò)群聊實(shí)現(xiàn)不同客服的接待

打電話(huà)

電話(huà)記錄

用戶(hù)也可以通過(guò)打電話(huà)直接咨詢(xún)商家

留資

客資信息

?

視頻面診

面診記錄

?


通過(guò)上面的表格大概知道用戶(hù)在IM應(yīng)用中的關(guān)鍵業(yè)務(wù)時(shí)刻和對(duì)象

領(lǐng)域建模的體系化思維與6種方法論

尋找關(guān)鍵業(yè)務(wù)時(shí)刻對(duì)象周?chē)娜恕⑹?、物?duì)象

領(lǐng)域建模的體系化思維與6種方法論

從人,事,物中抽象出角色

領(lǐng)域建模的體系化思維與6種方法論

把一些描述信息用對(duì)象補(bǔ)足

?

領(lǐng)域建模的體系化思維與6種方法論

?

產(chǎn)出領(lǐng)域模型

領(lǐng)域建模的體系化思維與6種方法論

?

限界筆紙法

限界筆紙法起源于thoughtworks,由thoughtworks大佬提出的基于四色建模的改進(jìn)方法。在“四色建模法”的“時(shí)標(biāo)對(duì)象”的基礎(chǔ)上確定"限界上下文”與“聚集”的概念,再使用“紙和筆來(lái)管理”的方法,力圖在建模過(guò)程中實(shí)現(xiàn)“分而治之”,增強(qiáng)數(shù)據(jù)的完整性,并避免過(guò)度設(shè)計(jì)。

建模步驟

  • 根據(jù)“業(yè)務(wù)發(fā)生時(shí)刻”的價(jià)值識(shí)別核心領(lǐng)域(core domain)

  • 確定核心領(lǐng)域之間的依賴(lài)關(guān)系

  • 用紙和筆畫(huà)表格并寫(xiě)實(shí)例(這里的實(shí)例可以是業(yè)務(wù)用例,用戶(hù)故事,或者業(yè)務(wù)發(fā)生時(shí)刻)

  • 確定“聚合根 (AGGREGATE ROOT)”

  • 以“人以群分”的原則抽取新的“聚合”

?

分析模式

學(xué)會(huì)了上面的建模方法就有能力應(yīng)對(duì)開(kāi)發(fā)中等難度的系統(tǒng)了。不過(guò),如果遇到更復(fù)雜的業(yè)務(wù)領(lǐng)域,還需要更深入的建模技能?!斗治瞿J健肥?Martin Fowler 寫(xiě)的一本領(lǐng)域建模的專(zhuān)著。講述各種分析模式和輔助模式,專(zhuān)注于面向?qū)ο蠓治雠c設(shè)計(jì)的結(jié)果——模型本身,給出了來(lái)自金融貿(mào)易、測(cè)量、財(cái)務(wù)以及組織關(guān)系等多個(gè)領(lǐng)域內(nèi)的一系列模式。書(shū)中每個(gè)模式都包含了設(shè)計(jì)背后的原理、使用的規(guī)則以及實(shí)現(xiàn)的技巧,給出的例子包含了有用模型的細(xì)節(jié),并介紹了用于提高分析、建模和實(shí)現(xiàn)的重用技巧。研究不深感興趣的可以看下。

?

代碼建模

經(jīng)過(guò)領(lǐng)域模型的分析后,面向?qū)ο笠呀?jīng)初具雛形,但領(lǐng)域類(lèi)并不能指導(dǎo)我們進(jìn)行編碼工作,因?yàn)轭I(lǐng)域類(lèi)只是從用例模型中提煉出來(lái)的反映業(yè)務(wù)領(lǐng)域的概念,并不是真正意義上的軟件類(lèi),我們要需要在進(jìn)一步,完成領(lǐng)域類(lèi)到軟件類(lèi)的轉(zhuǎn)換,這就是代碼建模階段的主要任務(wù)。那么具體如何做的

  • 第一步:完成領(lǐng)域類(lèi)到代碼類(lèi)的映射
  • 類(lèi):領(lǐng)域模型中的類(lèi)直接映射成代碼里的類(lèi)
  • 屬性:領(lǐng)域模型類(lèi)的屬性直接映射成代碼類(lèi)里的屬性
  • 動(dòng)作:領(lǐng)域模型類(lèi)的動(dòng)作直接映射成代碼類(lèi)里的方法
  • 狀態(tài)機(jī):領(lǐng)域模型里的狀態(tài)映射為類(lèi)的狀態(tài)機(jī)
  • 協(xié)作關(guān)系:用UML的類(lèi)關(guān)系圖重新刻畫(huà)協(xié)作關(guān)系

以上面的一個(gè)領(lǐng)域模型為例

領(lǐng)域建模的體系化思維與6種方法論

  • 第二步:應(yīng)用設(shè)計(jì)原則和設(shè)計(jì)模式。完成了第一步,類(lèi)就出來(lái)了,屬性和方法也有了,是不是就結(jié)束了呢,如果按照設(shè)計(jì)原則的衡量標(biāo)準(zhǔn),會(huì)發(fā)現(xiàn)第一步只是最基本的要求,而不是一個(gè)好的設(shè)計(jì)。還以"用戶(hù)購(gòu)買(mǎi)商品"案例為例,支付的方式分為支付寶、微信、銀行卡,運(yùn)用設(shè)計(jì)模式后,代碼模型變成如下:

領(lǐng)域建模的體系化思維與6種方法論

數(shù)據(jù)建模

數(shù)據(jù)模型推導(dǎo)的來(lái)源是領(lǐng)域模型。一般原則,領(lǐng)域模型中的實(shí)體映射為數(shù)據(jù)庫(kù)中的表;領(lǐng)域模型中的屬性,映射成表中的字段,同時(shí)還要根據(jù)需求補(bǔ)充更多的字段。模型中的一個(gè)一對(duì)多關(guān)聯(lián),可以映射成一個(gè)外鍵字段,以及一個(gè)外鍵約束。但一般不會(huì)真的建立外鍵約束,而外鍵的邏輯關(guān)系還是存在的。可以用虛線(xiàn)箭頭表示這種邏輯上的外鍵關(guān)系,稱(chēng)為虛擬外鍵。對(duì)于多對(duì)多關(guān)聯(lián),必須增加一個(gè)關(guān)聯(lián)表,其中包括了兩個(gè)實(shí)體表各自的主鍵。另外,關(guān)聯(lián)上的多重性決定了外鍵字段的非空約束。

怎么判斷模型好不好

  • 領(lǐng)域模型是生活中模型的映射。在幾十年前,我們沒(méi)有計(jì)算機(jī),但是我們?nèi)匀豢梢酝ㄟ^(guò)白紙黑字的方式完成我們的業(yè)務(wù)。換句話(huà)說(shuō),我們的業(yè)務(wù)系統(tǒng)只是把一個(gè)紙質(zhì)的單據(jù)變成了電腦里存在數(shù)據(jù)庫(kù)里的東西。也就是說(shuō),我們的模型,一定是在生活中有實(shí)際的對(duì)應(yīng)的單據(jù),而且名字也應(yīng)該是一致的。千萬(wàn)不要臆造概念。
  • 領(lǐng)域模型不是DB模型。領(lǐng)域模型不是DB模型,一個(gè)領(lǐng)域?qū)ο罂梢杂卸喾N方式映射到數(shù)據(jù)庫(kù),但是我們聊領(lǐng)域模型的時(shí)候,一定不是聊DB模型,重要的一定是描述清楚業(yè)務(wù)概念。在做ORM的時(shí)候,如果有繼承關(guān)系需要的實(shí)現(xiàn)的時(shí)候,我們?cè)倏紤]是單表繼承(Single Table Inheritance)還是實(shí)體表(Concrete Table Inheritance)等模式。
  • 領(lǐng)域模型的關(guān)系一定是穩(wěn)定的。當(dāng)接到一個(gè)新的需求時(shí),如果發(fā)現(xiàn)模型的關(guān)系不匹配了,那說(shuō)明之前的模型設(shè)計(jì)的肯定存在問(wèn)題,好的模型實(shí)體和實(shí)體之間的關(guān)系一定是穩(wěn)定的,只會(huì)新增不會(huì)對(duì)原有關(guān)系進(jìn)行改變。

領(lǐng)域模型為什么要一直持續(xù)迭代

要在"變化的現(xiàn)實(shí)世界中尋找不變性",希望尋找到一個(gè)穩(wěn)定的領(lǐng)域模型,讓系統(tǒng)流程可以靈活改變,模型不怎么變,但在實(shí)際中卻很難完美的做到,這是為什么呢?(備注:這里的迭代不是指對(duì)原有模型關(guān)系的重構(gòu),而是對(duì)模型新關(guān)系的升級(jí))

  • 意識(shí)問(wèn)題。在用戶(hù)、產(chǎn)品人員、運(yùn)營(yíng)人員眼中,溝通的語(yǔ)音是"流程"而不是"模型"。開(kāi)發(fā)人員在與他們的溝通過(guò)程中,慢慢就形成了以"流程"為主導(dǎo),而不是以"模型"為主導(dǎo)的思維方式。這使得整個(gè)開(kāi)發(fā)過(guò)程是"流程驅(qū)動(dòng)",而不是"領(lǐng)域驅(qū)動(dòng)"。大家在討論業(yè)務(wù)與系統(tǒng)解決方案的時(shí)候,大部分時(shí)間都花在了業(yè)務(wù)流程、業(yè)務(wù)規(guī)則上,而不是深刻挖掘流程背后的不變因素。
  • 現(xiàn)實(shí)世界的復(fù)雜性。業(yè)務(wù)也就是我們的現(xiàn)實(shí)世界,灰度的、模棱兩可的東西,比計(jì)算機(jī)的世界多得多,變化也多得多。很難確定有哪些東西是不怎么變的,什么東西是容易變的,而這恰恰是做建模的前提條件。
  • 迭代速度。在穩(wěn)固的模型,也不可能一成不變,畢竟現(xiàn)實(shí)世界一直在變。當(dāng)現(xiàn)實(shí)世界變化到模型不能支撐的時(shí)候,要能馬上修改模型才行。但實(shí)際情況是,因?yàn)殚_(kāi)發(fā)效率的原因,工期趕不上,然后就會(huì)在舊的模型上進(jìn)行打補(bǔ)丁,補(bǔ)丁一個(gè)接著一個(gè)打,最后整個(gè)系統(tǒng)臃腫不堪,開(kāi)發(fā)效率進(jìn)一步降低,如此惡性循環(huán)。
  • 火候的掌握。領(lǐng)域模型是要對(duì)現(xiàn)實(shí)世界建模,既要去尋找不變性,又要為可能變化的地方留出擴(kuò)展性。什么地方是不變的,要作為基礎(chǔ);什么地方是易變的,要留出擴(kuò)展性,這其中并沒(méi)有一個(gè)標(biāo)準(zhǔn)原則。另外,各家公司的業(yè)務(wù)規(guī)模、速度不一樣,團(tuán)隊(duì)實(shí)施能力也不一樣。所以在實(shí)踐中,要么會(huì)"缺乏設(shè)計(jì)",要么會(huì)"過(guò)度設(shè)計(jì)"。對(duì)火候的掌握,需要有悟性。只有反復(fù)思考,反復(fù)推翻自己之前的想法,再重建新的想法,才能在實(shí)踐中不斷找到領(lǐng)域模型、業(yè)務(wù)發(fā)展速度、技術(shù)團(tuán)隊(duì)能力之間的"最佳平衡點(diǎn)"。

?

背后需要修煉的思維

上面講的這些都是術(shù)的表現(xiàn),是借假修真,只有"真"才是我們修煉的道,也就是做事的思維,下圖列舉一些,歡迎感興趣的多交流。

領(lǐng)域建模的體系化思維與6種方法論

作者|?修冶文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-693078.html

到了這里,關(guān)于領(lǐng)域建模的體系化思維與6種方法論的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 領(lǐng)域建模之?dāng)?shù)據(jù)模型設(shè)計(jì)方法論

    領(lǐng)域建模之?dāng)?shù)據(jù)模型設(shè)計(jì)方法論

    本文通過(guò)實(shí)際業(yè)務(wù)需求場(chǎng)景建模案例,為讀者提供一種業(yè)務(wù)模型向數(shù)據(jù)模型設(shè)計(jì)的方法論,用于指導(dǎo)實(shí)際開(kāi)發(fā)中如何進(jìn)行業(yè)務(wù)模型向數(shù)據(jù)模型轉(zhuǎn)化抽象,并對(duì)設(shè)計(jì)的數(shù)據(jù)模型可用性、擴(kuò)展性提供了建議性思考。通過(guò)文章,讀者可以收獲到業(yè)務(wù)模型向數(shù)據(jù)模型抽象可參考的一種

    2024年02月09日
    瀏覽(29)
  • 領(lǐng)域建模之?dāng)?shù)據(jù)模型設(shè)計(jì)方法論 | 京東云技術(shù)團(tuán)隊(duì)

    領(lǐng)域建模之?dāng)?shù)據(jù)模型設(shè)計(jì)方法論 | 京東云技術(shù)團(tuán)隊(duì)

    本文通過(guò)實(shí)際業(yè)務(wù)需求場(chǎng)景建模案例,為讀者提供一種業(yè)務(wù)模型向數(shù)據(jù)模型設(shè)計(jì)的方法論,用于指導(dǎo)實(shí)際開(kāi)發(fā)中如何進(jìn)行業(yè)務(wù)模型向數(shù)據(jù)模型轉(zhuǎn)化抽象,并對(duì)設(shè)計(jì)的數(shù)據(jù)模型可用性、擴(kuò)展性提供了建議性思考。通過(guò)文章,讀者可以收獲到業(yè)務(wù)模型向數(shù)據(jù)模型抽象可參考的一種

    2024年02月09日
    瀏覽(21)
  • 數(shù)倉(cāng)建模—建模方法論之范式建模

    三大范式是關(guān)系數(shù)據(jù)庫(kù)(OLTP)設(shè)計(jì)表結(jié)構(gòu)所遵循的規(guī)范和指導(dǎo)方法,主要用于提高數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)質(zhì)量,避免數(shù)據(jù)冗余和更新異常,目的是為了減少冗余,通過(guò)結(jié)構(gòu)合理的數(shù)據(jù)庫(kù),從而提高數(shù)據(jù)存儲(chǔ)和使用的性能,三大范式之間是具有依賴(lài)關(guān)系的,比如第二范式是在第一范式的

    2024年02月07日
    瀏覽(26)
  • 從方法論到最佳實(shí)踐,深度解析企業(yè)云原生 DevSecOps 體系構(gòu)建

    從方法論到最佳實(shí)踐,深度解析企業(yè)云原生 DevSecOps 體系構(gòu)建

    作者:匡大虎 安全一直是企業(yè)上云關(guān)注的核心問(wèn)題。隨著云原生對(duì)云計(jì)算基礎(chǔ)設(shè)施和企業(yè)應(yīng)用架構(gòu)的重定義,傳統(tǒng)的企業(yè)安全防護(hù)架構(gòu)已經(jīng)不能夠滿(mǎn)足新時(shí)期下的安全防護(hù)要求。為此企業(yè)安全人員需要針對(duì)云原生時(shí)代的安全挑戰(zhàn)重新進(jìn)行系統(tǒng)性的威脅分析并構(gòu)建適合企業(yè)自身

    2024年01月25日
    瀏覽(107)
  • 數(shù)倉(cāng)建模方法論

    1.數(shù)倉(cāng)建模的理由 數(shù)據(jù)建模的主要目的是降低成本,提高數(shù)據(jù)的利用效率。尤其是大數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)的多樣化,巨量,更需要有效的有針對(duì)性數(shù)據(jù)建模方法。 大數(shù)據(jù)的數(shù)倉(cāng)建模正是通過(guò)建模的方法,更好的組織、存儲(chǔ)數(shù)據(jù),以便在性能、成本、效率和數(shù)據(jù)質(zhì)量之間找到

    2024年02月05日
    瀏覽(32)
  • 數(shù)據(jù)建模方法論及實(shí)施步驟

    數(shù)據(jù)建模方法論及實(shí)施步驟

    了解數(shù)據(jù)建模之前首先要知道的是什么是數(shù)據(jù)模型。數(shù)據(jù)模型(Data Model)是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束條件,為數(shù)據(jù)庫(kù)系統(tǒng)的信息表示與操作提供一個(gè)抽象的框架。 一、概要:數(shù)據(jù)建模簡(jiǎn)介 數(shù)據(jù)基本用于兩種目的:1、操作型記

    2024年02月05日
    瀏覽(24)
  • OneData方法論-概述

    OneData方法論-概述

    OneData概述 OneData是阿里巴巴數(shù)據(jù)整合及管理體系,其方法論的核心在于:從業(yè)務(wù)架構(gòu)設(shè)計(jì)到模型設(shè)計(jì),從數(shù)據(jù)研發(fā)到數(shù)據(jù)服務(wù),做到數(shù)據(jù)可管理 、可追溯、可規(guī)避重復(fù)建設(shè)。即數(shù)據(jù)只建設(shè)一次。 OneData體系架構(gòu) Onedata方法論分為三個(gè)階段:業(yè)務(wù)板塊、規(guī)范定義、模型設(shè)計(jì)。 業(yè)

    2024年02月05日
    瀏覽(28)
  • SQL-方法論

    寫(xiě)SQL時(shí)可以考慮的手段: 行轉(zhuǎn)列 先分為多個(gè)臨時(shí)表,然后JOIN到一起 用sum(if()) 列轉(zhuǎn)行 先分為多個(gè)臨時(shí)表,然后UNION到一起

    2024年02月14日
    瀏覽(31)
  • 滲透測(cè)試方法論

    滲透測(cè)試方法論

    攻擊與防御,攻擊典型代表就是黑客入侵,非法的和滲透測(cè)試,合法的等工作。防御的典型代表等級(jí)保護(hù)、安全基線(xiàn)檢查與加固、安全設(shè)備等。 滲透測(cè)試(penetration testing,pentest)是模擬黑客攻擊,實(shí)施安全評(píng)估(即審計(jì))的具體手段。方法論是在制定、實(shí)施信息安全審計(jì)方案時(shí)

    2024年02月11日
    瀏覽(48)
  • 搜索方法論

    搜索方法論

    搜索技巧: 1. “”:不拆分。當(dāng)我們查找的內(nèi)容為一個(gè)詞組或者多個(gè)漢字,那么我們用雙引號(hào)把他們括起來(lái)再進(jìn)行查找,此時(shí)搜索到的結(jié)果最少也最精確。 2. -干擾詞(中間有個(gè)空格) 3. +確定詞(中間有個(gè)空格) ?4. filetype:文件格式 效果就是尋

    2024年02月12日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包