課程目錄:軟件架構與設計培訓
        4401 人關注
        (78637/99817)
        課程大綱:

             軟件架構與設計培訓

         

         

         

        單元 架構與架構視圖

        一、軟件架構是針對軟件系統、子系統以及模塊層次的設計過程,包括如何組織系統組件,管理 組件之間關系以及指導設計的基本原則

        1、 架構的定義 (1)架構的概念與定義 IEEE對架構的定義。對組件的理解,對自治組件與服務的分析;組件與環境的關系。

        案例分析:大型銀行與保險系統的客戶核心系統的架構演化,通過分析系統集成、部署以及系統間通信的方式,深入對架構的理解。

        Kruchten對架構的定義。提出了架構風格的概念,并體現了架構演化的思想。結合Spring、Linux的設計思想,初步建立架構風格的基礎知識。

        (2)識別可重用的架構資源 介紹架構資源元模型,分析開發期資源和運行期資源。

        通過案例介紹參考架構、架構風格與架構模式在軟件架構過程中的運用。 案例分析:商業智能SaaS平臺系統中,

        架構對整個系統設計的指導意義。以真實案例剖析對可重用資源的運用。例如在商業智能SaaS平臺中,選擇了SaleForce作為參考架構,對系統架構設計產生的影響。

        2、架構視圖 (1)分而治之的設計原則 軟件系統的復雜度主要來自其規模。規模越大,復雜度越高,

        降低復雜度的有效途徑就是縮小規模,解決之道就是“分而治之”,核心思想是關注點分離。

        在架構設計中,通常運用“視圖”的概念對整個系統進行分解。通過不同涉眾不同角色的不同觀察視角,對系統進行劃分。

        (2)架構視圖實例講解 a. Christine提出的架構視圖剖析,分別包括概念視圖、模塊視圖、執行視圖與代碼視圖。

        案例分析:圖像處理系統的架構視圖。對圖像處理系統進行系統分析,分別建立該系統的概念視圖、模塊視圖、

        執行視圖與代碼視圖。 b. RUP 4+1視圖 介紹RUP 4+1視圖的組成以及各個視圖之間的關系。
        內容二

        第2單元 架構風格與參考架構

        一、REST架構風格

        1、 REST描述了Web作為一個分布式超媒體的應用,相互鏈接的資源通過交換代表資源狀態的表述來進行通信。

        它 是WEB系統架構運用為廣泛的架構風格。 案例分析:訂單管理系統的REST架構。通過案例講述如何在架構設計中運用REST架構。

        2、基于消息的分布式架構 分布式架構是企業軟件系統主要采用的一種架構風格,通過使用基于消息的中間件完成消息的發送與接收,

        從而實現系統之間的集成,以及業務處理的異步模型。 案例:醫療衛生知識庫系統。通過引入消息隊列改善系統架構的質量。

        3、數據為中心的軟件架構 一般的數據管理系統都分為三個步驟:Data Ingestion、Data Storage與Data Processing。

        在大數據處理中,這種模型體現得更為明顯。所有的軟件系統都離不開數據處理。

        此外,本節內容還會講解MapReduce架構風格,剖析MapReduce的架構原理和佳實踐。

        案例:Twitter數據管理與分析,運用Apache HDFS、Flume、HIVE,完成對Twitter數據的管理與分析。

        4、基于云的軟件架構 基于云的軟件架構可以分為三個層次,即SaaS,PaaS和IaaS。本節主要講解基于元數據的多租戶SaaS架構。
        內容三

        第3單元 架構模式與應用實踐

        一、分層架構模式與實踐

        1、 講解經典的軟件分層架構。

        2、微內核架構模式與實踐 微內核模式是架構模式中極為重要的一種模式,

        尤其是它劃分功能子集為核心功能子集的設計思想非常重要,但它的重要性卻常常被人忽略。 案例:商業智能SaaS平臺與Spring框架對微內核模式的運用

        3、 管道-過濾器架構模式與實踐 若要實現數據處理的良好可擴展性,有效降低數據處理的算法復雜度,就需要運用管道-過濾器模式。

        案例:商業智能SaaS平臺的核心算法

        4、MVC架構模式與實踐 MVC架構模式是常用的架構模式,體現了關注點分離的架構原則。

        在介紹MVC模式的同時,還將深入分析與比較MVC模式與MVP模式之間的異同。 案例:Ruby 0n Rails的MVC架構
        內容四

        第四單元 架構核心原則與設計策略 一、設計簡單的架構

        1、 設計的意圖:通過清晰地表達設計意圖,以簡化系統的整體架構,并有利于設計者與開發者之間的溝通。

        案例分析:Ruby 0n Rails的架構設計

        2、保系統足夠小,促進恰如其分的架構設計

        3、分而治之與關注點分離:遵循“關注點分離”的架構原則,將架構的分離策略分為縱橫分離與內外分離。

        4、如何化繁為簡:通過專注實體的職責,整體分析系統、范圍與核心概念;并通過抽象簡化簡化整個系統的模型。

        5、設計的演進:通過具體案例講解如何運用風險驅動進行架構的設計與演化。

        二、設計一致的架構 1、設計風格的一致性:合理運用前面講到的架構風格,針對不同場景做出正確的架構決策。分析基于約束對架構風格的驅動設計方式。

        2、概念的一致性:如何通過業務分析甄別領域概念,對整個系統的領域邏輯進行建模,并利用抽象簡化模型。

        通過引入DDD的概念,以確定一致的設計概念,以便于開發團隊的溝通和協作。

        3、解決方案的一致性:要求在系統設計時,確保針對同一個問題域采用一致的解決方案。

        4、路線圖:確定產品線,制定路線圖,作為保一致架構的高層藍圖。

        三、設計自治的架構 1、小完備特征:設計小完備的對象、組件與服務。通過識別設計特征來判斷實體是否符合小完備原則。

        2、自我履行特征:設計智能有意識的對象,可以通過從調用端和提供行為的一方雙向地分析,以改善職責的分配。

        3、穩定空間特征:合理的封裝,維持實體的邊界,并提供開放空間以滿足系統整體架構的可擴展性。劃定軟件系統的邏輯邊界與物理邊界,保系統的可重用性。
        內容五

        第五單元 MMN架構設計過程

        一、MMN架構設計過程是指對系統架構從宏觀、微觀與納米層面的整體設計過程。

        這是一個迭代和演進的設計過程,通過自頂向下結合自下而上的方式,對整個軟件系統進行分析與設計,保整個軟件系統滿足功能需求與質量屬性。

        1、1、宏觀視圖的架構因素與設計過程 (1)定義架構概圖:包括調查架構資源,明確架構的,

        根據架構做出重要的設計決策,并分析主要的用例場景,以建立一個粗略的架構概圖。 案例分析:企業應用套件的架構概圖

        (2)架構全局分析:識別架構風險,并確定風險優先級。然后根據識別出來的風險編寫架構因素表,制訂具體的架構策略。

        同時確定整個系統的關鍵場景。 案例分析:遠程訪問的架構策略

        (3)構建概念模型:確定技術框架與技術選型,識別并分析軟件產品的設計約束,從而確定架構風格,并根據具體場景運用架構模式。

        案例分析:CIMS架構概念模型 (3)建立系統的邏輯視圖和物理視圖 案例分析:集團智能信息輔助系統的架構概念模型

        2、微觀視圖的架構因素與設計過程 (1)細化邏輯視圖:進行領域分析,確定系統的應用邏輯架構與業務邏輯架構,并設計整個系統的模塊視圖;

        案例分析:汽車0售管理系統領域分析 案例分析:商業智能SaaS平臺邏輯架構

        (2)細化物理視圖:執行運行時分析,確定通信機制和資源分配,并以此為根據設計部署視圖和執行視圖 案例分析:燃氣集團解決方案

        3、納米視圖的架構因素與設計過程 (1)構建設計模型:講解職責驅動設計,通過角色、職責與協作完成對象的職責分配,

        并通過識別變化點,利用抽象對變化進行封裝,以及合理運用設計模式。 案例分析:數據分析器 案例分析:商業智能SaaS平臺引擎設計

        (2)代碼視圖:包括確定部署組件、配置管理、持續集成等與代碼有關的內容。
        內容六

        第六單元 大型軟件系統體系架構 一、

        1、在線0售商集成解決方案 整個系統牽涉到電子商務、庫存管理、呼叫中心、郵件服務等多個系統的集成。

        該解決方案通過運用分布式系統的佳實踐,運用基于消息的中間件,對系統進行整體設計,使得系統能夠高質量地支撐在線0售商的核心業務。

        2、銀行保險客戶核心支撐系統真實案例,是某大型金融集團的客戶核心支撐系統,需要支持的業務系統多達數十個,且具有不同的業務,部署在不同的平臺。

        如何通過合理地設計,運用ESB和REST對整個系統進行集