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)域概念