Posted on 2005-08-27 11:14
publisher luo 閱讀(3128)
評論(0) 編輯 收藏 所屬分類:
引用技術文章
基于構件的開發(Component-Based
Development,簡稱CBD)或基于構件的軟件工程(Component-Based Software
Engineering,簡稱CBSE)是一種軟件開發新范型,它是在一定構件模型的支持下,復用構件庫中的一個或多個軟件構件,通過組合手段高效率、高質量地構造應用軟件系統的過程
由于以分布式對象為基礎的構件實現技術日趨成熟,CBD已經成為現今軟件復用實踐的研究熱點,被認為是最具潛力的軟件工程發展方向之一。
一、
基本概念
下面簡單介紹與本文相關的一些概念,包括構件、接口、契約、接口描述語言、構件框架等,另外還介紹了CBD的開發模式,以及構件技術和對象技術的關系。
在文獻[Szyperski97]中,Szyperski把構件定義為“軟件構件是一個僅帶特定契約接口和顯式語境依賴的結構單元”,同時他還寫道:“軟件構件可以獨立部署,易于第三方整合。”
根據這個觀點,可以認為構件由一方定義其規格說明,被另一方實現,然后供給第三方使用。接口(interface)是用戶與構件發生交互的連接渠道,第
三方只能通過構件接口的規格說明理解和復用構件,接口規格說明也是一種“契約”(contract),它足夠精確地描述構件實現的功能,同時又不把構件限
定于唯一的實現方法,這種不確定帶來多解決方案的靈活性。另一方面,雖然構件可以獨立部署的,但是一個構件可能會用到其它構件或平臺提供的服務,或者說基
于構件的軟件系統中通常是多個構件協作完成一定功能,所以構件依賴于組裝環境或稱為語境(context)。
構件基礎設施
(infrastructure)是異構構件互操作的標準和通信平臺,構件框架(Framework)是構件實例“即插即用”的支撐結構。通過一定的環境
條件和交互規則,構件框架允許一組構件形成一個“孤島”,獨立地與外部構件或其他框架交互和協作,因此構件框架及其內含的構件也可以視為一個構件,于是構
件通過不斷的迭代和合成,構成一個結構復雜的應用系統。目前,有多個組織和公司制定了構件基礎設施的標準或開發了相關產品,也為構件、構件框架和接口建立
了模型和技術規范,其中OMG CORBA[OMG01]、Microsoft COM/DCOM(或.NET)[Microsoft01,
Box99]以及Sun JavaBean/EJB[Perrone01]占主導地位,本文第六章將重點討論CORBA CCM(CORBA
Component Model)構件模型,并介紹基于CCM技術的演化構件模型。
特別地,通過購買獲得的第三方構件稱為COTS(commercial
off-the-shelf
,簡稱COTS)構件,作為內部(in-house)構件的對應概念。使用COTS是無源碼的完全黑盒復用,既有成本低、即買即用的優點,又有不一定滿足需求或誤配的風險。
CBD遵循“購買而不創建(buy, don’t build)”的開發哲學[Clements95],讓人們從“一切從頭開始”(build
from
scratch)的程序編制轉向軟件組裝。基于構件的開發任務包括創建、檢索和評價、適配(adaptation)、組裝、測試和驗證、配置和部署
(deployment)、維護和演進,以及遺產系統(legacy)的再工程等主要活動,它們與傳統的生命周期中的方法不盡相同。首先,CBD采用以構
件庫為中心的開發模式,構件檢索和評價是CBD的一項關鍵任務,這里我們理解的構件庫不僅僅是一個獨立的數據庫,而是廣泛的、一切可獲得的構件資源,尤其
是通過互聯網發布的軟件構件。其次,構件形成是一種在軟件體系結構支持下的組裝過程,也就是說,在應用領域里需要用DSSA將獨立的構件組裝成完整的應用
系統,可見構件的匹配和一致性驗證也成為CBD的關鍵任務。再次,CBD過程中需要同一些技術標準化接軌,相同的構件可能由多個軟件供應商生產,被多個用
戶使用,所以構件接口、構件基礎設施必須標準化。最后,CBD需要配置管理(Configuration
Management),即專門處理構件的集成、配置和發布(distribution)的有關事宜,于是構件的配置、適配和部署都是CBD的關鍵任務。
構件技術與面向對象技術緊密相關。構件和對象都是對現實世界的抽象描述,通過接口封裝了可復用的代碼實現,不同的是,首先在概念層面上,對象描述客觀世
界實體(identity),構件提供客觀世界服務(service)[Petre00],其次在復用策略上,對象是通過繼承實現復用,而構件是通過合成
實現復用;最后在技術手段上,構件通過對象技術而實現,對象按規定經過適當的接口包裝(wrap)之后成為構件,一個構件通常是多個對象的集合體。
當今,構件技術已經成為計算環境的基本組成之一,眾多中間件產品和開發工具提供了對不同構件模型的實現支持,特別在分布式、企業級應用軟
件系統中,無不把軟件的構件化作為解決維護、擴展和升級的唯一途徑。然而,雖然業已存在了大量的CBD概念、方法和工具,軟件業并未完全遷移到CBD軟件
開發范型,一個主要原因是缺少一套成熟的CBD開發方法學,至今尚未完全解決如下關鍵問題[Bergner99]:
(1)必須建立一個完善的CBD概念框架,用數學方法定義構件相關概念的形式化模型,既要盡可能的簡單,又要足以描述已有的構件基本概念和開發技術。
(2)必須有切實可行的構件描述方法和技術。在構件概念框架基礎上,為構件開發者建立相互交流的特殊語言,例如UML[Booch01]的圖形化描述技術和CORBA
IDL[OMG01]的文本描述技術,理想的描述技術可以提供系統的一致性約束和正確性驗證。
(3)要為CBD的開發流程建立一個合理的過程模型,特別要研究如何為扮演不同角色的開發者分配相應的任務,例如軟件體系結構設計師負責軟件構架設計的詳細職責和結果驗收標準。
(4)要有支持描述技術和過程模型的輔助開發工具,至少需要具備開發構件、實現應用系統和生成文檔的工具。理想的開發工具還包括關鍵系統特征的驗證工具。
顯見,上述這些問題和前面介紹的軟件復用目的和任務緊密相關,必須從軟件復用的認識高度分析CBD方法中存在的問題,重點是使用知識表示方法和演化計算
方法解決構件的語義模型和自動過程問題,包括CBD原理和技術中的構件模型、構件體系結構和描述語言和基于構件的開發過程等幾方面內容。
二、
CBSE/CBD的工程學目標
CBSE/CBD的工程學(管理)目標如下:
(1)
降低費用:這是所有軟件開發方法學的共同目標,CBSE/CBD把成本效率提高到軟件復用方法的最高境界。
(2)
方便裝配:CBSE/CBD的最大特征是一系列構件的裝配過程。
(3) 提高復用性:全面考慮構件在多個應用系統中的復用潛力。
(4)
提高可定制性和適應性:開發者可以按需配置構件;
(5) 提高可維護性:在系統中可以方便地添加、刪除和修改構件。
三、
CBSE/CBD的技術目標
CBSE/CBD的技術目標如下:
(1) 降低耦合:耦合指構件之間的相關性;
(2)
提高內聚:內聚指構件內元素之間的相關性;
(3) 控制粒度:粒度系統中構件對應問題域的規模,包括構件數量和大小兩個方面;
四、
CBSE/CBD的研究方向
CBSE/CBD的研究方向:
(1) 基于構件軟件工程方法的概念模型過程模型;
(2)
構件模型:研究構件的本質特征及構件間的關系;
(3) 構件獲取:有目的的構件生產和從已有系統中挖掘提取構件;
(4)
構件描述語言:以構件模型為基礎,解決構件的精確描述、理解及組裝問題;
(5)
構件庫(構件分類與檢索):研究構件分類策略、組織模式及檢索策略,建立構件庫系統,支持構件的有效管理;
(6)
構件集成組裝:在構件模型的基礎上研究構件組裝機制,包括源代碼級的組裝和基于構件對象互操作性的運行級組裝;
(7)
標準化:構件模型的標準化和構件庫系統的標準化;
(8) 構件系統的安全性問題和時效(real-time)問題;
(9)
非技術因素對CBD的影響:法律法規、商業實踐、組織結構等方面的挑戰和策略。
參考文獻
[Brown00] A.
Brown. Large-Scale Component-Based Development. New Jersey: Prentice Hall, Inc.,
2000.
[Szyperski97] C. Szyperski. Component Software-Beyond OO Programming.
Addison-wesley,1997
[OMG01] OMG CORBA,
http://www.corba.org,2001
[Microsoft01] Microsoft corporation,
http://www.microsoft.com/com,2001
[Box99] Don Box, Essential COM,
Addison-Wesley, ISBN 0-201-63446-5,1999
[Perrone01] Paul J. Perrone, et al.
J2EE構建企業系統—專家級解決方案. 北京: 清華大學出版社, 2001
[Clements95] P.C. Clements, From
Subroutines to Subsystems: Component Based Software Development. American
Programmer, vol. 8, No. 11, November 1995.
[Petre00] Luigia Petre. Components
vs. Objects. Turku Centre for Computer Science, TUCS Technical reports, No 370,
October 2000
[Bergner99] Klaus Bergner, Andreas Rausch, Marc Sihling,
Alexander Vilbig. Componentware – Methodology and Process,19th March
1999
[Booch01] Grady Booch, James Rumbaugh, Ivar
Jacobson著.邵維忠、麻志毅、張文娟、孟祥文譯,UML用戶指南,機械工業出版社,2001.6