公開課 內(nèi)訓課 培訓師
首頁 公開課 內(nèi)訓課 特惠課程 培訓師 培訓專題 在線文檔 管理名言 會員專區(qū) 積分兌換 聯(lián)系我們 關于我們 誠聘英才     
首頁 >> 公開課 >> 研發(fā)項目 >> 領域驅動設計
領域驅動設計 下載課程WORD文檔
添加時間:2015-05-05      修改時間: 2015-05-05      課程編號:100279249
《領域驅動設計》課程詳情
點擊下載課大綱及報名表
課程目標
需求分析人員和領域專家無法與團隊的設計人員和開發(fā)人員進行有效溝通。需求分析人員不了解軟件設計,軟件設計人員常常會曲解需求內(nèi)容,這是軟件開發(fā)中容易出現(xiàn)的第一病癥。它帶來的后果是設計頻繁變更,設計的軟件不滿足客戶需求。

需求分析雖然明白無誤,設計人員卻無法準確地抽象領域模型,從而不能開展有效的軟件設計,這是軟件開發(fā)中容易出現(xiàn)的第二病癥。它帶來的后果是設計質量糟糕,開發(fā)的代碼不具有良好的可讀性,增加了軟件的開發(fā)與維護成本。

系統(tǒng)的業(yè)務需求復雜多變,設計人員卻總是喜歡從實現(xiàn)角度以及數(shù)據(jù)庫層面思考業(yè)務問題,這是軟件開發(fā)中容易出現(xiàn)的第三病癥。它會導致開發(fā)的系統(tǒng)過于復雜,且可擴展性差,無法有效應對需求發(fā)生的變化。

本次培訓的內(nèi)容——領域驅動設計正好是解決這三種常見病癥的最佳藥方。

培訓特色
思想為體,方法為用,貫徹卓越軟件設計之精神,而非流于表面形式;
提倡開放的設計觀,不局限于一種設計方法學,而是融匯貫通,取長補短;

重視案例分析與實踐,提倡動手實驗,而非單純以講授性質的培訓;通過真實案例的演練,熟悉開發(fā)過程與設計方法;

采用最新的領域驅動設計思想與方法,并輔以可視化的設計手段,以工作坊的形式開展培訓,以便于學員更好地理解領域驅動設計;

編碼與設計,二者不可偏廢。沒有優(yōu)秀的個人設計能力,團隊就會成為無根之木,無法保證軟件的高質量。必須幫助團隊的每個人都能熟練運用領域驅動的分析與設計能力,才能保證生產(chǎn)力的高效;


課程大綱
第一單元 領域建模的方法
1、領域建模與設計的關系
優(yōu)秀的軟件系統(tǒng)與好的軟件設計息息相關,但最關鍵的還是在于對需求的理解。如果 不能正確的理解軟件需求,那么再好的設計也不能設計出好的軟件。正確的做事情固然重要,更重要的是要做正確的事。然而,需求到設計存在巨大的鴻溝,因為需求是站在業(yè)務角度來考慮,而設計往往會站在實現(xiàn)角度。領域建模就是為這二者搭建一個溝通與轉換的橋梁。
2、領域建模從需求開始
為了更好的理解需求,我們可以從需求畫布開始,充分理解參與軟件系統(tǒng)的角色、功能、價值等內(nèi)容,以便于整個團隊更為深入地理解需求,達成一致認識。
演練:繪制商業(yè)需求畫布
3、場景驅動設計模型
場景驅動設計的核心在于識別場景,它需要設計者結合具體的業(yè)務場景,分析業(yè)務流 程,以此驅動出用例;再以用例驅動對業(yè)務邏輯的建模。場景驅動設計的核心模型為6W模型,即Who,Why,When,What,Where與hoW。它 將對應職責模型的業(yè)務價值、業(yè)務功能與業(yè)務實現(xiàn),并從角色的角度思考對象之間的協(xié)作以及設計邊界。
演練:繪制場景圖

