国产午夜精品一区二区,久久午夜无码鲁丝片午夜精品,黑色午夜,午夜福利视频,电家庭影院午夜 精品久久久鲁鲁,精品人妻一区二区三区在线潮喷,天堂网极品盛宴视频,欧美激情一级在线观看

全國 [城市選擇] [會員登錄] [講師注冊] [機構(gòu)注冊] [助教注冊]  
中國企業(yè)培訓講師
領(lǐng)域驅(qū)動設(shè)計與實踐——軟件核心復雜性應對之道
2025-07-30 00:08:06
 
講師:曾老師 瀏覽次數(shù):66

課程描述INTRODUCTION

· 項目經(jīng)理· 技術(shù)總監(jiān)· 技術(shù)主管· 軟件工程師· 產(chǎn)品經(jīng)理

培訓講師:曾老師    課程價格:¥3980元/人    培訓天數(shù):2天   

日程安排SCHEDULE

2025-08-31 深圳

課程大綱Syllabus

課程背景
領(lǐng)域驅(qū)動設(shè)計(Domai  Drive  Desig ,DDD)自誕生以來已有十幾年時間,它是針對復雜系統(tǒng)設(shè)計的一套軟件工程方法。由于面向?qū)ο蠓治雠c設(shè)計(OOA/OOD)的廣泛應用,并且與前期需求分析和后期系統(tǒng)開發(fā)有機銜接,在行業(yè)產(chǎn)生廣泛的影響,具有深遠的指導意義。但是,由于軟件的復雜度越來越龐雜和微服務(wù)的興起,領(lǐng)域驅(qū)動設(shè)計通過分而治之控制軟件規(guī)模,即一個大型復雜軟件都是由一個或多個微服務(wù)組成的,系統(tǒng)中的每個微服務(wù)可被獨立部署,微服務(wù)之間松耦合,且每個微服務(wù)只關(guān)注完成自己的任務(wù)并很好地完成任務(wù)。所以,領(lǐng)域驅(qū)動設(shè)計的思想和微服務(wù)架構(gòu)風格的融合,從而指導復雜業(yè)務(wù)需求的軟件系統(tǒng)的設(shè)計、開發(fā)與維護,降低了系統(tǒng)業(yè)務(wù)分析的復雜度和技術(shù)實現(xiàn)的難度。
隨著業(yè)務(wù)領(lǐng)域的知識體系的龐大和復雜,業(yè)務(wù)處理邏輯或業(yè)務(wù)規(guī)則業(yè)隨之復雜、難于理解、難于清晰的表達等,并且其中夾雜的大量信息與軟件需要解決的問題無關(guān)。所以,在復雜系統(tǒng)設(shè)計方面存在如下主要問題:
  規(guī)模造就的復雜度:隨著需求的變化,系統(tǒng)規(guī)模會不斷擴張,軟件復雜度也不斷增長,除了需求功能本身的增加,還有功能之間的聯(lián)系變的牽一發(fā)而動全身,并且這個復雜度的增長往往是指數(shù)級的趨勢,這樣造成了軟件相關(guān)人員需要掌握大量信息,提升自己對業(yè)務(wù)需求和軟件的理解。
  結(jié)構(gòu)造就的復雜度:為了滿足非功能性質(zhì)量需求,例如高性能,高并發(fā)和高可靠性,在系統(tǒng)中引入緩存、并發(fā)處理、異步消息、海量數(shù)據(jù)的分布式存儲和高效分布式計算等讓系統(tǒng)在結(jié)構(gòu)上變得復雜;為了保持系統(tǒng)有序,提高代碼可維護性,利用分層架構(gòu)達到不同層次職責分離,設(shè)計的方案在架構(gòu)上帶來了溝通成本的增加和管理上的困難;為了降低業(yè)務(wù)復雜度,拆分不同的子領(lǐng)域,往往因守不住領(lǐng)域的邊界而喪失了拆分的價值,系統(tǒng)結(jié)構(gòu)會變的越來越混亂,會讓軟件的修改變得不確定。
  變化造就的復雜度:在設(shè)計軟件系統(tǒng)時,設(shè)計人員是無法完全預測系統(tǒng)的變化,一方面可能過于考慮變化的影響,過度的設(shè)計付出的成本就是浪費,另一方面,如果不對變化做任何的預測,又因不停的變化而不斷的付出較大研發(fā)成本。

