課程簡介
本次交流重點在于講解領域驅動設計的方法體系,并將領域驅動設計與業(yè)務分析與建模技術結合起來,通過領域模型正確反映業(yè)務需求,以便于領域專家與業(yè)務分析人員、開發(fā)團隊就業(yè)務需求達成共識,促進對業(yè)務需求的理解,并建立面向領域的架構體系以快速響應需求變化。
目標收益
領域驅動設計能夠解決:
需求分析人員與開發(fā)團隊的溝通問題
從需求到開發(fā)實現的設計問題
系統(tǒng)過于復雜導致代碼難以維護的開發(fā)問題
本課程將從戰(zhàn)略設計到戰(zhàn)術設計全面講解領域驅動設計,結合微服務架構、六邊形架構以 及事件驅動架構和CQRS等知識,引入大量案例通過工作坊形式引導學員掌握領域驅動設 計的知識,并最終在項目開發(fā)中落地。
需求分析人員和領域專家無法與團隊的設計人員和開發(fā)人員進行有效溝通。需求分析人員 不了解軟件設計,軟件設計人員常常會曲解需求內容,這是軟件開發(fā)中容易出現的第一病 癥。它帶來的后果是設計頻繁變更,設計的軟件不滿足客戶需求。
培訓對象
1、專注于行業(yè)軟件開發(fā)或互聯(lián)網開發(fā)的軟件從業(yè)者
2、希望掌握事件風暴方法的業(yè)務分析人員與開發(fā)人員
3、希望提高領域建模與分析能力的軟件設計人員
4、希望掌握領域驅動設計方法并運用到項目中的后端開發(fā)人員
課程大綱
第一部分 領域驅動設計體系 |
以高屋建瓴的方式概括講解整個領域驅動設計體系,內容包括: ?經典領域驅動設計體系 ?軟件系統(tǒng)復雜度剖析 ?領域驅動設計統(tǒng)一過程 講解由Eric Evans提出的經典領域驅動設計,對整套方法體系和過程有一個完整的理解,然后,剖析軟件系統(tǒng)的復雜度,明確復雜度的產生在于軟件系統(tǒng)的規(guī)模與業(yè)務需求的變化,由此形成業(yè)務復雜度與技術復雜度。而領域驅動設計通過限界上下文與領域建模可以在一定程度降低業(yè)務復雜度,響應業(yè)務需求的變化,并通過隔離業(yè)務復雜度與技術復雜度整體降低軟件復雜度。 針對領域驅動設計存在的不足,提出領域驅動設計統(tǒng)一過程,包括需求分析、架構設計與領域建模等內容,并在領域驅動設計的指導原則下進行。 案例分析: ?某航空公司地面保障系統(tǒng)的架構設計 案例分析首先將根據復雜度分析,對整個系統(tǒng)的問題空間進行剖析,明確復雜度的成因,然后根據企業(yè)架構思想,梳理業(yè)務架構、應用架構、數據架構與技術架構之間的關系,推導出降低和控制系統(tǒng)復雜度的辦法。 |
第二部分 全景分析階段 |
對整個項目進行業(yè)務的全局分析,內容包括: ?全局分析的5W模型 ?價值需求分析 ?業(yè)務需求分析 全局分析階段會梳理目標系統(tǒng)的價值需求和業(yè)務需求,利用5W模型梳理目標系統(tǒng)的利益相關人、系統(tǒng)愿景和范圍,獲得價值需求,并在價值需求的指導下,梳理參與者、目標系統(tǒng)與伴生系統(tǒng)之間的協(xié)作關系,獲得業(yè)務流程,再結合業(yè)務流程的三要素“角色、場景與時間”切分業(yè)務場景與業(yè)務服務。 在進行價值需求分析與業(yè)務需求分析中,需要用到需求分析的方法,包括: ?商業(yè)模式畫布 ?服務藍圖 ?業(yè)務服務分析方法 |
第三部分 架構映射階段 |
在領域驅動的戰(zhàn)略設計階段,以領域為核心驅動力,以限界上下文為核心模式構建面向領域的架構體系,內容包括: ?限界上下文 ?上下文映射 ?領域驅動架構 通過全局分析階段輸出的業(yè)務場景與業(yè)務服務,利用V模型從領域維度識別限界上下文。限界上下文作為業(yè)務能力的縱向切分、領域模型的知識語境,是響應業(yè)務變化的關鍵架構因素。由限界上下文之間的協(xié)作形成上下文映射,并根據領域驅動設計原則,建立面向領域的架構體系,形成以菱形對稱架構與系統(tǒng)分層架構為支撐的領域驅動架構。 工作坊: ?技術部落的架構映射:根據全局分析輸出的業(yè)務需求對技術部落進行架構映射,識別出系統(tǒng)的限界上下文,確定限界上下文之間的關系。 |
第四部分 領域建模階段 |
以領域場景為建模核心開展領域模型驅動設計,是保證領域驅動設計落地的重要條件,內容包括: ?領域分析建模 ?領域設計建模 ?領域實現建模 在限界上下文的知識邊界內分析領域邏輯,提煉領域概念,在統(tǒng)一語言的指導下迭代地進行領域建模,包括建立清晰表達了領域概念的領域分析模型,與以聚合為核心要素的領域設計模型,通過服務驅動設計確定每個領域模型對象的職責,并順利地引導到領域實現建模,以測試驅動開發(fā)的流程編寫領域實現代碼與測試代碼。在進行領域建模時,會使用到如下可視化建模方法: ?快速建模法 ?服務驅動設計 案例分析: ?某系統(tǒng)的領域建模:利用業(yè)務服務規(guī)約,通過運用快速建模法獲得領域分析模型,并在限界上下文的控制下識別聚合,然后按照服務驅動設計獲得領域設計模型。 |
第一部分 領域驅動設計體系 以高屋建瓴的方式概括講解整個領域驅動設計體系,內容包括: ?經典領域驅動設計體系 ?軟件系統(tǒng)復雜度剖析 ?領域驅動設計統(tǒng)一過程 講解由Eric Evans提出的經典領域驅動設計,對整套方法體系和過程有一個完整的理解,然后,剖析軟件系統(tǒng)的復雜度,明確復雜度的產生在于軟件系統(tǒng)的規(guī)模與業(yè)務需求的變化,由此形成業(yè)務復雜度與技術復雜度。而領域驅動設計通過限界上下文與領域建模可以在一定程度降低業(yè)務復雜度,響應業(yè)務需求的變化,并通過隔離業(yè)務復雜度與技術復雜度整體降低軟件復雜度。 針對領域驅動設計存在的不足,提出領域驅動設計統(tǒng)一過程,包括需求分析、架構設計與領域建模等內容,并在領域驅動設計的指導原則下進行。 案例分析: ?某航空公司地面保障系統(tǒng)的架構設計 案例分析首先將根據復雜度分析,對整個系統(tǒng)的問題空間進行剖析,明確復雜度的成因,然后根據企業(yè)架構思想,梳理業(yè)務架構、應用架構、數據架構與技術架構之間的關系,推導出降低和控制系統(tǒng)復雜度的辦法。 |
第二部分 全景分析階段 對整個項目進行業(yè)務的全局分析,內容包括: ?全局分析的5W模型 ?價值需求分析 ?業(yè)務需求分析 全局分析階段會梳理目標系統(tǒng)的價值需求和業(yè)務需求,利用5W模型梳理目標系統(tǒng)的利益相關人、系統(tǒng)愿景和范圍,獲得價值需求,并在價值需求的指導下,梳理參與者、目標系統(tǒng)與伴生系統(tǒng)之間的協(xié)作關系,獲得業(yè)務流程,再結合業(yè)務流程的三要素“角色、場景與時間”切分業(yè)務場景與業(yè)務服務。 在進行價值需求分析與業(yè)務需求分析中,需要用到需求分析的方法,包括: ?商業(yè)模式畫布 ?服務藍圖 ?業(yè)務服務分析方法 |
第三部分 架構映射階段 在領域驅動的戰(zhàn)略設計階段,以領域為核心驅動力,以限界上下文為核心模式構建面向領域的架構體系,內容包括: ?限界上下文 ?上下文映射 ?領域驅動架構 通過全局分析階段輸出的業(yè)務場景與業(yè)務服務,利用V模型從領域維度識別限界上下文。限界上下文作為業(yè)務能力的縱向切分、領域模型的知識語境,是響應業(yè)務變化的關鍵架構因素。由限界上下文之間的協(xié)作形成上下文映射,并根據領域驅動設計原則,建立面向領域的架構體系,形成以菱形對稱架構與系統(tǒng)分層架構為支撐的領域驅動架構。 工作坊: ?技術部落的架構映射:根據全局分析輸出的業(yè)務需求對技術部落進行架構映射,識別出系統(tǒng)的限界上下文,確定限界上下文之間的關系。 |
第四部分 領域建模階段 以領域場景為建模核心開展領域模型驅動設計,是保證領域驅動設計落地的重要條件,內容包括: ?領域分析建模 ?領域設計建模 ?領域實現建模 在限界上下文的知識邊界內分析領域邏輯,提煉領域概念,在統(tǒng)一語言的指導下迭代地進行領域建模,包括建立清晰表達了領域概念的領域分析模型,與以聚合為核心要素的領域設計模型,通過服務驅動設計確定每個領域模型對象的職責,并順利地引導到領域實現建模,以測試驅動開發(fā)的流程編寫領域實現代碼與測試代碼。在進行領域建模時,會使用到如下可視化建模方法: ?快速建模法 ?服務驅動設計 案例分析: ?某系統(tǒng)的領域建模:利用業(yè)務服務規(guī)約,通過運用快速建模法獲得領域分析模型,并在限界上下文的控制下識別聚合,然后按照服務驅動設計獲得領域設計模型。 |