課程簡介
工作坊介紹:
領域驅動設計全過程工作坊將以事件風暴為縱貫線,以領域場景為橫切面,驅動從戰(zhàn) 略設計到戰(zhàn)術設計的全生命周期的完整開發(fā)過程。內(nèi)容涵蓋事件風暴、限界上下文、 上下文映射、場景驅動設計和測試驅動開發(fā)。整個工作坊圍繞為學在線課堂的案例全程演練具有實操價值的領域驅動設計方法。
目標收益
通過本次工作坊,你將能夠深刻體會領域驅動從戰(zhàn)略設計到戰(zhàn)術設計的全過程;你將學到如何將事件風暴運用到具體的項目開發(fā)中,并利用它進行業(yè)務分析、架構設計和編程開發(fā),在降低業(yè)務復雜度的同時提高開發(fā)質(zhì)量;你將學到如何利用場景驅動設計固化設計和開發(fā)過程,在現(xiàn)有開發(fā)團隊中實現(xiàn)領域驅動設計在復雜系統(tǒng)下的軟著陸。
培訓對象
1、專注于行業(yè)軟件開發(fā)或互聯(lián)網(wǎng)開發(fā)的軟件從業(yè)者
2、希望掌握事件風暴方法的業(yè)務分析人員與開發(fā)人員
3、希望提高領域建模與分析能力的軟件設計人員
4、希望掌握領域驅動設計方法并運用到項目中的后端開發(fā)人員
課程大綱
領域驅動設計過程 (1小時) |
貫穿戰(zhàn)略式設計到戰(zhàn)術式設計,整體介紹領域驅動設計的完整過程和基本概念。 |
事件風暴(1小時) |
介紹事件風暴的基本概念,包括領域事件的基本特征,事件風暴的設計驅動力,并介紹事件風暴的可視化符號特征,為開展事件風暴工作坊做準備。 |
探索業(yè)務全景 (3小時) |
通過識別事件風暴的領域事件,并利用事件因果關系的驅動力識別各自的前置事件和 后置事件,形成一條或多條代表了時間軸的事件流。 探索過程包括: ? 識別代表業(yè)務全景的領域事件 ? 標記代表問題、重要關注點的熱點 ? 為每個領域事件識別參與者 ? 對所有事件進行橫向和縱向的切分,獲得候選限界上下文 ? 遍歷所有事件,確定上下文映射 |
領域分析建模 (2小時) |
針對限界上下文內(nèi)的領域事件進行領域分析建模。這個過程屬于事件風暴的第二階段,將進一步確定領域分析模型。分析過程如下: ? 根據(jù)領域事件確定決策命令 ? 根據(jù)決策命令確定讀模型 ? 根據(jù)決策命令和領域事件之間的關系確定聚合 ? 根據(jù)讀模型、聚合獲得領域分析模型 |
場景驅動設計 (1小時) |
選擇一個領域場景,由參與者開啟一個初始狀態(tài),開始執(zhí)行具有時序性的連續(xù)任務, 角色之間采用行為協(xié)作來共同滿足業(yè)務價值,這就是場景驅動設計(Scenario?Driven Design)。 這個過程是從領域分析模型到領域設計模型的關鍵步驟,同時也有利于降低開發(fā)團隊 的設計門檻,形成固化的領域驅動戰(zhàn)術設計過程。 |
場景驅動設計的過程 (2小時) |
場景驅動設計以事件風暴識別出來的領域場景為起點,以領域分析模型中的模型對象 結合角色構造型作為參與協(xié)作的設計元素,固化為一個可按部就班執(zhí)行的動態(tài)設計過 程。整個設計過程分為三個步驟: ? 識別場景:從需求中識別出獨立的具有業(yè)務價值的領域場景 ? 分解任務:根據(jù)職責的層次對領域場景進行任務分解 ? 分配職責:為領域驅動設計角色構造型分配不同層次的職責 |
測試驅動開發(fā) (2小時) | 場景驅動設計與測試驅動開發(fā)之間形成了一種相輔相成的設計伴侶。場景驅動設計分解出來的任務以及角色構造型的協(xié)作時序圖,可以作為測試驅動開發(fā)的起點。測試驅動開發(fā)的代碼編寫又反過來驗證場景驅動設計的正確性,并通過重構改進代碼質(zhì)量, 并重新發(fā)現(xiàn)之前未曾發(fā)現(xiàn)的隱含概念。在本次工作坊中,我們將選擇一個領域場景, 嚴格按照測試驅動開發(fā)的開發(fā)節(jié)奏進行。 |
領域驅動設計過程 (1小時) 貫穿戰(zhàn)略式設計到戰(zhàn)術式設計,整體介紹領域驅動設計的完整過程和基本概念。 |
事件風暴(1小時) 介紹事件風暴的基本概念,包括領域事件的基本特征,事件風暴的設計驅動力,并介紹事件風暴的可視化符號特征,為開展事件風暴工作坊做準備。 |
探索業(yè)務全景 (3小時) 通過識別事件風暴的領域事件,并利用事件因果關系的驅動力識別各自的前置事件和 后置事件,形成一條或多條代表了時間軸的事件流。 探索過程包括: ? 識別代表業(yè)務全景的領域事件 ? 標記代表問題、重要關注點的熱點 ? 為每個領域事件識別參與者 ? 對所有事件進行橫向和縱向的切分,獲得候選限界上下文 ? 遍歷所有事件,確定上下文映射 |
領域分析建模 (2小時) 針對限界上下文內(nèi)的領域事件進行領域分析建模。這個過程屬于事件風暴的第二階段,將進一步確定領域分析模型。分析過程如下: ? 根據(jù)領域事件確定決策命令 ? 根據(jù)決策命令確定讀模型 ? 根據(jù)決策命令和領域事件之間的關系確定聚合 ? 根據(jù)讀模型、聚合獲得領域分析模型 |
場景驅動設計 (1小時) 選擇一個領域場景,由參與者開啟一個初始狀態(tài),開始執(zhí)行具有時序性的連續(xù)任務, 角色之間采用行為協(xié)作來共同滿足業(yè)務價值,這就是場景驅動設計(Scenario?Driven Design)。 這個過程是從領域分析模型到領域設計模型的關鍵步驟,同時也有利于降低開發(fā)團隊 的設計門檻,形成固化的領域驅動戰(zhàn)術設計過程。 |
場景驅動設計的過程 (2小時) 場景驅動設計以事件風暴識別出來的領域場景為起點,以領域分析模型中的模型對象 結合角色構造型作為參與協(xié)作的設計元素,固化為一個可按部就班執(zhí)行的動態(tài)設計過 程。整個設計過程分為三個步驟: ? 識別場景:從需求中識別出獨立的具有業(yè)務價值的領域場景 ? 分解任務:根據(jù)職責的層次對領域場景進行任務分解 ? 分配職責:為領域驅動設計角色構造型分配不同層次的職責 |
測試驅動開發(fā) (2小時) 場景驅動設計與測試驅動開發(fā)之間形成了一種相輔相成的設計伴侶。場景驅動設計分解出來的任務以及角色構造型的協(xié)作時序圖,可以作為測試驅動開發(fā)的起點。測試驅動開發(fā)的代碼編寫又反過來驗證場景驅動設計的正確性,并通過重構改進代碼質(zhì)量, 并重新發(fā)現(xiàn)之前未曾發(fā)現(xiàn)的隱含概念。在本次工作坊中,我們將選擇一個領域場景, 嚴格按照測試驅動開發(fā)的開發(fā)節(jié)奏進行。 |