課程收益
  面對大型復雜業(yè)務(wù)系統(tǒng)設(shè)計思想和設(shè)計理念的提升;
  傳統(tǒng)的軟件系統(tǒng)設(shè)計分析方法(OOA/OOD)的優(yōu)點和存在的問題;
  領(lǐng)域驅(qū)動設(shè)計的重點和難點,以及它解決問題的方法和過程;
  從領(lǐng)域問題到領(lǐng)域解決方案,全過程每個節(jié)點步驟的思想和方法;
  領(lǐng)域驅(qū)動設(shè)計中,上下文切分的思路,微服務(wù)關(guān)鍵問題的思考;
  領(lǐng)域驅(qū)動建模中,從分析建模→設(shè)計建模→實現(xiàn)建模的技術(shù)手段和思路。

參訓對象:研發(fā)總監(jiān)、研發(fā)經(jīng)理/項目經(jīng)理/技術(shù)經(jīng)理/產(chǎn)品經(jīng)理、系統(tǒng)工程師、軟件研發(fā)高級程序員、產(chǎn)品規(guī)劃專員

課程大綱
1 領(lǐng)域驅(qū)動設(shè)計--歷史背景
當前軟件系統(tǒng)開發(fā)面對的難題:系統(tǒng)需求的不確定性和易變性,以及系統(tǒng)的復雜性。
⑴ 當前存在的問題是什么?
系統(tǒng)的復雜性:問題的復雜性、實現(xiàn)的靈活性、行為描述的隨意性和管理開發(fā)過程的困難性;
⑵ 領(lǐng)域驅(qū)動設(shè)計的目標是什么?
軟件復雜性的應對之道:大型復雜業(yè)務(wù)系統(tǒng)分而治之的思想!
  規(guī)模--通過分而治之控制規(guī)模;
  結(jié)構(gòu)--通過邊界保持清晰有序;
  變化--順應變化方向。
⑶ 領(lǐng)域驅(qū)動設(shè)計的方法是什么?
領(lǐng)域驅(qū)動設(shè)計的策略:大型復雜業(yè)務(wù)系統(tǒng)的領(lǐng)域建模方法體系!
  規(guī)模--以子領(lǐng)域、限界上下文對問題空間與解空間分而治之;
  結(jié)構(gòu)--以分層架構(gòu)隔離業(yè)務(wù)復雜度與技術(shù)復雜度,形成清晰的架構(gòu);
  變化--經(jīng)領(lǐng)域抽象,以聚合為核心的領(lǐng)域建模,響應需求變化。

2 領(lǐng)域驅(qū)動設(shè)計--設(shè)計思想
講述領(lǐng)域驅(qū)動設(shè)計基本概念、主要內(nèi)容、設(shè)計思想和設(shè)計過程,準確領(lǐng)悟領(lǐng)域驅(qū)動的戰(zhàn)略設(shè)計和戰(zhàn)術(shù)設(shè)計的內(nèi)容及關(guān)系。
⑴ 領(lǐng)域驅(qū)動的概念、歷史根源和智慧;
⑵ 領(lǐng)域驅(qū)動的問題和步驟(六個問題和六個步驟);
⑶ 領(lǐng)域模型的概念和主要思想;
⑷ 領(lǐng)域驅(qū)動設(shè)計的主要內(nèi)容和過程;
⑸ 準確領(lǐng)悟領(lǐng)域驅(qū)動的戰(zhàn)略設(shè)計和戰(zhàn)術(shù)設(shè)計,以及戰(zhàn)略和戰(zhàn)術(shù)的關(guān)系。

