DDD戰(zhàn)略2 領(lǐng)域知識(shí)

GitChat課程《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)--戰(zhàn)略篇》筆記娶吞,課程作者張逸

一.DDD開發(fā)中團(tuán)隊(duì)的溝通與協(xié)作

  • DDD先要識(shí)別問題域骡澈,再為團(tuán)隊(duì)提煉達(dá)成共識(shí)的領(lǐng)域知識(shí)
1.理解客戶需求
  • 客戶需求理解的三個(gè)偏差
    1)從客戶那里了解到的需求并非用戶最終的需求
    2)低效的溝通方式會(huì)使很小的需求理解偏差帶來大相徑庭的結(jié)果
    3)理解到的需求如果沒有揭示完整的領(lǐng)域知識(shí)冯事,將會(huì)導(dǎo)致領(lǐng)域建模與設(shè)計(jì)出現(xiàn)認(rèn)知障礙
  • 通過可視化形式的交流避免認(rèn)知偏差
2.團(tuán)隊(duì)協(xié)作:先啟階段(Inception)
  • 在項(xiàng)目的先啟階段映皆,應(yīng)專注宏觀層面的領(lǐng)域知識(shí)溝通饿幅,初步建立的統(tǒng)一語(yǔ)言讶隐,在識(shí)別出史詩(shī)級(jí)故事與主要用戶故事后赎懦,確定限界上下文雀鹃,并搭建系統(tǒng)的邏輯架構(gòu)與物理架構(gòu)
  • 具體步驟
    1)確定項(xiàng)目的利益相關(guān)人
    2)確定業(yè)務(wù)期望與愿景
    3)確定對(duì)問題域的共同理解
    4)確定項(xiàng)目的當(dāng)前狀態(tài)與未來狀態(tài)
    5)確定項(xiàng)目的業(yè)務(wù)范圍
    6)識(shí)別史詩(shī)級(jí)故事
    7)拆分史詩(shī)級(jí)故事為主故事列表
3.團(tuán)隊(duì)協(xié)作:迭代開發(fā)階段
  • 迭代計(jì)劃會(huì)議
    由產(chǎn)品負(fù)責(zé)人(PO)向團(tuán)隊(duì)成員介紹和解釋該迭代要完成的用戶故事,包括業(yè)務(wù)邏輯與驗(yàn)收標(biāo)準(zhǔn)
  • 每日站立會(huì)議
    由PO解答開發(fā)過程中可能出現(xiàn)的需求理解問題励两,Scrum Master通過每日站立會(huì)議了解當(dāng)前的迭代進(jìn)度黎茎,并基于當(dāng)前進(jìn)度和迭代目標(biāo)確定是否需要調(diào)整需求的優(yōu)先級(jí)
  • 編寫用戶故事
    1)Kick Off:開發(fā)人員在領(lǐng)取用戶故事后與需求分析人員和測(cè)試人員進(jìn)行需求溝通與確認(rèn)
    2)增量開發(fā)
    3)Desk Check:開發(fā)人員在開發(fā)環(huán)境下向需求分析人員和測(cè)試人員演示新功能,目的是快速反饋当悔,減少溝通成本
    4)驗(yàn)收測(cè)試
  • 迭代演示會(huì)議
    迭代結(jié)束后傅瞻,由團(tuán)隊(duì)的測(cè)試人員向客戶踢代、最終用戶以及領(lǐng)域?qū)<已菔镜呀?jīng)完成的功能。由于迭代周期較短嗅骄,可以有效糾正因?yàn)樾枨罄斫獠灰恢聦?dǎo)致的功能實(shí)現(xiàn)偏差
迭代開發(fā)階段

二.運(yùn)用領(lǐng)域場(chǎng)景分析提煉領(lǐng)域知識(shí)

1.領(lǐng)域場(chǎng)景分析的6W模型
  • 6W:Who胳挎,What,Why溺森,Where慕爬,When,hoW
  • 首先識(shí)別參與場(chǎng)景的用戶角色(Who)
  • 分析用戶在整個(gè)場(chǎng)景中的活動(dòng)屏积,明確業(yè)務(wù)功能(What)和業(yè)務(wù)價(jià)值(Why)
  • 對(duì)業(yè)務(wù)功能的深入分析可以確定具體的業(yè)務(wù)實(shí)現(xiàn)(hoW)
  • 在場(chǎng)景建模時(shí)医窿,還要充分考慮場(chǎng)景的邊界(Where),即DDD中的限界上下文(Bounded Context)
