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