帅哥在线免费观看大鸡鸡-国产自拍视频在线观看-中文字幕无码免费视频网站-激情综合色五月丁香六月亚洲-免费在线观看视频专区-久久久久久久久18禁秘-av网站在线播放网站-久久精品人妻少妇一区-国产极品久久久久久久久久

南京
杭州
上海
025-87787966    0571-88257871

DDD系統(tǒng)分析與建模

發(fā)布日期: 2020/6/5 11:26:36

課程大綱:
一、領(lǐng)域建模的方法
    1、領(lǐng)域建模:
      領(lǐng)域建模與設(shè)計(jì)的關(guān)系優(yōu)秀的軟件系統(tǒng)與好的軟件設(shè)計(jì)息息相關(guān),但最關(guān)鍵的還是在于對需求的理解。如果不能正確的理解軟件需求,那么再好的設(shè)計(jì)也不能設(shè)計(jì)出好的軟件。正確的做事情固然重要,更重要的是要做正確的事。然而,需求到設(shè)計(jì)存在巨大的鴻溝,因?yàn)樾枨笫钦驹跇I(yè)務(wù)角度來考慮,而設(shè)計(jì)往往會站在實(shí)現(xiàn)角度。領(lǐng)域建模就是為這二者搭建一個(gè)溝通與轉(zhuǎn)換的橋梁。
    2、統(tǒng)一語言(Ubiquitous Language):
      為了更好的理解需求,我們需要與領(lǐng)域?qū)<乙黄鹗崂砟繕?biāo)領(lǐng)域的統(tǒng)一語言,從而就領(lǐng)域術(shù)語達(dá)成一致,并有利于領(lǐng)域建模。
二、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)略設(shè)計(jì)
    1、限界上下文(Bounded Context):
      若要進(jìn)行領(lǐng)域建模,并將業(yè)務(wù)需求逐步演化為架構(gòu)設(shè)計(jì),則需要引入DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))的戰(zhàn)略設(shè)計(jì)作為指導(dǎo)。場景圖與限界上下文可以很好地結(jié)合,幫助架構(gòu)師更好地識別各個(gè)子領(lǐng)域的概念邊界與設(shè)計(jì)邊界。如此則可以運(yùn)用“分而治之”的思想識別出整個(gè)系統(tǒng)的業(yè)務(wù)邏輯邊界與物理邊界。
    2、場景驅(qū)動(dòng)設(shè)計(jì):
      場景驅(qū)動(dòng)設(shè)計(jì)的核心在于識別場景,它需要設(shè)計(jì)者結(jié)合具體的業(yè)務(wù)場景,分析業(yè)務(wù)流程,以此驅(qū)動(dòng)出用例;再以用例驅(qū)動(dòng)對業(yè)務(wù)邏輯的建模。場景驅(qū)動(dòng)設(shè)計(jì)的核心模型為6W模型,即Who,Why,When,What,Where與hoW。它將對應(yīng)職責(zé)模型的業(yè)務(wù)價(jià)值、業(yè)務(wù)功能與業(yè)務(wù)實(shí)現(xiàn),并從角色的角度思考對象之間的協(xié)作以及設(shè)計(jì)邊界。
    3、用例方法 (Use Case):
      通過利用傳統(tǒng)的用例方法來幫助我們驅(qū)動(dòng)出領(lǐng)域的限界上下文。
    4、上下文映射圖 (Context Map):
      限界上下文之間主要存在的組織模式與集成模式,這其中包括防腐層,開放服務(wù)調(diào)用等。利用上下文映射圖,有助于識別上下文之間的關(guān)系,思考處于上下文內(nèi)領(lǐng)域模型之間的通信方式,從而幫助架構(gòu)師驅(qū)動(dòng)出最終的應(yīng)用邏輯架構(gòu)。
三、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的架構(gòu)設(shè)計(jì)
    1、分層架構(gòu) (Layered Architecture):
      分層架構(gòu)模式是應(yīng)用最為廣泛的架構(gòu)模式,它根據(jù)關(guān)注點(diǎn)分離的架構(gòu)原則,針對表現(xiàn)層、領(lǐng)域?qū)雍突A(chǔ)設(shè)施層進(jìn)行層次分離。我們將從全新視角審視分層架構(gòu),針對大型軟件系統(tǒng)分析該如何進(jìn)行分層架構(gòu)設(shè)計(jì)。
    2、CQRSCQRS風(fēng)格:
      即命令查詢職責(zé)分離(CommandQuery Responsibility Segregation),它結(jié)合了消息處理、事件處理的架構(gòu)風(fēng)格,是對多種設(shè)計(jì)模式的綜合運(yùn)用,適用于處理讀寫比例高,需要支持可伸縮性的大型系統(tǒng)。
    3、事件驅(qū)動(dòng)架構(gòu) (Event-Driven Architecture):
      事件驅(qū)動(dòng)架構(gòu)(Event-DrivenArchitecture,EDA)是一種用于處理事件生成、發(fā)現(xiàn)和處理等任務(wù)的軟件架構(gòu)。事件往往對應(yīng)于軟件系統(tǒng)的狀態(tài)機(jī),狀態(tài)的遷移就是用事件來觸發(fā)的。因而,事件能夠很好地體現(xiàn)這樣的業(yè)務(wù)模型。同時(shí),基于事件的軟件架構(gòu)可以幫助我們更好地建立松散耦合的模塊化架構(gòu)。