3 領(lǐng)域驅(qū)動設(shè)計--全局分析
全局分析的目標就是確定問題空間,在統(tǒng)一語言的指導下,通過各種可視化手段,由領(lǐng)域?qū)<遗c團隊一起完成對問題空間的探索,幫助領(lǐng)域驅(qū)動設(shè)計對準問題,輸出價值需求和業(yè)務(wù)需求。
價值需求既是目標系統(tǒng)的目標,也是對目標系統(tǒng)問題空間的界定和約束,它指導著業(yè)務(wù)需求分析。
業(yè)務(wù)需求由動態(tài)的業(yè)務(wù)流程和靜態(tài)的業(yè)務(wù)活動組成,二者的結(jié)合依靠業(yè)務(wù)場景按照時間點和業(yè)務(wù)目標對業(yè)務(wù)流程的切分。
通過運用商業(yè)模式畫布,可以獲得組成價值需求的利益相關(guān)者、系統(tǒng)愿景和系統(tǒng)范圍。
業(yè)務(wù)流程梳理可以幫助團隊對問題空間的各條業(yè)務(wù)線構(gòu)成一個整體認識,弄清楚各種角色如何參與到一個完整的流程中,流程的時序性也可以避免識別業(yè)務(wù)活動時可能出現(xiàn)的缺失。
業(yè)務(wù)流程圖與服務(wù)藍圖以可視化的方式形象地呈現(xiàn)每一個提供了業(yè)務(wù)價值的業(yè)務(wù)流程。
業(yè)務(wù)活動是角色與目標系統(tǒng)之間的一次功能性交互,是體現(xiàn)了服務(wù)價值的功能行為。
一直以來,該如何確定業(yè)務(wù)需求層次,劃分業(yè)務(wù)需求粒度,總是眾說紛紜,沒有一個客觀的標準;業(yè)務(wù)活動將目標系統(tǒng)視為一個黑盒子,從功能性交互的完整性保證了每個業(yè)務(wù)活動都是正交的,就無需再考慮業(yè)務(wù)活動的層次和粒度,或者說,只要確定了完整性,保障了正交性,業(yè)務(wù)活動的層次與粒度也就確定下來了。
業(yè)務(wù)活動可以使用用例、用戶故事或事件風暴中的事件來表達。
業(yè)務(wù)活動是全局分析階段的基本業(yè)務(wù)單元,它的輸出對于架構(gòu)映射與領(lǐng)域建模具有重要意義:
  架構(gòu)映射:業(yè)務(wù)活動是識別限界上下文、確定上下文映射的基礎(chǔ),同時,它的粒度正好對應每個限界上下文向外公開的服務(wù)契約;
  領(lǐng)域模型:業(yè)務(wù)需求分析細化的業(yè)務(wù)活動既是領(lǐng)域分析建模的重要參考,同時又作為服務(wù)場景成為場景驅(qū)動設(shè)計的起點。
全局分析是領(lǐng)域驅(qū)動設(shè)計統(tǒng)一過程的起點,它的目的是探索問題空間,使團隊就問題空間的價值需求和業(yè)務(wù)需求達成共識,并在統(tǒng)一語言的指導下將其清晰地呈現(xiàn)出來。只有問題定義清楚了,團隊才能更好地尋求解決方案。

4 領(lǐng)域驅(qū)動設(shè)計--架構(gòu)映射
⑴ 軟件架構(gòu)及映射概念
  介紹軟件架構(gòu)的概念定義。
  軟件架構(gòu)模式:
MVC架構(gòu)、分層架構(gòu)、DCI架構(gòu)、CQRS架構(gòu)、微服務(wù)分布式架構(gòu)等。
  架構(gòu)映射
架構(gòu)映射成為獲得架構(gòu)設(shè)計的主要設(shè)計手段。價值需求的利益相關(guān)者、系統(tǒng)愿景和系統(tǒng)范圍可映射系統(tǒng)上下文;業(yè)務(wù)服務(wù)的歸類和歸納可映射為限界上下文,系統(tǒng)上下文與限界上下文共同組成系統(tǒng)架構(gòu)的重要層次,前者勾勒出解空間的控制邊界,后者勾勒出領(lǐng)域模型的知識邊界,組成了一個穩(wěn)定而又具有演進能力的領(lǐng)域驅(qū)動架構(gòu)。
⑵ 系統(tǒng)上下文
系統(tǒng)上下文:以目標系統(tǒng)為核心,勾勒出用戶、目標系統(tǒng)和伴生系統(tǒng)之間的關(guān)系。
系統(tǒng)上下文的確定
  價值需求的中利益相關(guān)者可以充當系統(tǒng)上下文的用戶。
  系統(tǒng)的范圍可以幫助界定系統(tǒng)解空間的邊界,劃分目標系統(tǒng)和伴生系統(tǒng)。
  結(jié)合系統(tǒng)愿景進行判斷,與愿景不相匹配的功能和業(yè)務(wù)不考慮。
