本書(shū)從軟件架構、框架、設計模式的方面來(lái)講解了一些特定領(lǐng)域的框架,也就是一些模塊、組件和設計模式的合適的結合??蚣芴峁┝送ㄓ玫?、可重用的軟件架構,并可以產(chǎn)生新的應用。但是一個(gè)框架無(wú)法適用于多個(gè)商業(yè)/工業(yè)領(lǐng)域,需要構建特定領(lǐng)域應用框架。
本書(shū)給出了大量的例子涵蓋了大量應用領(lǐng)域,包括:
柔性制造系統結構
計算機集成制造
新一代控制系統
并發(fā)工程
可靠的分布式計算
搞性能的WEB服務(wù)器
多媒體遠程通信
網(wǎng)絡(luò )和電信
工業(yè)可視化
一、框架定義
1、 一組類(lèi)或組件的集合,它們?yōu)橐粋€(gè)特定領(lǐng)域提供了一組服務(wù)和功能。
2、 一組交互的軟件組件的規范,它們構成了特定領(lǐng)域的解決方案。
3、 一個(gè)面向對象的類(lèi)層次結構和一個(gè)內建的交互模型,他們定義了從該類(lèi)層次結構中所導出對象的交互方式。
4、 軟件架構的一種實(shí)例,它可以使設計的組件具有良好的互操作性。
二、框架分類(lèi)
1、 根據作用域可以將框架分為系統基礎結構框架、中間件集成框架、企業(yè)應用框架。
系統基礎結構框架是一組可以支持系統基礎結構領(lǐng)域的高??梢浦部蚣?,例如可以支持操作系統、用戶(hù)界面、通信及語(yǔ)言處理等,它們通常是由內部開(kāi)發(fā)和使用的,有時(shí)也用作供其他應用使用的通用應用。
中間件集成框架的作用是增強軟件對基礎結構的模塊化處理能力、重用能力及擴展能力,從而能夠在分布式環(huán)境中無(wú)縫運行。中間件集成的例子有OmniBuilder框架和對象請求代理(ORB)。
企業(yè)應用框架處理的應用領(lǐng)域很廣,如銀行、電信、制藥等,它們是領(lǐng)域應用的基石。企業(yè)應用中著(zhù)名的實(shí)例有IBM SanFrancisco、企業(yè)資源規劃(ERP)。
框架類(lèi)別
框架實(shí)例
企業(yè)應用框架
Amulet,IBM SanFrancisco,Asyn,LAMA,CORTAN,OMAC框架
中間件集成框架
GUI,QC Services Layer,PFC/Open,OmniBuilder,PFX,FrameData Feed Handler框架
系統基礎結構框架
Protocol Layer,ACE,OPTF,DynaFind,ARES,DORB框架
2、 根據擴展技術(shù),則可以將框架分為白箱框架、黑箱框架和灰箱框架。
白箱框架是通過(guò)面向對象特性(如繼承和動(dòng)態(tài)性)進(jìn)行擴展的。我們對現有功能的重用和擴展是通過(guò)以下兩種方式進(jìn)行的:
■ 繼承框架的基類(lèi)。
■ 利用模式對預定義的鉤子方法進(jìn)行重載。
白箱框架的實(shí)例有MacApp和ACE框架等。
在黑箱框架中,我們獲取可擴展性的方式是為組件定義接口并使用對象組合技術(shù)將其插接到框架中。其中,對現有功能的擴展方式包括:
■ 定義符合特定接口標準的組件。
■ 使用模式將組件集成到框架中。
黑箱框架的實(shí)例有G++組合用戶(hù)界面框架。
灰箱框架是白箱框架和黑箱框架的混合。在灰箱框架中,我們既可以使用繼承和動(dòng)態(tài)綁定進(jìn)行擴展,也可以通過(guò)定義接口來(lái)進(jìn)行擴展?;蚁淇蚣艿膶?shí)例有GUI和SanFrancisco計劃。
三、框架文檔
文檔是軟件生產(chǎn)過(guò)程中的關(guān)鍵部分。文檔是框架的主要知識來(lái)源??蚣芪臋n的主要用戶(hù)可以分為框架開(kāi)發(fā)者和應用開(kāi)發(fā)者。
文檔類(lèi)型
框架開(kāi)發(fā)者
應用開(kāi)發(fā)者
示例
是
操作指南
是
設計模式
是
接口契約
是
是
參考手冊
是
框架概覽
是
其他文檔類(lèi)型
建模圖表
用戶(hù)手冊
故障檢測指南
四、框架比較
應用框架調查的比較參數包括操作系統、程序設計語(yǔ)言、領(lǐng)域范疇等。
1、操作系統:Windows、UNIX、Linux
2、語(yǔ)言:C++、Java
3、 領(lǐng)域范疇
擁有框架最多的兩個(gè)領(lǐng)域是商務(wù)/金融和電信/網(wǎng)絡(luò )。
框架領(lǐng)域范疇
編號
領(lǐng)域范疇
框架列表
1
通用(無(wú)領(lǐng)域)
MaccApp,G++
2
通用GUI
GUI,Amulet,Visible Properties and Actions Framework
3
數據庫和數據管理
FRAMEWARE,PFX(持久性框架),ROA’D,QC Services Layer框架,Advanced Software Architecture Platform
4
商務(wù)和金融
Asyn,SanFrancisco,BOOF,PFC/Open Frame,Omni Builder,Rule Parsing,File Parsing,CSFramelets
5
保險
Asyn,SanFrancisco
6
醫療
HBOC應用框架,Medical Business Object框架,Advanced Software Architecture Platform,Philips New York Project(開(kāi)發(fā)中)
7
教育和娛樂(lè )
Multimedia框架
8
電信和網(wǎng)絡(luò )
適應性面向對象事件過(guò)濾框架,Advanced Software Architecture Platform,CORTAN,Protocol Layer框架,ACE,SIGAL,DORB,Jadve
9
工業(yè)和制造業(yè)
OMAC,PrismTech BOF和CORBA服務(wù)
10
軟件開(kāi)發(fā)
CLOS Meta Object Protocol,G++,OPTF,LAMA
五、框架的經(jīng)驗
我們很清楚框架開(kāi)發(fā)不是一件容易的事情,教授框架的正確使用方法也不是一件輕松的工作,有時(shí)候為了獲取足夠的靈活性和可擴展性,框架需要改寫(xiě)3-4遍甚至更多,但是最終得到的框架將說(shuō)明這些努力是值得的。開(kāi)發(fā)框架時(shí)需要記住一些經(jīng)驗方法。
1、 框架和類(lèi)的概念存在很大的區別。類(lèi)是框架的一部分。
2、 將熱點(diǎn)分析和設計模式相結合的設計過(guò)程提供強大的開(kāi)發(fā)工具。
3、 只要有可能,框架應當建立在一個(gè)標準之上(如CORBA)。使用標準可以避免很多問(wèn)題,比如集成,與其他應用之間通信。
4、 原型方法非常重要(它大大增加了靈活性,提供了很多領(lǐng)域知識,但同時(shí)也需要更多的開(kāi)發(fā)時(shí)間)。
5、 迭代是必須的。好的設計和實(shí)現需要多次迭代。
6、 框架開(kāi)發(fā)需要有經(jīng)驗的架構師,有經(jīng)驗的開(kāi)發(fā)人員和有經(jīng)驗的工程師。換句話(huà)說(shuō),框架開(kāi)發(fā)需要頂尖人才。
7、 完備的文檔是關(guān)鍵。
8、 及早培訓團隊并就基本方法達成一致。
9、 避免框架組件之間過(guò)多的數據耦合。
10、 盡可能多地使用模式。
11、 選擇合適的開(kāi)發(fā)團隊人數。
12、 在設計階段花費足夠的時(shí)間。
13、 進(jìn)行功能 抽象并隱藏細節。
14、 保持簡(jiǎn)單性。設計應該盡可能簡(jiǎn)單,隨著(zhù)時(shí)間的流逝和需求的增加,復雜性會(huì )自動(dòng)地增加。
15、 將通用的子領(lǐng)域和特定的子領(lǐng)域分離。
16、 框架的學(xué)習曲線(xiàn)非常陡峭。在學(xué)習框架的各個(gè)階段中,我們使用合適的文檔類(lèi)型能夠減少學(xué)習時(shí)間。整個(gè)學(xué)習過(guò)程分為三個(gè)階段:
1)、框架概覽
2)、示例和參考手冊
3)、接口契約、操作指南、設計模式。
17一些成功的商品化框架中的啟示:
1)確定客戶(hù)已經(jīng)同意你的框架方案。
2)確保投資方知道這是一項長(cháng)期投資。
3)確保投資方知道框架將成為他們的系統中最可靠的部分。
4)為應用開(kāi)發(fā)人員提供大量的調試接口。
5)完成應用所需要的代碼應該很少。
6)將客戶(hù)與框架變更隔離開(kāi)來(lái)。
7)性能(執行性能,制作/維護性能)是一個(gè)重要的問(wèn)題。
六、高層重用技術(shù)分類(lèi)
高層重用
設計模式
框架
軟件架構
架構風(fēng)格
架構設計風(fēng)格
架構框架
架構平臺
設計模式:使用相互通信的類(lèi)和對象可為常見(jiàn)的設計問(wèn)題提供通用的解決方案。為了幫助用戶(hù)掌握模式的概念并有效地設計模式,我通常為設計模式的描述提供一個(gè)帶有比喻性的抽象。常見(jiàn)的設計模式有:Fvacade(外觀(guān)模式),它為子系統中的一系列動(dòng)作提供一個(gè)統一接口;Ovbserver(觀(guān)察者模式),具體的設計模式內容參考GOF23設計模式。
框架:提供一組相互協(xié)作的類(lèi)及運行時(shí)對象,用于生成某些特定領(lǐng)域的應用軟件。我們可以根據特定應用的需求方便地對框架中的抽象和類(lèi)進(jìn)行定制,以重用框架的設計和代碼。
軟件架構:編制軟件也稱(chēng)為架構軟件。一個(gè)可操作的軟件內部應具有某種形式的架構。軟件架構技術(shù)中可重用的實(shí)體可以進(jìn)一步地分為4類(lèi):架構風(fēng)格、架構設計風(fēng)格、架構框架、架構平臺。
架構風(fēng)格給出了精心設計的軟件全局的通用形態(tài)。例如,Shaw和Garlan提出了7種架構風(fēng)格:管道和過(guò)濾器、面向對象的組織、隱式調用、分層系統、倉庫、狀態(tài)機、解釋器,及過(guò)程控制。
架構設計風(fēng)格給出了軟件架構的設計方法論。Shaw將眾多的設計風(fēng)格分類(lèi)為如下8種:功能分解、數據流、面向對象、狀態(tài)機、面向事情、過(guò)程控制、數據結構及決定表。
架構框架是來(lái)為詳細而完整的框架,它為開(kāi)發(fā)特定領(lǐng)域的應用系統使用了一系列多種架構設計風(fēng)格。一個(gè)采用了某些設計風(fēng)格的軟件架構制品,只有當它具有完備的文檔,并具備包含一個(gè)特定的應用領(lǐng)域所需要的充分靈活性時(shí)才可以作為軟件框架來(lái)重用。
架構平臺提供了一個(gè)可以適應多種應用系統的靈活的底層結構,架構平臺的設計目的即是為了應用軟件的互操作性提供硬件平臺及操作系統平臺無(wú)關(guān)環(huán)境。我們可以將它們用做底層結構,以促進(jìn)對象級的協(xié)作和重用。對象管理組織(OMG)的通用對象請求代理體系結構(Common Object Request Broker Architecture,CORBA)即是一個(gè)示例。
本書(shū)中提供了大量的特定領(lǐng)域的框架,內容比較詳細,有好多內容就不用列舉了,可以作為軟件設計框架行業(yè)參考書(shū)。在今后的設計中如果遇到框架設計問(wèn)題,我覺(jué)得先參考本書(shū)內容找到是否有相關(guān)的框架的實(shí)例,這樣可以為我們軟件框架設計提供方便之門(mén),縮短軟件項目開(kāi)發(fā)時(shí)間,降低成本與提高軟件質(zhì)量,避免風(fēng)險,確保項目的順利的完成。