領(lǐng)域驅(qū)動軟件設(shè)計實(shí)戰(zhàn)訓(xùn)練營培訓(xùn)班
主辦單位:上海普瑞思管理咨詢有限公司 上海創(chuàng)卓商務(wù)咨詢有限公司
培訓(xùn)時間:2024年06月24-26日 北京
培訓(xùn)費(fèi)用:7800元/人(含授課費(fèi)、資料費(fèi)、會務(wù)費(fèi)、稅費(fèi)等)
培訓(xùn)收益
現(xiàn)在是一個快速變化的時代,我們不得不面對激烈的競爭和快速的市場變化。快速的變化,帶來軟件需求的快速變革。因此,所有的軟件企業(yè)不得不面對這樣一個事實(shí):當(dāng)軟件系統(tǒng)經(jīng)歷了無數(shù)次變更以后,程序變得凌亂不堪、難于維護(hù)。而軟件經(jīng)過了無數(shù)次變更以后,系統(tǒng)的業(yè)務(wù)邏輯變得越來越復(fù)雜,我們的設(shè)計開始迷失方向。這種設(shè)計的迷失,加快了軟件退化的速度,使得任何一個變更,都變得成本巨大。這就是現(xiàn)代軟件企業(yè)不得不面對的困境。
如何解決這種軟件的困境呢?領(lǐng)域驅(qū)動設(shè)計,給我們指明了方向。他通過將軟件設(shè)計還原到真實(shí)世界,將軟件設(shè)計與真實(shí)世界對應(yīng)起來。這樣,當(dāng)業(yè)務(wù)邏輯變得越來越復(fù)雜的時候,軟件需求也開始頻繁變更的時候,我們只需要將業(yè)務(wù)還原到真實(shí)場景,依據(jù)真實(shí)世界來指導(dǎo)我們的軟件設(shè)計,設(shè)計思路就會清晰起來,我們就不再迷失方向。
本課程就是在講解如何通過領(lǐng)域驅(qū)動設(shè)計,來應(yīng)對復(fù)雜系統(tǒng)的需求變更,實(shí)現(xiàn)高質(zhì)量的軟件設(shè)計,避免代碼腐化。課程首先剖析了軟件退化的根源,通過對真實(shí)系統(tǒng)一步一步退化的過程演變,揭示軟件退化的根源,為解決問題指明了方向。接著,有針對性地講解領(lǐng)域驅(qū)動設(shè)計是如何解決這些問題,為學(xué)員能夠有效提高軟件設(shè)計質(zhì)量,提供了思路與方向
然后,通過真實(shí)案例來一步一步講解如何進(jìn)行領(lǐng)域驅(qū)動設(shè)計,如何通過領(lǐng)域驅(qū)動設(shè)計來指導(dǎo)軟件變更,實(shí)現(xiàn)高質(zhì)量的軟件設(shè)計。本課程注重實(shí)戰(zhàn),因此每一部分的講解都是基于真實(shí)場景講解,并且在真實(shí)場景中思考與練習(xí)。
培訓(xùn)特色
1.理論與實(shí)踐相結(jié)合、案例分析與行業(yè)應(yīng)用穿插進(jìn)行;
2.專家精彩內(nèi)容解析、學(xué)員專題討論、分組研究;
3.通過全面知識理解、專題技能和實(shí)踐結(jié)合的授課方式。
課程收益
本課程注重實(shí)戰(zhàn),并以工作坊的形式提供很多案例,讓學(xué)員通過練習(xí)掌握領(lǐng)域驅(qū)動設(shè)計的過程。同時,通過大量真實(shí)的案例,講解許多公司在開展領(lǐng)域驅(qū)動設(shè)計的過程中面臨的難題、解決的思路,以及最終的設(shè)計養(yǎng)
【課程大綱】
第一天上午
第一單元
剖析領(lǐng)域驅(qū)動的設(shè)計思想
為什么我們需要領(lǐng)域驅(qū)動設(shè)計
1.現(xiàn)如今DDD越來越流行
2.DDD并不能幫助新項目的軟件開發(fā)
3.DDD真正的作用是日后長期的維護(hù)
實(shí)踐DDD的4大難題:
1.準(zhǔn)確理解為什么要采用DDD?
2.怎樣正確地進(jìn)行業(yè)務(wù)領(lǐng)域建模?
3.怎樣用領(lǐng)域模型指導(dǎo)開發(fā)與變更?
4.如何設(shè)計支持領(lǐng)域驅(qū)動的架構(gòu)設(shè)計?
DDD真正的作用是應(yīng)對日后的軟件維護(hù)
1.我們現(xiàn)在面對的是快速變化的時代
2.變更越頻繁,代碼質(zhì)量下降越快
案例:演示電商網(wǎng)站付款功能代碼質(zhì)量下降的過程
案例分析:揭示軟件退化的根源
DDD的解決之道:業(yè)務(wù)領(lǐng)域建模
3.系統(tǒng)規(guī)模越來越大,系統(tǒng)越來越復(fù)雜
案例:演示嵌入式溫控系統(tǒng)越來越難于維護(hù)的根源
案例分析:領(lǐng)域分析才是解決之道
DDD的解決之道:基于限界上下文拆分系統(tǒng)
案例分析:演示電商網(wǎng)站付款功能代碼質(zhì)量下降的過程
1.起初的設(shè)計
2.隨后的變更
3.質(zhì)量不斷下降的過程
軟件質(zhì)量下降的根源:
1.軟件總是因變更而變得越來越復(fù)雜
2.軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求
3.必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求
DDD的建模過程:
1.每次需求變更時先對需求進(jìn)行領(lǐng)域分析
2.基于領(lǐng)域分析先進(jìn)行領(lǐng)域模型的變更
3.基于領(lǐng)域模型的變更去指導(dǎo)程序的變更
DDD是應(yīng)對軟件復(fù)雜性之道
1.剖析領(lǐng)域驅(qū)動的設(shè)計思想
2.服務(wù)、實(shí)體與值對象的概念
3.充血模型與貧血模型的設(shè)計思路
4.問題域、子域與限界上下文劃分
基于領(lǐng)域模型的設(shè)計變更
1.演練基于DDD的設(shè)計與變更過程
2.演練領(lǐng)域模型如何指導(dǎo)數(shù)據(jù)庫設(shè)計
3.演練領(lǐng)域模型如何指導(dǎo)程序設(shè)計
4.聚合、倉庫與工廠:傻傻分不清
5.限界上下文:系統(tǒng)拆分的利器
案例:重新演練電商網(wǎng)站付款功能的變更過程
第一個版本的領(lǐng)域模型與設(shè)計
第一次變更的分析設(shè)計過程
第二場變更的設(shè)計實(shí)現(xiàn)
第三次變更的設(shè)計實(shí)現(xiàn)
第四次變更與架構(gòu)演化
第一天下午
第二單元
演練領(lǐng)域驅(qū)動的設(shè)計過程
領(lǐng)域建模分析過程
演練案例:在線訂餐系統(tǒng)的領(lǐng)域設(shè)計過程
1.從領(lǐng)域中吸取知識
2.統(tǒng)一語言建模
3.事件風(fēng)暴會議
1)梳理業(yè)務(wù)流程,識別領(lǐng)域事件
2)為每個領(lǐng)域事件識別參與者、行為、相關(guān)事物
3)標(biāo)記事物之間的關(guān)系、聚合、聚合根
4)根據(jù)業(yè)務(wù)劃分限界上下文
5)遍歷所有事件,確定上下文映射
4.業(yè)務(wù)領(lǐng)域建模
1)為每個領(lǐng)域事件構(gòu)建業(yè)務(wù)領(lǐng)域模型
2)劃分主題域、支撐域、通用域
3)落實(shí)各子域之間的聯(lián)系、接口及事件通知機(jī)制
基于領(lǐng)域模型的微服務(wù)設(shè)計
1.小而專的微服務(wù)設(shè)計
2.限界上下文與微服務(wù)拆分
3.上下文地圖與微服務(wù)接口
4.各微服務(wù)中實(shí)體、值對象與服務(wù)的設(shè)計
5.各微服務(wù)中聚合、工廠與倉庫的設(shè)計
6.領(lǐng)域模型4種關(guān)系3種繼承的數(shù)據(jù)庫設(shè)計
7.聚合層的設(shè)計、工廠和倉庫的實(shí)現(xiàn)
8.基于DDD的微服務(wù)架構(gòu)分層
解決DDD的設(shè)計難題
1.跨庫查詢的設(shè)計難題與設(shè)計實(shí)現(xiàn)
2.領(lǐng)域事件的通知機(jī)制與設(shè)計實(shí)現(xiàn)
3.微服務(wù)接口的防腐層設(shè)計
4.狀態(tài)查詢跟蹤的設(shè)計思路與代碼實(shí)現(xiàn)
分組練習(xí):按照事件風(fēng)暴的步驟進(jìn)行業(yè)務(wù)領(lǐng)域建模
1. 召開事件風(fēng)暴會議
2. 進(jìn)行業(yè)務(wù)領(lǐng)域建模
3. 基于領(lǐng)域模型設(shè)計開發(fā)系統(tǒng)
第二天上午
第三單元
領(lǐng)域驅(qū)動設(shè)計實(shí)踐
實(shí)戰(zhàn)演練:遠(yuǎn)程智慧醫(yī)療大數(shù)據(jù)平臺設(shè)計過程
1.系統(tǒng)業(yè)務(wù)規(guī)劃與戰(zhàn)略設(shè)計
2.子系統(tǒng)→限界上下文→功能模塊劃分
3.由粗到細(xì)的用例建模
4.各子域業(yè)務(wù)領(lǐng)域建模
1)智慧診療數(shù)據(jù)模型的領(lǐng)域分析
2)診所管理信息系統(tǒng)的領(lǐng)域分析
5.各子域的接口設(shè)計
1)上下文地圖的模型分析
2)微服務(wù)接口的方案設(shè)計
6.微服務(wù)的技術(shù)落地實(shí)踐
1)去中心化的技術(shù)治理
2)微服務(wù)的技術(shù)中臺
3)微服務(wù)的云端應(yīng)用平臺
起初:一個傳統(tǒng)的診所管理系統(tǒng)向互聯(lián)網(wǎng)轉(zhuǎn)型
1)起初沒有采用領(lǐng)域驅(qū)動設(shè)計,也運(yùn)行了這么多年
2)現(xiàn)在向互聯(lián)網(wǎng)轉(zhuǎn)型,業(yè)務(wù)變得越來越復(fù)雜,怎么開始領(lǐng)域建模?
第一步:站在全局的系統(tǒng)建設(shè)規(guī)劃
第二步:DDD戰(zhàn)略設(shè)計與限界上下文劃分
第三步:各子域的業(yè)務(wù)領(lǐng)域建模
第四步:上下文地圖與各子域的接口設(shè)計
轉(zhuǎn)型成互聯(lián)網(wǎng)連鎖診所系統(tǒng),又該如何分析設(shè)計
1)基于領(lǐng)域模型進(jìn)行新需求的分析
2)基于領(lǐng)域模型進(jìn)行原有代碼的更新維護(hù)
3)基于限界上下文進(jìn)行微服務(wù)的拆分,以及這個過程中的坑
第一步:基于DDD進(jìn)行戰(zhàn)略設(shè)計的調(diào)整
第二步:各子域的業(yè)務(wù)領(lǐng)域建模調(diào)整
第四步:上下文地圖與各子域的接口設(shè)計
第五步:基于DDD的微服務(wù)拆分
?基于DDD的數(shù)據(jù)庫設(shè)計與去中心化的數(shù)據(jù)治理
?如何由原有的貧血模型向現(xiàn)在的充血模型改造
?如何解決跨庫的關(guān)聯(lián)查詢與事務(wù)處理
?如何實(shí)現(xiàn)領(lǐng)域事件的消息推送機(jī)制
?如何實(shí)現(xiàn)跨庫的狀態(tài)數(shù)據(jù)查詢
?如何打造基于整潔架構(gòu)的領(lǐng)域驅(qū)動設(shè)計框架
增加人工智能的智能診療數(shù)據(jù)模型
1)如何通過領(lǐng)域模型來開展數(shù)據(jù)智能業(yè)務(wù)
2)如何基于領(lǐng)域模型的規(guī)劃與智能系統(tǒng)的接口
3)基于領(lǐng)域模型的微服務(wù)+大數(shù)據(jù)的設(shè)計實(shí)踐
分組練習(xí):按照領(lǐng)域模型進(jìn)行設(shè)計開發(fā)
1. 基于領(lǐng)域模型進(jìn)行微服務(wù)的拆分與設(shè)計
2. 基于領(lǐng)域模型進(jìn)行每個微服務(wù)的數(shù)據(jù)庫設(shè)計
3. 基于上下文地圖形成微服務(wù)間的契約與接口
第二天下午
第四單元
基于領(lǐng)域驅(qū)動的技術(shù)中臺建設(shè) DDD需要強(qiáng)大技術(shù)架構(gòu)支持
1.降低技術(shù)門檻,減少開發(fā)工作量 → 制訂規(guī)范、合理分層、降低復(fù)雜度
2.易于業(yè)務(wù)變更,易于架構(gòu)演化 → 將業(yè)務(wù)與技術(shù)解耦
3.支持領(lǐng)域驅(qū)動,支持微服務(wù) → 通用倉庫、工廠及基礎(chǔ)設(shè)施的設(shè)計
4.平臺不斷完善,功能不斷積累 → 敏捷架構(gòu)設(shè)計:架構(gòu)跑道與使能故事
支持DDD的技術(shù)架構(gòu)建設(shè)思路
1.分析當(dāng)前軟件架構(gòu)設(shè)計與架構(gòu)演化的痛點(diǎn)與根源
2.闡述技術(shù)中臺的建設(shè)思路
1)將業(yè)務(wù)與技術(shù)解耦 → 整潔架構(gòu)與六邊形架構(gòu)
2)提取共性,精簡業(yè)務(wù)代碼 → 單Controller,單Dao
支持領(lǐng)域驅(qū)動+微服務(wù)的技術(shù)中臺
案例:在線訂餐系統(tǒng)的應(yīng)用
1.通用、可配置的DDD倉庫與工廠的設(shè)計
2.解決跨庫的關(guān)聯(lián)查詢與事務(wù)處理
3.純潔的Service與Entity便于不斷地架構(gòu)演化
現(xiàn)有系統(tǒng)的整潔架構(gòu)轉(zhuǎn)型
1.系統(tǒng)級的重構(gòu)方法與步驟
2.建立接口層解耦業(yè)務(wù)代碼與技術(shù)框架的過程
3.基于整潔架構(gòu)的技術(shù)架構(gòu)演化與快速交付
第三天
第五單元
基于DDD的微服務(wù)設(shè)計實(shí)踐
實(shí)戰(zhàn)演練:高并發(fā)高可用的訂單系統(tǒng)
微服務(wù)架構(gòu)的6種設(shè)計模式
1.聚合模式
案例:電商網(wǎng)站購物功能的設(shè)計
?微服務(wù)前后端分離的設(shè)計
?分布式事務(wù)的兩階段提交
?TCC方案與阿里Seata
演練:運(yùn)用Seata實(shí)現(xiàn)微服務(wù)的分布式事務(wù)
?基于消息的最終一致性設(shè)計
演練:基于消息實(shí)現(xiàn)微服務(wù)的分布式事務(wù)
案例:電商網(wǎng)站下單服務(wù)的設(shè)計
單一職責(zé)原則與領(lǐng)域驅(qū)動設(shè)計
?互聯(lián)網(wǎng)縱向切分在微服務(wù)的實(shí)現(xiàn)
?縱向切分應(yīng)當(dāng)注意的設(shè)計問題
?解決跨庫關(guān)聯(lián)查詢的設(shè)計
演練:微服務(wù)間解決跨庫關(guān)聯(lián)查詢的設(shè)計
2.代理模式
案例:電商網(wǎng)站多渠道支付的微服務(wù)實(shí)現(xiàn)
3.鏈?zhǔn)侥J?/div>
4.分支模式
5.數(shù)據(jù)共享模式
案例:大數(shù)據(jù)與微服務(wù)結(jié)合的架構(gòu)設(shè)計
案例:電商網(wǎng)站海量訂單數(shù)據(jù)的秒級查詢
6.異步消息模式
案例:電商網(wǎng)站異步化操作的微服務(wù)實(shí)現(xiàn)
微服務(wù)的拆分原則
1.能不拆盡量不拆:減少微服務(wù)間的調(diào)用
2.該拆分就得拆分
1)公共模塊該拆分就得拆分
2)越來越復(fù)雜的模塊該拆分就得拆分
授課專家
【講師介紹】
范老師 獨(dú)立咨詢顧問,暢銷書籍《架構(gòu)真意》與《大話重構(gòu)》的作者,規(guī)模化敏捷
SPC。曾任航天信息首席架構(gòu)師,哈工大軟件工程碩士,軟件架構(gòu)及重構(gòu)的客座講師。從事軟件研發(fā)工作近二十年,并且現(xiàn)在一直堅守在大型軟件架構(gòu)設(shè)計一線工作。從需求分析、軟件開發(fā)到
項目管理、架構(gòu)設(shè)計都有豐富的從業(yè)經(jīng)驗(yàn)。先后參與了數(shù)十個國內(nèi)大型軟件項目,涉及國家財政、軍工、稅務(wù)、醫(yī)療等領(lǐng)域的大數(shù)據(jù)中臺建設(shè)、風(fēng)險防控與人工智能研究。互聯(lián)網(wǎng)轉(zhuǎn)型、微服務(wù)轉(zhuǎn)型及大數(shù)據(jù)轉(zhuǎn)型的實(shí)踐者與倡導(dǎo)者。同時,還是大型遺留系統(tǒng)改造專業(yè)戶,多次參與大型遺留系統(tǒng)改造、軟件系統(tǒng)重構(gòu)等重大項目,長期關(guān)注大型業(yè)務(wù)系統(tǒng)的品質(zhì)保證、防止腐化以及技術(shù)改造等困擾軟件企業(yè)的問題,在遺留系統(tǒng)優(yōu)化與改造方面有豐富的經(jīng)驗(yàn)。
程老師 中國科學(xué)院軟件研究所碩士,主要研究方向:架構(gòu)設(shè)計、項目管理實(shí)踐、大型高可用高并發(fā)架構(gòu)設(shè)計、微服務(wù)架構(gòu)、軟件測試等等。熟悉網(wǎng)絡(luò)分布式計算、數(shù)據(jù)庫、網(wǎng)絡(luò)操作系統(tǒng),精通J2EE、SQL、中間件服務(wù)器。在J2EE技術(shù)領(lǐng)域具有理論功底和實(shí)踐經(jīng)驗(yàn)。在J2ME商務(wù)應(yīng)用和基于J2ME游戲開發(fā)領(lǐng)域具有深厚的理論功底和豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。主要授課方向:DevOps落地實(shí)踐、微服務(wù)架構(gòu)、軟件構(gòu)架設(shè)計、UML、GO語言、OOAD、J2EE企業(yè)級高級應(yīng)用開發(fā)等。 擅長架構(gòu)企業(yè)級應(yīng)用;有獨(dú)立工作流引擎開發(fā)、企業(yè)系統(tǒng)應(yīng)用集成方面的豐富經(jīng)驗(yàn);在企業(yè)門戶(Portal)、報表、工作流引擎和企業(yè)服務(wù)總線(ESB)等應(yīng)用領(lǐng)域有深入的理論研究和充分的實(shí)踐;對軟件開發(fā)的整個流程有深刻認(rèn)識,有很好的協(xié)作精神和學(xué)習(xí)能力。在架構(gòu)下的系統(tǒng)設(shè)計和開發(fā)方面均有豐富經(jīng)驗(yàn)。能夠結(jié)合實(shí)際,在復(fù)雜的應(yīng)用環(huán)境中選擇適合的技術(shù)組合并合理利用開源中間件來降低項目開發(fā)風(fēng)險、縮短開發(fā)周期、提高應(yīng)用系統(tǒng)的可維護(hù)性和可擴(kuò)展性。
在線報名