⑶ 限界上下文
限界上下文是領(lǐng)域驅(qū)動設(shè)計中最難解析的原則,但也是最重要的原則??梢哉f,沒有限界上下文,就不能做好領(lǐng)域驅(qū)動設(shè)計。
對復雜系統(tǒng)進行分析或者綜合時可以運用的方法:自頂向下和自底向上。
限界上下文識別的步驟:分析和歸納
  業(yè)務(wù)知識的歸類
  業(yè)務(wù)知識的歸納
  業(yè)務(wù)主體的邊界梳理
  呈現(xiàn)限界上下文
⑷ 上下文映射
領(lǐng)域驅(qū)動設(shè)計強調(diào)通過深入理解業(yè)務(wù)領(lǐng)域,將業(yè)務(wù)模型從業(yè)務(wù)專家的角度抽象出來。然后,在應用中貫穿地使用這些模型,使開發(fā)人員和業(yè)務(wù)專家能夠更好地協(xié)同合作。
通過問題空間到解空間獲得業(yè)務(wù)維度的限界上下文,同時還要確定上下文與業(yè)務(wù)服務(wù)之間的映射關(guān)系,這對設(shè)計服務(wù)契約是限界文之間的協(xié)作關(guān)系,在領(lǐng)域分析建模時確定領(lǐng)域模型與限界上下文的關(guān)系。
上下文映射圖的可視化呈現(xiàn)只是一種形式,重要是限界上下文的協(xié)作模式,它們組成上下文映射模型。限界上下文之間的映射模式:客戶方/供應方、遵奉者、合作關(guān)系、共享內(nèi)核、防腐層、開放主機服務(wù)、發(fā)布語言、分離方式、大泥球模式。
⑸ 服務(wù)契約設(shè)計
服務(wù)契約:在全局分析階段輸出的業(yè)務(wù)需求稱之為業(yè)務(wù)服務(wù),業(yè)務(wù)服務(wù)滿足了角色的服務(wù)請求,在解空間體現(xiàn)為服務(wù)與客戶的協(xié)作關(guān)系,形成的協(xié)作接口可稱之契約。
服務(wù)契約:消息契約、服務(wù)資源契約、服務(wù)行為契約、服務(wù)事件契約。
應用服務(wù)與領(lǐng)域服務(wù)之間:領(lǐng)域?qū)优c應用界面之間引入應用層,應用層盡量簡單,不包含業(yè)務(wù)規(guī)則或者知識,只為領(lǐng)域?qū)又械念I(lǐng)域?qū)ο髤f(xié)調(diào)任務(wù),分配工作,使它們互相協(xié)作;簡單理解:“應用層只負責提問,不負責回答;領(lǐng)域?qū)佑肋h只負責回答。”應用層定義的應用服務(wù)是外觀模式的體現(xiàn)。
⑹ 領(lǐng)域驅(qū)動架構(gòu)
領(lǐng)域驅(qū)動架構(gòu)是針對領(lǐng)域驅(qū)動設(shè)計的一種架構(gòu)風格。它以領(lǐng)域為核心驅(qū)動力,以業(yè)務(wù)能力為核心關(guān)注點,建立目標系統(tǒng)的結(jié)構(gòu)解決方案。其核心模型為系統(tǒng)上下文與限界上下文,并以它們?yōu)檫吔纾纬筛髯缘募軜?gòu)模式:系統(tǒng)分層架構(gòu)和菱形架構(gòu)模式。
領(lǐng)域驅(qū)動架構(gòu):領(lǐng)域驅(qū)動設(shè)計建立的一種架構(gòu)風格。
  以領(lǐng)域為核心驅(qū)動力,以業(yè)務(wù)能力為核心關(guān)注點,建立目標系統(tǒng)解決方案。
  領(lǐng)域模型為驅(qū)動的核心關(guān)注點進行縱向切分自治單元。
  核心元模型以系統(tǒng)上下文與限界上下文為邊界,形成各自架構(gòu)模式:分層架構(gòu)和菱形對稱架構(gòu)。
  限界上下文是架構(gòu)映射階段的基本單元,每個限界上下文是一個自治的獨立王國(微服務(wù))。 