四、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)術(shù)設(shè)計(jì)
    1、領(lǐng)域模型:
      通過限界上下文,可以幫助我們分析系統(tǒng)的領(lǐng)域模型,包括系統(tǒng)的核心領(lǐng)域與子領(lǐng)域。確定系統(tǒng)的核心領(lǐng)域與子領(lǐng)域可以幫助架構(gòu)師合理分配資源(包括時(shí)間資源與人力資源)。而對子領(lǐng)域的進(jìn)一步識別,可以幫助架構(gòu)師更好地識別可重用資源,包括可重用的功能模塊,確定技術(shù)棧,決定構(gòu)建還是購買的架構(gòu)戰(zhàn)略。
    2、四色建模法:
      首先以滿足管理和運(yùn)營的需要為前提,尋找需要追溯的事件。根據(jù)這些需要追溯,尋找足跡以及相應(yīng)的時(shí)標(biāo)性對象。尋找時(shí)標(biāo)對象周圍的人/事/物。從中抽象角色,把一些信息用描述對象補(bǔ)足。
    3、實(shí)體(Entity)與值對象(Value Object):
      這兩個(gè)概念都是領(lǐng)域?qū)ο蟮捏w現(xiàn),二者的主要區(qū)別在于對“標(biāo)識”的運(yùn)用。本部分的內(nèi)容深入展開對實(shí)體標(biāo)識的討論,揭示實(shí)體的本質(zhì)特征,挖掘?qū)嶓w的關(guān)鍵行為。通過識別角色與職責(zé)對實(shí)現(xiàn)進(jìn)行分析。我們還將通過深入講解值對象的特征幫助我們分辨值對象與實(shí)體,使得我們可以在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中有效地運(yùn)用實(shí)體與值對象。本部分內(nèi)容還包括持久化值對象,以及領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與ORM之間的關(guān)系。
    4、領(lǐng)域服務(wù) (Domain Service):
      通過講解什么是領(lǐng)域服務(wù),什么不是領(lǐng)域服務(wù)理清領(lǐng)域服務(wù)的概念,并講解如何建模領(lǐng)域服務(wù)。討論領(lǐng)域服務(wù)和面向接口設(shè)計(jì)思想。
    5、領(lǐng)域事件 (Domain Event):
      事件驅(qū)動(dòng)架構(gòu)的主要對象即為領(lǐng)域事件,我們要分清在何時(shí)以及為什么要使用領(lǐng)域事件,并對領(lǐng)域事件進(jìn)行建模。通過講解發(fā)布者-訂閱者模式講解如何在領(lǐng)域模型和限界上下文中發(fā)布領(lǐng)域事件。同時(shí),針對事件進(jìn)行存儲的EventSource也與CQRS架構(gòu)風(fēng)格直接相關(guān)。
   6、聚合 (Aggregation):
      聚合是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)最為重要的領(lǐng)域概念。我們將深入探討聚合的設(shè)計(jì)原則,并辨別在聚合設(shè)計(jì)中可能出現(xiàn)的壞味道,并提出針對性的解決方案。這些原則和方案包括:在一致性邊界之內(nèi)建模真正的不變量,設(shè)計(jì)小的聚合,通過唯一標(biāo)識引用其他聚合,在邊界外滿足最終一致性。
   7、工廠(Factory)和資源庫(Repository):
      工廠和資源庫都是管理領(lǐng)域?qū)ο螅▽?shí)體、值對象和服務(wù))生命周期的對象。工廠主要針對內(nèi)存中對象從無到有的創(chuàng)建過程,與設(shè)計(jì)模式的工廠模式基本相似。資源庫則分為面向集合的資源庫與面向持久化的資源庫。我們將重點(diǎn)講解與資源庫直接相關(guān)的技術(shù)細(xì)節(jié),包括如何選擇資源庫的方式,如何針對聚合持久化資源庫,如何管理事務(wù),以及分辨資源庫與數(shù)據(jù)訪問對象(DAO)之間的異同。
   8、應(yīng)用層(Application Layer)設(shè)計(jì):
      為UI提供的應(yīng)用服務(wù),其目的在于管理和協(xié)調(diào)領(lǐng)域?qū)ο螅轭I(lǐng)域?qū)ο筇峁M切關(guān)注點(diǎn)的內(nèi)容。好的應(yīng)用服務(wù)設(shè)計(jì)不應(yīng)該承擔(dān)任何與領(lǐng)域邏輯有關(guān)的職責(zé)。應(yīng)用層是架構(gòu)層面的外觀與適配器模式的體現(xiàn)。它可以提高軟件系統(tǒng)架構(gòu)的可用性與簡單性,也能夠更好地與面向服務(wù)架構(gòu)或RESTful架構(gòu)風(fēng)格結(jié)合。
五、項(xiàng)目實(shí)踐演練
   1、案例名稱:基于多租戶的社交網(wǎng)絡(luò)系統(tǒng)以及項(xiàng)目管理系統(tǒng)的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
      這是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)過程的完整案例分析,從需求開始著手,開展對整個(gè)系統(tǒng)的架構(gòu)分析、領(lǐng)域概念識別與分析,并對建立的領(lǐng)域模型進(jìn)行迭代與演化,核心領(lǐng)域概念的演進(jìn),掃清領(lǐng)域設(shè)計(jì)過程中的認(rèn)知障礙,并總結(jié)了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)過程的一些經(jīng)驗(yàn)教訓(xùn)。
項(xiàng)目中包含了真實(shí)的案例需求,以及符合領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)各種知識點(diǎn)的案例病癥分析,從對比入手來探討好的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)方法。同時(shí),還將引入大量的可視化圖形、設(shè)計(jì)圖與代碼幫助學(xué)員理解如何在真實(shí)項(xiàng)目中運(yùn)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想,指導(dǎo)設(shè)計(jì)人員進(jìn)行良好的設(shè)計(jì)。

相關(guān)培訓(xùn)課程

TRAINING COURSE
無標(biāo)題文檔