比較各種軟件開發和複用技術

類庫、框架、模式,以及模型集成式計算是其它一些正在被應用於複用軟件和提高生產率的技術。本節比較框架和其它的一些技術,說明它們的相似性和差異,並且顯式可怎樣結合這些技術來增強網路化應用的系統化複用。

 

1,框架和類庫

框架和類庫是相互補充的。

類庫是第一代面向對象開發技術,與函數庫相比,類庫通常能更爲有效地支持小規模的複用,因爲類強調了“數據”和“在數據上進行操作的方法”的內聚。

框架是第二代開發技術,在若干方面擴充了類庫的優勢。最重要的是,框架中的類會進行協作,爲一組相關應用提供可複用的架構。框架中的類協作產生“半完成”的應用。

C++標準庫是類庫的好例子;儘管它們被複用於許多應用領域,但它們相對來說是低級的。應用開發者要負責編寫大量的“膠水代碼”,執行大部分應用控制流和類集成邏輯。

類庫往往是被動的[1];框架則是主動的[2]。

框架聚焦於特定的領域,而類庫滿足最廣泛的開發需求。

 

2,框架和組件

框架和組件是高度協作的,誰也不處於從屬地位[4]。

組件是實現特定的一個或一組服務的軟件系統的一個被封裝的部分[3]。

可以把組件插放在一起,或是爲其編寫腳本來形成完整的應用。

組件使得“移植和重新分佈特定的服務,以適應新的環境”變得更爲容易,同時又保持關鍵的應用屬性,比如安全性和可用性[5]。

與框架相比,組件在詞法和空間上的耦合更小[6]。

 

3,框架和模式

使常用的模式和模式語言具體化,並且重構常見的實現角色,框架可幫助開發者避免對標準的產品製品進行重新發明。

對於複雜主題有關的設計挑戰[7],由於它們常常不依賴於特定的應用需求,開發者藉助模式來克服它們:設計模式[8]、架構型模式[9]、模式語言[10]。

傳統上,模式和模式語言深藏在專家頭腦中,或者系統源代碼中[11]。

 

4,框架和模型集成式計算

模型集成式計算(MIC)與框架、組件及模式的結合是一個活躍的研究領域。

MIC使用針對特定領域的建模語言來系統地設計軟件,開發環境包括針對特定領域的模型分析和基於模型的程序綜合工具[12]。

如果適當實現,這些技術可以:解放API依賴,即使API被取代,模型可被複用;生成高度可靠的代碼;更快速地建立原型;改善一致性和質量。

CASE工具在基於模型的開發和代碼綜合方面所進行的早期努力通常都無法實現其潛能,因爲:1,生成代碼低效、難以優化、依賴性強;2,難以獲得往復的工程設計;3,首先於平臺和編程語言;

MIC繼承面向對象框架,有助於解決早期CASE工具的問題,因爲建模工具無須生成所有的代碼,大部分應用可以從可複用的、已預先驗證的框架類組合而得。

 

[1] 被動的含義:因爲它們(類庫)通過從調用它們的方法的應用那裏借用線程來執行它們的處理(簡單點說:將參數發給類庫,才能執行)。結果,開發者必須持續地重寫大量的控制邏輯,才能把各個可複用的類綁定到一起,形成完整的應用。

[2] 主動的含義:它們(框架)通過多種回調驅動的事件處理模式來引導控制流,並且管理着應用的控制流,與被動的類庫相比,它們可以代表應用進行更廣泛的活動。(想想MFC和STL吧!)

[3] 常見的組件:ActiveX、COM對象、.Net Web Services、Enterprise JavaBeans、CORBA Component Model(CCM)。

[4] ACE框架可以被用於開發較高級的應用組件,而後者的接口又爲框架的內部類結構提供了Facade。組件也可以在黑箱框架中被用作可插式策略。

[5] 舉個例子:組件可以在容器的上下文中實現商業應用邏輯。容器允許其組件訪問由底層的中間件平臺提供的資源和服務。此外,應用服務器實例化和管理容器,應用服務器還可以將與組件相關聯的元數據Metadata所提供的指令用於配置和連接組件。(這些術語是如此熟悉,以至於yathing想起了J2EE平臺開發的相關技術)組件、容器、配置,共同組成了Application Server。

[6] 通過Proxy、Broker(代理、經紀)模式,組件可以被分不到網絡各處的服務器上,應用組件的時候,不需要子類化(對比一下MFC框架,寫一個對話框還需要構建一個子類)。

[7] 比如:連接管理(Connection Management)、服務初始化(Service Initialization)、分佈(Distribution)、併發控制(concurrency Control)、流控制(Flow Control)、錯誤處理(Error Handling)、事件循環集成(Event Loop Integration)、可靠性(Dependability)。

[8] 爲軟件系統提煉要素以及它們之間的關係

[9] 軟件系統的基礎性的、總體的結構組織,並且提供一組預定義的子系統,規定它們的責任,併爲組織它們之間的關係提供指導。

[10] 爲軟件開發問題定義詞彙表,提供有序解決問題的步驟。

[11] JAWS是使用ACE框架構建的自適配Web服務器,模式幫助開發者克服在開發兵法服務器時常見的設計挑戰:封裝低級的操作系統API、解除“事件多路分離和連接管理”與“協議處理”的耦合,通過多線程提高服務器性能,使服務器線程開銷降至最低,有效的使用異步IO,增強服務器可配置性(yathing:要想真正體會這些,1,讀POSA2;2,閱讀源代碼)。

[12] 目前流行的MIC例子:Generic Modeling Environment(GME)和Ptolemy(用於實時和嵌入式領域),基於OMG Model Driven Architecture(MDA)的UML/XML工具(用於商業領域)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章