5 領(lǐng)域驅(qū)動設(shè)計--領(lǐng)域建模
領(lǐng)域建模的過程是模型驅(qū)動設(shè)計的過程,領(lǐng)域建模的分析、設(shè)計和實現(xiàn)是循序漸進的增量和迭代的過程。
  利用抽象化繁為簡,通過標準的結(jié)構(gòu)來組織和傳遞信息,形成可推演的解決方案。
  解決信息超載問題的工具,對知識進行了選擇性的簡化和有意的結(jié)構(gòu)化。
  模型的重要性并不體現(xiàn)在它表現(xiàn)形式,重要是在于它傳遞的知識。 
⑴ 模型驅(qū)動設(shè)計
模型驅(qū)動設(shè)計就是把產(chǎn)品需求轉(zhuǎn)化成一個可以運行的系統(tǒng),涉及產(chǎn)品設(shè)計、領(lǐng)域建模、架構(gòu)設(shè)計、詳細設(shè)計、代碼編寫、測試等步驟。DDD的基本過程進一步展開來說,大體是以下三點:
  在理解產(chǎn)品需求的基礎(chǔ)上,從中提取出核心概念,然后建立起核心概念的邏輯結(jié)構(gòu),概念的邏輯結(jié)構(gòu)即領(lǐng)域模型,領(lǐng)域模型以一種抽象的視角來理解復雜業(yè)務(wù),但也僅僅是理解業(yè)務(wù)。
  有了領(lǐng)域模型,也有了系統(tǒng)架構(gòu),到了這一步通常還不能直接開始編碼,一般會對系統(tǒng)架構(gòu)中的各個模塊進行詳細,比如模塊的流程是什么,數(shù)據(jù)結(jié)構(gòu)怎么設(shè)計、DB數(shù)據(jù)表怎么設(shè)計等。
  要用代碼搭建起一套可運行的系統(tǒng)。從領(lǐng)域模型到代碼,通常不能一步跨越,中間需要通過系統(tǒng)架構(gòu)來銜接。把領(lǐng)域模型映射為系統(tǒng)架構(gòu),這是至關(guān)重要的一步。簡單來說,一般都采用分層微服務(wù)架構(gòu),架構(gòu)映射即是把領(lǐng)域模型中的概念分解到架構(gòu)中的各層。
⑵ 領(lǐng)域分析建模
對于一個復雜的軟件系統(tǒng),必須對問題系統(tǒng)展開分析,有的放矢這對軟件系統(tǒng)需求尋求設(shè)計上的解決方案。在戰(zhàn)略設(shè)計階段采用“全局分析”和“架構(gòu)映射”,在戰(zhàn)術(shù)層面,領(lǐng)域驅(qū)動設(shè)計要求分析方法就是要以“領(lǐng)域”為中心展開分析建模,獲得領(lǐng)域分析模型。這個過程是以領(lǐng)域?qū)<抑鲗Вc開發(fā)團隊一起共同進行分析建模,以戰(zhàn)略分析為基礎(chǔ)(系統(tǒng)上下文和限界上下文),再進行戰(zhàn)術(shù)設(shè)計(領(lǐng)域分析模型)。
領(lǐng)域驅(qū)動設(shè)計的關(guān)鍵是采取合理的方式對領(lǐng)域進行建模,也就是將物理世界的業(yè)務(wù)映射到軟件系統(tǒng)產(chǎn)品中,最終使得軟件產(chǎn)品能夠承載實際的業(yè)務(wù)??梢詮娜缦聨讉€方面來進行領(lǐng)域建模:
⑶ 領(lǐng)域設(shè)計建模
領(lǐng)域設(shè)計建模:它的核心工作就是設(shè)計聚合和設(shè)計服務(wù),最關(guān)鍵的設(shè)計要素(實體、值對象、領(lǐng)域服務(wù)、領(lǐng)域事件、聚合、工廠、資源庫)。領(lǐng)域驅(qū)動設(shè)計從不忽略技術(shù)因素對模型的影響,它引入戰(zhàn)術(shù)層面設(shè)計元模型,將技術(shù)與領(lǐng)域模型結(jié)合,避免空談對象模型的理想。
領(lǐng)域設(shè)計模型:只能由實體、值對象、領(lǐng)域服務(wù)和領(lǐng)域事件表示模型,避免將領(lǐng)域邏輯泄漏到領(lǐng)域?qū)油獾钠渌胤健?br />   聚合用于封裝實體和值對象,并維持自己邊界內(nèi)所有對象的完整性。
  要訪問聚合,只能通過聚合根的資源庫,這就隱式地劃定了邊界和入口,有效控制了聚合內(nèi)所有類型的領(lǐng)域?qū)ο螅?br />   若聚合創(chuàng)建的邏輯較為復雜或存在可變性,可引入工廠來創(chuàng)建聚合內(nèi)的領(lǐng)域?qū)ο蟆?br />   若牽涉到實體的狀態(tài)變更,領(lǐng)域源模型建議通過領(lǐng)域事件來驅(qū)動。