6W模型
2.領(lǐng)域場(chǎng)景的分析方法:用例(User Case)
  • 思考參與系統(tǒng)活動(dòng)的角色(參與者)炊林,然后通過參與者的角度去思考為其提供"價(jià)值"的業(yè)務(wù)功能
  • 用例規(guī)格說明(以買家下訂單為例)
用例的文字描述
  • 用例圖
用例圖
  • 用例圖的組成要素
    1)參與者(Actor):Who
    2)用例(User Case):What
    3)用例關(guān)系:包括使用姥卢、包含、擴(kuò)展渣聚、特化等独榴,其中使用(use)關(guān)系代表Why,包含和擴(kuò)展的子用例都是為主用例服務(wù)奕枝,即為When與hoW
    4)邊界(Boundary):Where
  • 用例之間的協(xié)作關(guān)系
    1)包含(include):對(duì)象之間的組合關(guān)系棺榔,must have
    2)擴(kuò)展(extend):對(duì)象之間的聚合關(guān)系,nice to have
3.領(lǐng)域場(chǎng)景的分析方法:用戶故事(User Story)
  • 用戶故事模板
    Who:As a <角色>
    What:I would like <活動(dòng)>
    Why:so that <業(yè)務(wù)價(jià)值>
  • 用戶故事編寫實(shí)例
    作為一名銷售經(jīng)理
    我希望為訂單設(shè)置合適的配送免費(fèi)的總額閾值
    以便于促進(jìn)平均訂單總額的提高
    驗(yàn)收標(biāo)準(zhǔn)
    訂單總額的貨幣單位應(yīng)以當(dāng)前國(guó)家的貨幣為準(zhǔn)
    訂單總額閾值必須大于0
  • Given-When-Then模式倍权,通過實(shí)例化需求的方式編寫用戶故事
    作為?一名銷售經(jīng)理理
    我希望為訂單設(shè)置合適的配送免費(fèi)的總額閾值
    以便便于促進(jìn)平均訂單總額的提?高
    場(chǎng)景1:訂單滿?足配送免費(fèi)的總額閾值
    Given:配送免費(fèi)的總額閾值設(shè)置為95元?人?民幣
    And:我?目前的購(gòu)物?車總計(jì)90元?人?民幣
    When:我將?一個(gè)價(jià)格為5元?人?民幣的商品添加到購(gòu)物?車
    Then:我將獲得配送免費(fèi)的優(yōu)惠
    場(chǎng)景2:訂單不不滿?足配送免費(fèi)的總額閾值
    Given:配送免費(fèi)的總額閾值設(shè)置為95元?人?民幣
    And:我?目前的購(gòu)物?車總計(jì)85元?人?民幣
    When:我將?一個(gè)價(jià)格為9元?人?民幣的商品添加到購(gòu)物籃
    Then:我應(yīng)該被告知如果我多消費(fèi)1元?民幣掷豺,就能享受配送免費(fèi)的優(yōu)惠
4.領(lǐng)域場(chǎng)景的分析方法:測(cè)試驅(qū)動(dòng)開發(fā)
  • 測(cè)試優(yōu)先的本質(zhì)是需求分析優(yōu)先,是任務(wù)分解優(yōu)先
  • 為分解的任務(wù)編寫測(cè)試用例時(shí)薄声,應(yīng)根據(jù)領(lǐng)域場(chǎng)景而非被測(cè)方法編寫單元測(cè)試
  • 編寫測(cè)試方法時(shí)当船,應(yīng)遵循Given-When-Then模式
    1)編寫Given時(shí),思考被測(cè)對(duì)象的創(chuàng)建默辨,以及它與其他對(duì)象的協(xié)作
    2)編寫When時(shí)德频,思考被測(cè)接口的方法命名,以及它需要接收的傳入?yún)?shù)
    3)編寫Then時(shí)缩幸,思考北側(cè)接口的返回值
  • 為猜數(shù)字游戲中判斷每次猜測(cè)的結(jié)果任務(wù)編寫的測(cè)試方法
測(cè)試方法

三.建立統(tǒng)一語(yǔ)言

1.統(tǒng)一語(yǔ)言
  • 通過提煉領(lǐng)域知識(shí)獲得統(tǒng)一語(yǔ)言壹置,獲得統(tǒng)一語(yǔ)言是需求分析的過程,也是團(tuán)隊(duì)中各個(gè)角色就系統(tǒng)目標(biāo)表谊、范圍與具體功能達(dá)成一致的過程
  • 統(tǒng)一語(yǔ)言體現(xiàn)在
    1)統(tǒng)一的領(lǐng)域術(shù)語(yǔ)
    2)領(lǐng)域行為描述