第二單元 領域驅動設計的戰(zhàn)略設計
1、限界上下文
若要進行領域建模,并將業(yè)務需求逐步演化為架構設計,則需要引入DDD(領域驅 動設計)的戰(zhàn)略設計作為指導。場景圖與限界上下文可以很好地結合,幫助架構師很好地識別各個子領域的概念邊界與設計邊界。如此則可以運用“分而治之”的思想識別出整個系統(tǒng)的業(yè)務邏輯邊界與物理邊界。
可視化演練:識別電子商務系統(tǒng)的限界上下文
2、領域模型
通過限界上下文,可以幫助我們分析系統(tǒng)的領域模型,包括系統(tǒng)的核心領域與子領 域。確定系統(tǒng)的核心領域與子領域可以幫助架構師合理分配資源(包括時間資源與人力資源)。而對子領域的進一步識別,可以幫助架構師更好地識別可重用資源,包括可重用的功能模塊,確定技術棧,決定構建還是購買的架構戰(zhàn)略。
3、四色建模法
首先以滿足管理和運營的需要為前提,尋找需要追溯的事件。根據(jù)這些需要追溯,尋找足跡以及相應的時標性對象。尋找時標對象周圍的人/事/物。從中抽象角色,把一些信息用描述對象補足。
案例分析:配送管理系統(tǒng)的四色建模
4、上下文映射圖
本部分內(nèi)容會講解限界上下文之間主要存在的組織模式與集成模式,這其中包括防腐層,開放服務調用等。利用上下文映射圖,有助于識別上下文之間的關系,思考處于上下文內(nèi)領域模型之間的通信方式,從而幫助架構師驅動出最終的應用邏輯架構。
可視化演練:電子商務系統(tǒng)的應用邏輯架構

第三單元 領域驅動設計的架構設計
1、分層架構
分層架構模式是應用最為廣泛的架構模式,它根據(jù)關注點分離的架構原則,針對表現(xiàn)層、領域層和基礎設施層進行層次分離。本次培訓將以全新視角審視分層架構,針對大型軟件系統(tǒng)分析該如何進行分層架構設計。
案例分析:網(wǎng)上銀行的分層架構,根據(jù)最基本的業(yè)務流程對系統(tǒng)進行關注點分離,繪制系統(tǒng)的分層架構,并通過時序圖展現(xiàn)各層之間的協(xié)作。
2、六邊形架構
雖然分層架構仍然是運用最為廣泛的架構模式,同時更是諸多架構模式的基礎,但它 已不足以描述越來越復雜的分布式系統(tǒng)架構。由Cockburn提出的六邊形架構(Hexagonal Architecture)是一種具有對稱性特征的架構風格。在這種架構中,不同的客戶通過“平等”的方式與系統(tǒng)交互。該架構中存在兩個區(qū)域,分別是“外部區(qū)域”和“內(nèi)部區(qū)域”。這種界定了明確內(nèi)外邊界的架構風格,更有利于架構師實現(xiàn)關注點分離,并將關注重心放在適配器與通信端口上。
演練:六邊形架構的通信邊界
案例:大型金融系統(tǒng)的客戶管理
3、CQRS
CQRS風格,即命令查詢職責分離(Command Query ResponsibilitySegregation),它結合了消息處理、事件處理的架構風格,是對多種設計模式的綜合運用,適用于處理讀寫比例高,需要支持可伸縮性的大型系統(tǒng)。
案例:AxonFramework對CQRS的支持
4、事件驅動架構
事件驅動架構(Event-Driven Architecture,EDA)是一種用于處理事件生成、發(fā)現(xiàn)和處理等任務的軟件架構。事件往往對應于軟件系統(tǒng)的狀態(tài)機,狀態(tài)的遷移就是用事件來觸發(fā)的。因而,事件能夠很好地體現(xiàn)這樣的業(yè)務模型。同時,基于事件的軟件架構可以幫助我們更好地建立松散耦合的模塊化架構。