設(shè)計框架總體結(jié)構(gòu)采用領(lǐng)域驅(qū)動設(shè)計的分層架構(gòu),但不同的是該結(jié)構(gòu)嚴格遵循分層架構(gòu)的基本原則,不允許用戶界面層越過應用層直接接觸領(lǐng)域?qū)印S捎陬I(lǐng)域?qū)邮穷I(lǐng)域驅(qū)動設(shè)計的核心,而其它層經(jīng)常在各類分層架構(gòu)中出現(xiàn),已經(jīng)有了比較成熟的設(shè)計方法。因此,分層架構(gòu)框架主要討論領(lǐng)域?qū)右约芭c領(lǐng)域?qū)用芮?相關(guān)的數(shù)據(jù)訪問模塊的設(shè)計。領(lǐng)域?qū)邮歉鶕?jù)不同實際領(lǐng)域,利用統(tǒng)一編碼規(guī)則實現(xiàn)的動態(tài)結(jié)構(gòu),又可分為聚合模塊、工廠模塊和倉儲模塊三部分。數(shù)據(jù)訪問模塊屬于基礎(chǔ)結(jié)構(gòu)層,是封裝好的靜態(tài)模塊。
⑷ 領(lǐng)域?qū)崿F(xiàn)建模
代碼架構(gòu)分層是經(jīng)典領(lǐng)域驅(qū)動設(shè)計的四層:用戶接口層,應用層,領(lǐng)域?qū)雍突A(chǔ)設(shè)施層。 
  用戶接口層:面向前端用戶提供服務(wù)和數(shù)據(jù)適配。這一層聚集了接口和數(shù)據(jù)適配相關(guān)的功能。
  應用層:實現(xiàn)服務(wù)組合與編排,主要適應業(yè)務(wù)流程快速變化的需求。這一層聚集了應用服務(wù)和時間訂閱相關(guān)的功能。
  領(lǐng)域?qū)樱簩崿F(xiàn)領(lǐng)域模型的聚合、聚合根、實體、值對象、領(lǐng)域服務(wù)和領(lǐng)域事件對象的協(xié)同和組合形成領(lǐng)域模型的核心業(yè)務(wù)能力。
  基礎(chǔ)設(shè)施層:它貫穿所有層,為各層提供基礎(chǔ)資源服務(wù)。這一層聚集了各種底層資源相關(guān)的服務(wù)和能力。

6 領(lǐng)域驅(qū)動設(shè)計--案例分析
展示和講解5個項目案例


轉(zhuǎn)載:http://www.caprane.cn/gkk_detail/324388.html

已開課時間Have start time

在線報名Online registration

    參加課程:領(lǐng)域驅(qū)動設(shè)計與實踐——軟件核心復雜性應對之道

    單位名稱:

  • 參加日期:
  • 聯(lián)系人:
  • 手機號碼:
  • 座機電話:
  • QQ或微信:
  • 參加人數(shù):
  • 開票信息:
  • 輸入驗證:  看不清楚?點擊驗證碼刷新
付款信息:
開戶名:上海投智企業(yè)管理咨詢有限公司
開戶行:中國銀行股份有限公司上海市長壽支行
帳號:454 665 731 584