2.統(tǒng)一的領(lǐng)域術(shù)語(yǔ)
  • 從需求中提煉統(tǒng)一語(yǔ)言钞护,其實(shí)就是在兩個(gè)不同的語(yǔ)言世界中進(jìn)行正確翻譯的過程
  • 維護(hù)領(lǐng)域術(shù)語(yǔ)表時(shí)一定要給出對(duì)應(yīng)的英文術(shù)語(yǔ),確保方法和類命名的一致性
3.領(lǐng)域行為描述
  • 領(lǐng)域行為是對(duì)業(yè)務(wù)過程的描述爆办,體現(xiàn)了更加完整的業(yè)務(wù)需求以及復(fù)雜的業(yè)務(wù)規(guī)則
  • 描述領(lǐng)域行為時(shí)难咕,需要滿足以下要求
    1)從領(lǐng)域角度而非實(shí)現(xiàn)角度描述領(lǐng)域行為
    2)涉及到領(lǐng)域術(shù)語(yǔ)時(shí),必須遵循術(shù)語(yǔ)表的規(guī)范
    3)強(qiáng)調(diào)動(dòng)詞的精確性,符合業(yè)務(wù)動(dòng)作在該領(lǐng)域的合理性
    4)要突出與領(lǐng)域行為有關(guān)的領(lǐng)域概念
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末余佃,一起剝皮案震驚了整個(gè)濱河市暮刃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爆土,老刑警劉巖椭懊,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異步势,居然都是意外死亡氧猬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門立润,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狂窑,“玉大人,你說我怎么就攤上這事桑腮。” “怎么了蛉幸?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵破讨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我奕纫,道長(zhǎng)提陶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任匹层,我火速辦了婚禮隙笆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘升筏。我一直安慰自己撑柔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布您访。 她就那樣靜靜地躺著铅忿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灵汪。 梳的紋絲不亂的頭發(fā)上檀训,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音享言,去河邊找鬼峻凫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛览露,可吹牛的內(nèi)容都是我干的荧琼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼铭腕!你這毒婦竟也來了银择?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤累舷,失蹤者是張志新(化名)和其女友劉穎浩考,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體被盈,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡析孽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了只怎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袜瞬。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖身堡,靈堂內(nèi)的尸體忽然破棺而出邓尤,到底是詐尸還是另有隱情,我是刑警寧澤贴谎,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布汞扎,位于F島的核電站,受9級(jí)特大地震影響擅这,放射性物質(zhì)發(fā)生泄漏澈魄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一仲翎、第九天 我趴在偏房一處隱蔽的房頂上張望痹扇。 院中可真熱鬧,春花似錦溯香、人聲如沸鲫构。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芬迄。三九已至,卻和暖如春昂秃,著一層夾襖步出監(jiān)牢的瞬間禀梳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工肠骆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留算途,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓蚀腿,卻偏偏與公主長(zhǎng)得像嘴瓤,于是被迫代替她去往敵國(guó)和親扫外。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.問:你在測(cè)試中發(fā)現(xiàn)了一個(gè) bug 廓脆,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug 筛谚,你應(yīng)該怎樣解決。 首先停忿,將問題提...
    qianyewhy閱讀 9,257評(píng)論 4 123
  • 1驾讲、問:你在測(cè)試中發(fā)現(xiàn)了一個(gè)bug,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè)bug席赂,你應(yīng)該怎樣解決吮铭? 首先,將問題提交到缺陷管理...
    小灰輝先生閱讀 1,334評(píng)論 0 3
  • -----轉(zhuǎn)載----- 1颅停、問:你在測(cè)試中發(fā)現(xiàn)了一個(gè)bug谓晌,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè)bug,你應(yīng)該怎樣解決癞揉? ...
    花開沉浮閱讀 7,378評(píng)論 4 88
  • 每天進(jìn)步一點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)~~從開始只能寫幾句話纸肉、模仿別人的觀點(diǎn),到現(xiàn)...
    一個(gè)帥氣的名字呀閱讀 18,083評(píng)論 4 31
  • 【標(biāo)題】整理 【字?jǐn)?shù)】552字 【正文】 最近兩次的打卡時(shí)間比較晚喊熟,一是因?yàn)楣ぷ麝P(guān)系毁靶,休假剛回來,還在梳理工作和調(diào)...
    sunshine0102閱讀 201評(píng)論 0 0