第四單元 領域驅動設計的戰(zhàn)術設計
1、領域驅動設計的專用術語
領域驅動設計的一個特點是針對領域層,提出了統(tǒng)一的設計術語,包括關聯(lián)、實體、值對象、聚合、服務、模塊。注意區(qū)分它與傳統(tǒng)業(yè)務層設計在概念上的區(qū)別。甄別這些概念之間的區(qū)別,有利于我們正確地運用領域驅動設計。
整體而言,領域驅動設計的這些術語涵蓋了領域對象的整個生命周期,包括領域對象從創(chuàng)建、存儲、重建、歸檔、修改到刪除的整個生命周期。
2、實體與值對象
這兩個概念都是領域對象的體現(xiàn),二者的主要區(qū)別在于對“標識”的運用。本部分的內(nèi)容深入展開對實體標識的討論,揭示實體的本質特征,挖掘實體的關鍵行為。通過識別角色與職責對實現(xiàn)進行分析。
本部分內(nèi)容還將通過深入講解值對象的特征幫助我們分辨值對象與實體,使得我們可以在領域驅動設計中有效地運用實體與值對象。本部分內(nèi)容還包括持久化值對象,以及領域驅動設計與ORM之間的關系。
3、領域服務
通過講解什么是領域服務,什么不是領域服務理清領域服務的概念,并講解如何建模領域服務。討論領域服務和面向接口設計思想。
4、領域事件
事件驅動架構的主要對象即為領域事件,我們要分清在何時以及為什么要使用領域事件,并對領域事件進行建模。通過講解發(fā)布者-訂閱者模式講解如何在領域模型和限界上下文中發(fā)布領域事件。同時,針對事件進行存儲的EventSource也與CQRS架構風格直接相關。
5、模塊
模塊化設計是優(yōu)良架構的保障,同時也是軟件復用最重要的單元。領域驅動設計將模塊視為與對象相等的一等公民,這使得整個設計在微觀層面符合面向對象的思想,同時也能夠為宏觀層面的架構設計提供有力地支持。本部分將結合限界上下文講解基本的模塊設計原則與設計模式。
6、聚合
聚合是領域驅動設計最為重要的領域概念。本部分內(nèi)容將深入探討聚合的設計原則,并辨別在聚合設計中可能出現(xiàn)的壞味道,并提出針對性的解決方案。這些原則和方案包括:在一致性邊界之內(nèi)建模真正的不變量,設計小的聚合,通過唯一標識引用其他聚合,在邊界外滿足最終一致性。
7、工廠和資源庫
工廠和資源庫都是管理領域對象(實體、值對象和服務)生命周期的對象。工廠主要針對內(nèi)存中對象從無到有的創(chuàng)建過程,與設計模式的工廠模式基本相似。
資源庫則分為面向集合的資源庫與面向持久化的資源庫。本部分內(nèi)容將重點講解與資源庫直接相關的技術細節(jié),包括如何選擇資源庫的方式,如何針對聚合持久化資源庫,如何管理事務,以及分辨資源庫與數(shù)據(jù)訪問對象(DAO)之間的異同。
8、應用層設計
作為為UI提供的應用服務,其目的在于管理和協(xié)調領域對象,并為領域對象提供橫 切關注點的內(nèi)容。好的應用服務設計不應該承擔任何與領域邏輯有關的職責。應用層是架構層面的外觀與適配器模式的體現(xiàn)。它可以提高軟件系統(tǒng)架構的可用性與簡單性,也能夠更好地與面向服務架構或RESTful架構風格結合。

