課程簡介
目標收益
了解主流的軟件設計方法,通過案例分析與實踐,幫助員工熟練掌握軟件架構與設計技能,規(guī)范開發(fā)流程;介紹常見的架構視圖、架構風格與架構模式,并結(jié)合風險驅(qū)動的方式進行架構設計與演化;解構架構模式,并結(jié)合實際案例講解各種架構模式的運用場景,使得學員能夠在項目開發(fā)中熟練運用架構模式,改善系統(tǒng)的整體架構;開創(chuàng)性地提出了宏觀視圖、微觀視圖與納米視圖的MMN架構設計過程與方法,結(jié)合軟件架構設計的諸多最佳實踐,整體地介紹架構設計過程;對優(yōu)良架構的特征進行分析,保證架構遵循簡單、一致和自治原則,設計出卓越的軟件架構; 結(jié)合真實案例,講解大型企業(yè)軟件系統(tǒng)的整體架構與設計;融匯貫通,體悟設計的本質(zhì),打造高效、快速、主動
培訓對象
思想為體,方法為用,貫徹卓越軟件架構設計之精神,而非流于表面形式;提倡開放的設計觀,不局限于一種設計方法學,而是融匯貫通,取長補短;重視案例分析與實踐,提倡動手實驗,而非單純以講授性質(zhì)的培訓;通過真實案例的演練,熟悉開發(fā)過程與設計方法;編碼與設計,二者不可偏廢。沒有優(yōu)秀的個人設計能力,團隊就會成為無根之木,無法保證軟件的高質(zhì)量。必須幫助團隊的每個人都能熟練運用面向?qū)ο蟮姆治雠c設計能力,才能保證生產(chǎn)力的高效;培訓內(nèi)容由淺入深,覆蓋了軟件開發(fā)過程的大多數(shù)主流技能與方法,包括:OOAD、UML、RUP、 DDD、Refactoring、Design Patterns、Architecture Pat
課程大綱
第一單元 架構與架構視圖 |
軟件架構是針對軟件系統(tǒng)、子系統(tǒng)以及模塊層次的設計過程,包括如何組織系統(tǒng)組件,管理組件之間關系以及指導設計的基本原則。 1. 架構的定義 (1)架構的概念與定義 IEEE對架構的定義。對組件的理解,對自治組件與服務的分析;組件與環(huán)境的關系。 案例分析:大型銀行與保險系統(tǒng)的客戶核心系統(tǒng)的架構演化,通過分析系統(tǒng)集成、部署以及系統(tǒng)間通信的方式,深入對架構的理解。 Kruchten對架構的定義。提出了架構風格的概念,并體現(xiàn)了架構演化的思想。結(jié)合Spring、Linux的設計思想,初步建立架構風格的基礎知識。 (2)識別可重用的架構資源 介紹架構資源元模型,分析開發(fā)期資源和運行期資源。通過案例介紹參考架構、架構風格與架構模式在軟件架構過程中的運用。 案例分析:商業(yè)智能SaaS平臺系統(tǒng)中,架構對整個系統(tǒng)設計的指導意義。以真實案例剖析對可重用資源的運用。例如在商業(yè)智能SaaS平臺中,選擇了SaleForce作為參考架構,對系統(tǒng)架構設計產(chǎn)生的影響。 2、架構視圖 (1)分而治之的設計原則 軟件系統(tǒng)的復雜度主要來自其規(guī)模。規(guī)模越大,復雜度越高,降低復雜度的最有效途徑就是縮小規(guī)模,解決之道就是“分而治之”,核心思想是關注點分離。 在架構設計中,通常運用“視圖”的概念對整個系統(tǒng)進行分解。通過不同涉眾不同角色的不同觀察視角,對系統(tǒng)進行劃分。 (2)架構視圖實例講解 a. Christine提出的架構視圖剖析,分別包括概念視圖、模塊視圖、執(zhí)行視圖與代碼視圖。 案例分析:圖像處理系統(tǒng)的架構視圖。對圖像處理系統(tǒng)進行系統(tǒng)分析,分別建立該系統(tǒng)的概念視圖、模塊視圖、執(zhí)行視圖與代碼視圖。 b. RUP 4+1視圖 介紹RUP 4+1視圖的組成以及各個視圖之間的關系。 案例分析:LSVT 4+1視圖架構規(guī)格說明書 一個真實的案例,展現(xiàn)了一個完全按照4+1視圖進行設計的軟件系統(tǒng)架構。 |
第二單元 架構風格與參考架構 |
1、REST架構風格 REST描述了Web作為一個分布式超媒體的應用,相互鏈接的資源通過交換代表資源狀態(tài)的表述來進行通信。它 是WEB系統(tǒng)架構運用最為廣泛的架構風格。 案例分析:訂單管理系統(tǒng)的REST架構。通過案例講述如何在架構設計中運用REST架構。 2、基于消息的分布式架構 分布式架構是企業(yè)軟件系統(tǒng)主要采用的一種架構風格,通過使用基于消息的中間件完成消息的發(fā)送與接收,從而實現(xiàn)系統(tǒng)之間的集成,以及業(yè)務處理的異步模型。 案例:醫(yī)療衛(wèi)生知識庫系統(tǒng)。通過引入消息隊列改善系統(tǒng)架構的質(zhì)量。 3、數(shù)據(jù)為中心的軟件架構 一般的數(shù)據(jù)管理系統(tǒng)都分為三個步驟:Data Ingestion、Data Storage與Data Processing。在大數(shù)據(jù)處理中,這種模型體現(xiàn)得更為明顯。所有的軟件系統(tǒng)都離不開數(shù)據(jù)處理。此外,本節(jié)內(nèi)容還會講解MapReduce架構風格,剖析MapReduce的架構原理和最佳實踐。 案例:Twitter數(shù)據(jù)管理與分析,運用Apache HDFS、Flume、HIVE,完成對Twitter數(shù)據(jù)的管理與分析。 4、基于云的軟件架構 基于云的軟件架構可以分為三個層次,即SaaS,PaaS和IaaS。本節(jié)主要講解基于元數(shù)據(jù)的多租戶SaaS架構。 案例:商業(yè)智能SaaS平臺的整體架構 |
第三單元 架構模式與應用實踐 |
1、分層架構模式與實踐 講解經(jīng)典的軟件分層架構。 2、微內(nèi)核架構模式與實踐 微內(nèi)核模式是架構模式中極為重要的一種模式,尤其是它劃分功能子集為核心功能子集的設計思想非常重要,但它的重要性卻常常被人忽略。 案例:商業(yè)智能SaaS平臺與Spring框架對微內(nèi)核模式的運用 3、管道-過濾器架構模式與實踐 若要實現(xiàn)數(shù)據(jù)處理的良好可擴展性,有效降低數(shù)據(jù)處理的算法復雜度,就需要運用管道-過濾器模式。 案例:商業(yè)智能SaaS平臺的核心算法 4、MVC架構模式與實踐 MVC架構模式是最常用的架構模式,體現(xiàn)了關注點分離的架構原則。在介紹MVC模式的同時,還將深入分析與比較MVC模式與MVP模式之間的異同。 案例:Ruby On Rails的MVC架構 5、CQRS架構模式與實踐 CQRS模式即命令查詢職責分離模式,是DDD中基于事件的讀寫分離架構模式。將業(yè)務邏輯建模為狀態(tài)機模型,并利用松散耦合的命令與事件機制,采用異步模型改善系統(tǒng)整體性能。 案例:會議注冊與管理系統(tǒng)的CQRS架構 |
第四單元 架構核心原則與設計策略 |
1、設計簡單的架構 (1)設計的意圖:通過清晰地表達設計意圖,以簡化系統(tǒng)的整體架構,并有利于設計者與開發(fā)者之間的溝通。 案例分析:Ruby On Rails的架構設計 (2)保證系統(tǒng)足夠小,促進恰如其分的架構設計 (3)分而治之與關注點分離:遵循“關注點分離”的架構原則,將架構的分離策略分為縱橫分離與內(nèi)外分離。 (4)如何化繁為簡:通過專注實體的職責,整體分析系統(tǒng)目標、范圍與核心概念;并通過抽象簡化簡化整個系統(tǒng)的模型。 (5)設計的演進:通過具體案例講解如何運用風險驅(qū)動進行架構的設計與演化。 2、設計一致的架構 (1)設計風格的一致性:合理運用前面講到的架構風格,針對不同場景做出正確的架構決策。分析基于約束對架構風格的驅(qū)動設計方式。 (2)概念的一致性:如何通過業(yè)務分析甄別領域概念,對整個系統(tǒng)的領域邏輯進行建模,并利用抽象簡化模型。通過引入DDD的概念,以確定一致的設計概念,以便于開發(fā)團隊的溝通和協(xié)作。 (3)解決方案的一致性:要求在系統(tǒng)設計時,確保針對同一個問題域采用一致的解決方案。 (4)路線圖:確定產(chǎn)品線,制定路線圖,作為保證一致架構的高層藍圖。 3、設計自治的架構 (1)最小完備特征:設計最小完備的對象、組件與服務。通過識別設計特征來判斷實體是否符合最小完備原則。 (2)自我履行特征:設計智能有意識的對象,可以通過從調(diào)用端和提供行為的一方雙向地分析,以改善職責的分配。 (3)穩(wěn)定空間特征:合理的封裝,維持實體的邊界,并提供開放空間以滿足系統(tǒng)整體架構的可擴展性。劃定軟件系統(tǒng)的邏輯邊界與物理邊界,保證系統(tǒng)的可重用性。 (4)獨立進化特征:通過引入契約和接口,制定規(guī)范,以設計具有可進化性的系統(tǒng)。在設計時,考慮新舊版本的兼容性,為系統(tǒng)建立防腐層隔離變化。 |
第五單元 MMN架構設計過程 |
MMN架構設計過程是指對系統(tǒng)架構從宏觀、微觀與納米層面的整體設計過程。這是一個迭代和演進的設計過程,通過自頂向下結(jié)合自下而上的方式,對整個軟件系統(tǒng)進行分析與設計,保證整個軟件系統(tǒng)滿足功能需求與質(zhì)量屬性。 1、宏觀視圖的架構因素與設計過程 (1)定義架構概圖:包括調(diào)查架構資源,明確架構的目標,根據(jù)架構目標做出重要的設計決策,并分析主要的用例場景,以建立一個粗略的架構概圖。 案例分析:企業(yè)應用套件的架構概圖 (2)架構全局分析:識別架構風險,并確定風險優(yōu)先級。然后根據(jù)識別出來的風險編寫架構因素表,制訂具體的架構策略。同時確定整個系統(tǒng)的關鍵場景。 案例分析:遠程訪問的架構策略 (3)構建概念模型:確定技術框架與技術選型,識別并分析軟件產(chǎn)品的設計約束,從而確定架構風格,并根據(jù)具體場景運用架構模式。 案例分析:CIMS架構概念模型 (4)建立系統(tǒng)的邏輯視圖和物理視圖 案例分析:集團智能信息輔助系統(tǒng)的架構概念模型 2、微觀視圖的架構因素與設計過程 (1)細化邏輯視圖:進行領域分析,確定系統(tǒng)的應用邏輯架構與業(yè)務邏輯架構,并設計整個系統(tǒng)的模塊視圖; 案例分析:汽車零售管理系統(tǒng)領域分析 案例分析:商業(yè)智能SaaS平臺邏輯架構 (2)細化物理視圖:執(zhí)行運行時分析,確定通信機制和資源分配,并以此為根據(jù)設計部署視圖和執(zhí)行視圖 案例分析:燃氣集團解決方案 3、納米視圖的架構因素與設計過程 (1)構建設計模型:講解職責驅(qū)動設計,通過角色、職責與協(xié)作完成對象的職責分配,并通過識別變化點,利用抽象對變化進行封裝,以及合理運用設計模式。 案例分析:數(shù)據(jù)分析器 案例分析:商業(yè)智能SaaS平臺引擎設計 (2)代碼視圖:包括確定部署組件、配置管理、持續(xù)集成等與代碼級別有關的內(nèi)容。 案例分析:集團智能信息輔助系統(tǒng)的代碼視圖 案例分析:商業(yè)智能SaaS平臺的代碼視圖 |
第六單元 大型軟件系統(tǒng)體系架構 |
1、在線零售商集成解決方案 整個系統(tǒng)牽涉到電子商務、庫存管理、呼叫中心、郵件服務等多個系統(tǒng)的集成。該解決方案通過運用分布式系統(tǒng)的最佳實踐,運用基于消息的中間件,對系統(tǒng)進行整體設計,使得系統(tǒng)能夠高質(zhì)量地支撐在線零售商的核心業(yè)務。 2、銀行保險客戶核心支撐系統(tǒng)真實案例,是某大型金融集團的客戶核心支撐系統(tǒng),需要支持的業(yè)務系統(tǒng)多達數(shù)十個,且具有不同的業(yè)務,部署在不同的平臺。如何通過合理地設計,運用ESB和REST對整個系統(tǒng)進行集成。 |
第一單元 架構與架構視圖 軟件架構是針對軟件系統(tǒng)、子系統(tǒng)以及模塊層次的設計過程,包括如何組織系統(tǒng)組件,管理組件之間關系以及指導設計的基本原則。 1. 架構的定義 (1)架構的概念與定義 IEEE對架構的定義。對組件的理解,對自治組件與服務的分析;組件與環(huán)境的關系。 案例分析:大型銀行與保險系統(tǒng)的客戶核心系統(tǒng)的架構演化,通過分析系統(tǒng)集成、部署以及系統(tǒng)間通信的方式,深入對架構的理解。 Kruchten對架構的定義。提出了架構風格的概念,并體現(xiàn)了架構演化的思想。結(jié)合Spring、Linux的設計思想,初步建立架構風格的基礎知識。 (2)識別可重用的架構資源 介紹架構資源元模型,分析開發(fā)期資源和運行期資源。通過案例介紹參考架構、架構風格與架構模式在軟件架構過程中的運用。 案例分析:商業(yè)智能SaaS平臺系統(tǒng)中,架構對整個系統(tǒng)設計的指導意義。以真實案例剖析對可重用資源的運用。例如在商業(yè)智能SaaS平臺中,選擇了SaleForce作為參考架構,對系統(tǒng)架構設計產(chǎn)生的影響。 2、架構視圖 (1)分而治之的設計原則 軟件系統(tǒng)的復雜度主要來自其規(guī)模。規(guī)模越大,復雜度越高,降低復雜度的最有效途徑就是縮小規(guī)模,解決之道就是“分而治之”,核心思想是關注點分離。 在架構設計中,通常運用“視圖”的概念對整個系統(tǒng)進行分解。通過不同涉眾不同角色的不同觀察視角,對系統(tǒng)進行劃分。 (2)架構視圖實例講解 a. Christine提出的架構視圖剖析,分別包括概念視圖、模塊視圖、執(zhí)行視圖與代碼視圖。 案例分析:圖像處理系統(tǒng)的架構視圖。對圖像處理系統(tǒng)進行系統(tǒng)分析,分別建立該系統(tǒng)的概念視圖、模塊視圖、執(zhí)行視圖與代碼視圖。 b. RUP 4+1視圖 介紹RUP 4+1視圖的組成以及各個視圖之間的關系。 案例分析:LSVT 4+1視圖架構規(guī)格說明書 一個真實的案例,展現(xiàn)了一個完全按照4+1視圖進行設計的軟件系統(tǒng)架構。 |
第二單元 架構風格與參考架構 1、REST架構風格 REST描述了Web作為一個分布式超媒體的應用,相互鏈接的資源通過交換代表資源狀態(tài)的表述來進行通信。它 是WEB系統(tǒng)架構運用最為廣泛的架構風格。 案例分析:訂單管理系統(tǒng)的REST架構。通過案例講述如何在架構設計中運用REST架構。 2、基于消息的分布式架構 分布式架構是企業(yè)軟件系統(tǒng)主要采用的一種架構風格,通過使用基于消息的中間件完成消息的發(fā)送與接收,從而實現(xiàn)系統(tǒng)之間的集成,以及業(yè)務處理的異步模型。 案例:醫(yī)療衛(wèi)生知識庫系統(tǒng)。通過引入消息隊列改善系統(tǒng)架構的質(zhì)量。 3、數(shù)據(jù)為中心的軟件架構 一般的數(shù)據(jù)管理系統(tǒng)都分為三個步驟:Data Ingestion、Data Storage與Data Processing。在大數(shù)據(jù)處理中,這種模型體現(xiàn)得更為明顯。所有的軟件系統(tǒng)都離不開數(shù)據(jù)處理。此外,本節(jié)內(nèi)容還會講解MapReduce架構風格,剖析MapReduce的架構原理和最佳實踐。 案例:Twitter數(shù)據(jù)管理與分析,運用Apache HDFS、Flume、HIVE,完成對Twitter數(shù)據(jù)的管理與分析。 4、基于云的軟件架構 基于云的軟件架構可以分為三個層次,即SaaS,PaaS和IaaS。本節(jié)主要講解基于元數(shù)據(jù)的多租戶SaaS架構。 案例:商業(yè)智能SaaS平臺的整體架構 |
第三單元 架構模式與應用實踐 1、分層架構模式與實踐 講解經(jīng)典的軟件分層架構。 2、微內(nèi)核架構模式與實踐 微內(nèi)核模式是架構模式中極為重要的一種模式,尤其是它劃分功能子集為核心功能子集的設計思想非常重要,但它的重要性卻常常被人忽略。 案例:商業(yè)智能SaaS平臺與Spring框架對微內(nèi)核模式的運用 3、管道-過濾器架構模式與實踐 若要實現(xiàn)數(shù)據(jù)處理的良好可擴展性,有效降低數(shù)據(jù)處理的算法復雜度,就需要運用管道-過濾器模式。 案例:商業(yè)智能SaaS平臺的核心算法 4、MVC架構模式與實踐 MVC架構模式是最常用的架構模式,體現(xiàn)了關注點分離的架構原則。在介紹MVC模式的同時,還將深入分析與比較MVC模式與MVP模式之間的異同。 案例:Ruby On Rails的MVC架構 5、CQRS架構模式與實踐 CQRS模式即命令查詢職責分離模式,是DDD中基于事件的讀寫分離架構模式。將業(yè)務邏輯建模為狀態(tài)機模型,并利用松散耦合的命令與事件機制,采用異步模型改善系統(tǒng)整體性能。 案例:會議注冊與管理系統(tǒng)的CQRS架構 |
第四單元 架構核心原則與設計策略 1、設計簡單的架構 (1)設計的意圖:通過清晰地表達設計意圖,以簡化系統(tǒng)的整體架構,并有利于設計者與開發(fā)者之間的溝通。 案例分析:Ruby On Rails的架構設計 (2)保證系統(tǒng)足夠小,促進恰如其分的架構設計 (3)分而治之與關注點分離:遵循“關注點分離”的架構原則,將架構的分離策略分為縱橫分離與內(nèi)外分離。 (4)如何化繁為簡:通過專注實體的職責,整體分析系統(tǒng)目標、范圍與核心概念;并通過抽象簡化簡化整個系統(tǒng)的模型。 (5)設計的演進:通過具體案例講解如何運用風險驅(qū)動進行架構的設計與演化。 2、設計一致的架構 (1)設計風格的一致性:合理運用前面講到的架構風格,針對不同場景做出正確的架構決策。分析基于約束對架構風格的驅(qū)動設計方式。 (2)概念的一致性:如何通過業(yè)務分析甄別領域概念,對整個系統(tǒng)的領域邏輯進行建模,并利用抽象簡化模型。通過引入DDD的概念,以確定一致的設計概念,以便于開發(fā)團隊的溝通和協(xié)作。 (3)解決方案的一致性:要求在系統(tǒng)設計時,確保針對同一個問題域采用一致的解決方案。 (4)路線圖:確定產(chǎn)品線,制定路線圖,作為保證一致架構的高層藍圖。 3、設計自治的架構 (1)最小完備特征:設計最小完備的對象、組件與服務。通過識別設計特征來判斷實體是否符合最小完備原則。 (2)自我履行特征:設計智能有意識的對象,可以通過從調(diào)用端和提供行為的一方雙向地分析,以改善職責的分配。 (3)穩(wěn)定空間特征:合理的封裝,維持實體的邊界,并提供開放空間以滿足系統(tǒng)整體架構的可擴展性。劃定軟件系統(tǒng)的邏輯邊界與物理邊界,保證系統(tǒng)的可重用性。 (4)獨立進化特征:通過引入契約和接口,制定規(guī)范,以設計具有可進化性的系統(tǒng)。在設計時,考慮新舊版本的兼容性,為系統(tǒng)建立防腐層隔離變化。 |
第五單元 MMN架構設計過程 MMN架構設計過程是指對系統(tǒng)架構從宏觀、微觀與納米層面的整體設計過程。這是一個迭代和演進的設計過程,通過自頂向下結(jié)合自下而上的方式,對整個軟件系統(tǒng)進行分析與設計,保證整個軟件系統(tǒng)滿足功能需求與質(zhì)量屬性。 1、宏觀視圖的架構因素與設計過程 (1)定義架構概圖:包括調(diào)查架構資源,明確架構的目標,根據(jù)架構目標做出重要的設計決策,并分析主要的用例場景,以建立一個粗略的架構概圖。 案例分析:企業(yè)應用套件的架構概圖 (2)架構全局分析:識別架構風險,并確定風險優(yōu)先級。然后根據(jù)識別出來的風險編寫架構因素表,制訂具體的架構策略。同時確定整個系統(tǒng)的關鍵場景。 案例分析:遠程訪問的架構策略 (3)構建概念模型:確定技術框架與技術選型,識別并分析軟件產(chǎn)品的設計約束,從而確定架構風格,并根據(jù)具體場景運用架構模式。 案例分析:CIMS架構概念模型 (4)建立系統(tǒng)的邏輯視圖和物理視圖 案例分析:集團智能信息輔助系統(tǒng)的架構概念模型 2、微觀視圖的架構因素與設計過程 (1)細化邏輯視圖:進行領域分析,確定系統(tǒng)的應用邏輯架構與業(yè)務邏輯架構,并設計整個系統(tǒng)的模塊視圖; 案例分析:汽車零售管理系統(tǒng)領域分析 案例分析:商業(yè)智能SaaS平臺邏輯架構 (2)細化物理視圖:執(zhí)行運行時分析,確定通信機制和資源分配,并以此為根據(jù)設計部署視圖和執(zhí)行視圖 案例分析:燃氣集團解決方案 3、納米視圖的架構因素與設計過程 (1)構建設計模型:講解職責驅(qū)動設計,通過角色、職責與協(xié)作完成對象的職責分配,并通過識別變化點,利用抽象對變化進行封裝,以及合理運用設計模式。 案例分析:數(shù)據(jù)分析器 案例分析:商業(yè)智能SaaS平臺引擎設計 (2)代碼視圖:包括確定部署組件、配置管理、持續(xù)集成等與代碼級別有關的內(nèi)容。 案例分析:集團智能信息輔助系統(tǒng)的代碼視圖 案例分析:商業(yè)智能SaaS平臺的代碼視圖 |
第六單元 大型軟件系統(tǒng)體系架構 1、在線零售商集成解決方案 整個系統(tǒng)牽涉到電子商務、庫存管理、呼叫中心、郵件服務等多個系統(tǒng)的集成。該解決方案通過運用分布式系統(tǒng)的最佳實踐,運用基于消息的中間件,對系統(tǒng)進行整體設計,使得系統(tǒng)能夠高質(zhì)量地支撐在線零售商的核心業(yè)務。 2、銀行保險客戶核心支撐系統(tǒng)真實案例,是某大型金融集團的客戶核心支撐系統(tǒng),需要支持的業(yè)務系統(tǒng)多達數(shù)十個,且具有不同的業(yè)務,部署在不同的平臺。如何通過合理地設計,運用ESB和REST對整個系統(tǒng)進行集成。 |