第一單元:軟件生命周期與軟件架構介紹
一、軟件架構介紹
1.?????? IT行業的人才結構與軟件架構師的定位
2.?????? 軟件架構師應掌握的知識體系
3.?????? 軟件架構設計的特點、層次、分類
4.?????? 軟件架構的主要理論、方向和趨勢
5.?????? 軟件工廠,實現軟件開發的產業化
二、軟件生命周期進程模型介紹
1.?????? RUP與XP
2.?????? Agile與CMMI
3.?????? MSF
?
第二單元:技術架構視圖─面向對象程序設計原則與模式及方法論
一、衡量軟件系統質量的標準
1.?????? 軟件系統開始變壞的表現:硬化、脆弱、綁死、膠著。
2.?????? 軟件系統關鍵的質量特性:正確性、健壯性、可擴展性、可復用性、兼容、可移植性、高效性、timeliness、economy and functionality
二、面向對象設計的基本原則
1.?????? 類的設計原則:
開閉原則、依賴倒置原則、Liskov替換原則、單一職責原則、接口分離原則、組合復用原則、所知少原則
例:會議管理系統等、API函數的啟示等
2.?????? 包內聚原則:發布與復用等價原則、共同封閉原則、共同復用原則
3.?????? 包耦合原則:無循環的依賴原則、穩定的依賴原則、穩定的抽象
三、用GRASP模式指導架構設計:
1.?????? GRASP架構模式:信息專家、創建者、高內聚、低耦合、控制者、多態、間接、純虛構、保護變化
2.?????? 典型案例分析:
違反信息專家模式案例分析
應用信息專家模式案例分析
應用GRASP模式精化架構設計案例分析
四、軟件架構設計的關鍵因素
1.?????? 什么是架構, 它和系統是如何關聯的。
2.?????? 如何獲得可維護性、可擴展性、可重用性、互操作性等。
3.?????? 在系統中如何組織組件(Component) 。
4.?????? 如何組織組件(Component)的內部。
5.?????? 如何保持平臺相關的細節和應用的分離。
6.?????? 如何應用封裝(encapsulation)、抽象(abstraction)和委派(delegation)的原則。
7.?????? 如何應用設計模式來實現好的結構。
五、案例分析:
模板容器、Movie查詢等。
第三單元:用UML輔助系統分析與設計
一、UML中的常見疑難問題辨析
1.?????? 用例圖
1)?????? 參與者建模中的常見問題。
2)?????? 用例建模中的常見問題。
3)?????? UaseCase的本質討論。
2.?????? 類設計
1)?????? UML中關系的辨析:
依賴關系、關聯關系辨析;聚合,組合辨析。
2)?????? 類設計中的常見問題:
1)? 一些常見但易混淆的類關系圖;
2)? 熟悉類的自關聯形式;使用關聯類;
3)? 一些易混淆的重數表示方法
4)? 建模為對象與建模為屬性 / 建模為方法與建模為對象的辨析。
3.?????? 其它辨析
1)?????? 包與組件。
2)?????? 擴展基類與覆蓋基類等;自關聯、關聯多重性、關聯角色名辨析。
3)?????? 消除多重繼承的常用手段。
二、借鑒RUP的設計過程。
1.?????? 全局分析:
選用架構模式;識別關鍵抽象;標識分析機制;常見的分析機制
2.?????? 局部分析:
提取分析類:
分析類的類型劃分:邊界類、實體類、控制類,分析類在模型中的位置,邊界類的復用,控制類的變通。
分析動態場景:
消息與責任;事件序列在邊界、實體及控制類間的原則;控制類在交互圖中的表現特征;交互圖的正確性。
整理分析類:
分析類的責任和關聯關系;動態與靜態的關系;確定類的責任;設計類和子系統接口。
三、實踐:
投遞系統分析設計。
?
一、GOF設計模式。
1.?????? 使用GOF設計模式,借鑒前人的經驗。
2.?????? 分析創建型模式:
單例模式(Singleton)、工廠模式、抽象工廠模式(Abstractfactory)
3.?????? 分析結構型模式:
?
橋梁模式(Bridge)、裝飾模式(Decorator)、適配器模式(Adapter)、代理模式(Proxy)、組合模式(Composite)
4.?????? 分析行為型模式:
命令模式(Command )、觀察者模式(Observer)、狀態模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、訪問者模式(Template Method)
二、設計模式深入討論:
1.?????? 設計模式的本質:
隔離變化點;間接;透明;局部雙向依賴;邏輯與功能;用接口抹平差異、延遲調用。
2.?????? 模式的推演:
掌握模式的本質,而非形式。
3.?????? 設計模式的高級運用:
高手的選擇;神似而非形似;一切以工程實際為標準;可以犧牲掉的特征;簡化的模式;防止濫用;自創的模式。
三、常用的軟件架構風格及適用情況分析:
1.?????? 系統軟件
分層(Layer)、管道和過濾器(Pipes and Filters)、黑板(Blackboard)
2.?????? 分布式軟件
經紀人(Broker) 、客戶/服務器(Client/Server)、點對點(Peer to Peer)
3.?????? 交互軟件
模型-視圖-控制器(Model-View-Controller)、顯示-抽象-控制(Presentation-Abstraction-COntrol)
四、SOA的設計思想:
1.?????? SOA的概念。
2.?????? SOA的設計目標
異構性Heterogeneity;可伸縮性Scalability;適用性Availability;分布式Distribution; .機動性Flexibility;可見性
五、典型案例分析:
媒體顯示、數據采集系統、編輯器、文件解析器。
?
第五單元:架構設計實踐
一、?????????????靜態設計:
1.?????? 按層+高內聚低耦合的原則進行模塊劃分
高內聚原則;按功能分解;按業務進行分解;以數據轉換為中心分解;實際運用中的折中。
2.?????? 劃分層次
將模塊劃入對應的層;分層與分區;邏輯模塊與實體組件的對應關系。
3.?????? 為模塊進行職責分配
隔離關注面:低耦合原則;適當采用設計模式;
用設計模式優化核心結構:經典模式運用:
用橋接模式作為中心骨架。
用橋接模式作為中心骨架。
用工廠模式進行組裝。
用命令模式處理事務。
模塊結構的常見形式
容器模塊 + 控制者 + 功能模塊 + 臨時構建的小類;單例模式;命令模式。
核心模塊的接口設計。
外觀模式;適配器模式;代理模式;中介者模式。
其它形式的的模塊結構:變換型模塊結構;事務型模塊結構。
二、模塊間的通信及耦合設計:
1.?????? 組件式編程。
2.?????? 通訊機制:
觀察者模式;本地SDK;輪訓。
3.?????? 解耦:
針對接口編程;增加間接模塊;依賴注入。
4.?????? 設計數據層
數據結構選用的設計;數據訪問層的設計
三、動態設計:
1.?????? 抽象與統一不同的因素
根據業務尋找關鍵因素;統一到復雜的情況。
2.?????? 常用的流程抽象手段:
依賴注入 / 控制反轉;表格法;配置文件。
3.?????? 邏輯控制:
控制者模式;信息專家模式。
4.?????? 消息通知機制
MVC模式;觀察者模式;責任鏈模式;中介者模式。
四、模塊調整:
1.?????? 調整模塊等級。
適當封裝;把屬性提升為類;將類降為屬性;將類提升為組件。
2.?????? 用設計模式優化設計
在主體的框架上進行調整:訪問者模式;裝飾模式。
3.?????? 編碼時構建適當的動態臨時類。
命令模式;事務處理類型。
4.?????? 效率的優化
效率與結構的折中:優化效率的3步驟。???
?
第六單元:軟件架構設計案例分析
一、綜合架構案例剖析
1.?????? 商店POS系統架構設計
2.?????? 薪酬系統架構設計
3.?????? 倉庫管理系統架構設計
二、實戰典型案例分析(以實際項目案例為背景)
1.?????? 需求分析、領域建模:零售店銷售系統
2.?????? 設計模式的綜合運用:Dvc文件分析系統
3.?????? 架構分析:互聯網商品數據分析系統
4.?????? 綜合案例分析:
圖像處理系統
基于搜索的二次開發系統