第五單元 實戰(zhàn)演練
基于多租戶的社交網(wǎng)絡系統(tǒng)以及項目管理系統(tǒng)的領域驅動設計
這是領域驅動設計過程的完整案例分析,從需求開始著手,開展對整個系統(tǒng)的架構分析、領域概念識別與分析,并對建立的領域模型進行迭代與演化,核心領域概念的演進,掃清領域設計過程中的認知障礙,并總結了領域驅動設計過程的一些經(jīng)驗教訓。
本實戰(zhàn)演練包含了真實的案例需求,以及符合領域驅動設計各種知識點的案例病癥分析,從對比入手來探討好的領域驅動設計方法。同時,還將引入大量的可視化圖形、設計圖與代碼幫助學員理解如何在真實項目中運用領域驅動設計的思想,指導設計人員進行良好的設計。

《領域驅動設計》所屬分類
研發(fā)項目

《領域驅動設計》授課培訓師簡介
Bruce Zhang
擅長領域
研發(fā)管理

職業(yè)背景
高級咨詢師,軟件架構師,敏捷教練,連續(xù)四屆榮獲微軟最有價值專家,InfoQ 架構社區(qū)常務編輯。先后任職于惠普、中興通訊、中軟國際等企業(yè),擔任高級軟件工程師、系統(tǒng)架構師、技術總監(jiān)等職務。

擁有15年的軟件開發(fā)與8年左右的軟件架構設計經(jīng)驗,主要專注于軟件架構、設計模式、測試驅動開發(fā)、重構、領域驅動設計和敏捷開發(fā),以及基于Java/.NET平臺的企業(yè)級系統(tǒng)應用開發(fā)和分布式開發(fā)。

多次應邀參加國內(nèi)具有影響力的軟件開發(fā)大會,包括QCon全球企業(yè)開發(fā)大會,亞太軟件軟件研發(fā)團隊管理年會、Scrum Gathering、Agile China以及中國軟件技術大會,擔任大會主持人、制作人和講師。著譯作包括《軟件設計精要與模式》、《WCF服務編程》、《Java設計模式》、《恰如其分的軟件架構》

授課經(jīng)驗
作為咨詢師和培訓師,曾先后為可口可樂、摩托羅拉、HP、盛大、第九城市、CA、攜程、中興通訊等企業(yè)提供咨詢與培訓服務。
《領域驅動設計》報名服務流程
-----------------------------------------------------------------------------------

選擇課程

選擇上課時間

報名參加

確認報名

支付課款

參加課程

我們的優(yōu)勢
十六年誠信品牌值得信賴
一站式培訓顧問服務想你所需
海量課程及專業(yè)師資隨需應變
多城市開課,讓您擁有更多選擇更多便利
會員折扣讓您更合理有效的使用您的費用預算
公開課需求        課程編號:100279249          咨詢熱線:020-29042042
課程名稱:  領域驅動設計
您的真實姓名:  * (請一定使用真實姓名)
性    別:  先生女士
公司名稱: 
E-mail地址:  *
電話/手機:  * (電話請帶上區(qū)號,謝謝)
QQ: 
上課時間:  (時間格式:2025-04-19)
上課地點: 
費用預算:  * 元人民幣。(請?zhí)顚憯?shù)字,不需要填寫單位。)
其它咨詢: 
驗證數(shù)字:   驗證碼,看不清楚?請點擊刷新驗證碼 *
相關培訓
報名有禮!
1、報名參加本課程,可獲得雙倍積分!
  點擊這里查看積分的用途
2、老客戶介紹新客戶參加本課程,老客戶將可額外獎勵0.5倍積分!
  點擊這里查看積分的用途
3、報名參加指定課程可按會員享受8.5折優(yōu)惠!
4、報名參加本站特惠課程最高可享受300元/人的交通食宿補貼!
  點擊這里查看所有活動特惠課程
關于我們 | 聯(lián)系我們 | 友情連接 | 培訓分類導航
Copyright © 2009-2025 peixune.com . All rights reserved.
廣州必學企業(yè)管理咨詢有限公司 版權所有  頁面執(zhí)行時間: 91.1 毫秒

粵公網(wǎng)安備 44011302000582號


粵ICP備16013335號
培訓易在線客服 ×