基于構件開發(fā)方法的概念、目標和意義

字號:

基于構件的開發(fā)(Component-Based Development,簡稱CBD)或基于構件的軟件工程(Component-Based Software Engineering,簡稱CBSE)是一種軟件開發(fā)新范型,它是在一定構件模型的支持下,復用構件庫中的一個或多個軟件構件,通過組合手段高效率、高質量地構造應用軟件系統(tǒng)的過程[Brown00]。由于以分布式對象為基礎的構件實現(xiàn)技術日趨成熟,CBD已經(jīng)成為現(xiàn)今軟件復用實踐的研究熱點,被認為是潛力的軟件工程發(fā)展方向之一。
    一、 基本概念
    下面簡單介紹與本文相關的一些概念,包括構件、接口、契約、接口描述語言、構件框架等,另外還介紹了CBD的開發(fā)模式,以及構件技術和對象技術的關系。
    在文獻[Szyperski97]中,Szyperski把構件定義為“軟件構件是一個僅帶特定契約接口和顯式語境依賴的結構單元”,同時他還寫道:“軟件構件可以獨立部署,易于第三方整合。”
    根據(jù)這個觀點,可以認為構件由一方定義其規(guī)格說明,被另一方實現(xiàn),然后供給第三方使用。接口(interface)是用戶與構件發(fā)生交互的連接渠道,第三方只能通過構件接口的規(guī)格說明理解和復用構件,接口規(guī)格說明也是一種“契約”(contract),它足夠精確地描述構件實現(xiàn)的功能,同時又不把構件限定于的實現(xiàn)方法,這種不確定帶來多解決方案的靈活性。另一方面,雖然構件可以獨立部署的,但是一個構件可能會用到其它構件或平臺提供的服務,或者說基于構件的軟件系統(tǒng)中通常是多個構件協(xié)作完成一定功能,所以構件依賴于組裝環(huán)境或稱為語境(context)。
    構件基礎設施(infrastructure)是異構構件互操作的標準和通信平臺,構件框架(Framework)是構件實例“即插即用”的支撐結構。通過一定的環(huán)境條件和交互規(guī)則,構件框架允許一組構件形成一個“孤島”,獨立地與外部構件或其他框架交互和協(xié)作,因此構件框架及其內含的構件也可以視為一個構件,于是構件通過不斷的迭代和合成,構成一個結構復雜的應用系統(tǒng)。目前,有多個組織和公司制定了構件基礎設施的標準或開發(fā)了相關產(chǎn)品,也為構件、構件框架和接口建立了模型和技術規(guī)范,其中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是無源碼的完全黑盒復用,既有成本低、即買即用的優(yōu)點,又有不一定滿足需求或誤配的風險。
    CBD遵循“購買而不創(chuàng)建(buy, don’t build)”的開發(fā)哲學[Clements95],讓人們從“一切從頭開始”(build from scratch)的程序編制轉向軟件組裝。基于構件的開發(fā)任務包括創(chuàng)建、檢索和評價、適配(adaptation)、組裝、測試和驗證、配置和部署(deployment)、維護和演進,以及遺產(chǎn)系統(tǒng)(legacy)的再工程等主要活動,它們與傳統(tǒng)的生命周期中的方法不盡相同。首先,CBD采用以構件庫為中心的開發(fā)模式,構件檢索和評價是CBD的一項關鍵任務,這里我們理解的構件庫不僅僅是一個獨立的數(shù)據(jù)庫,而是廣泛的、一切可獲得的構件資源,尤其是通過互聯(lián)網(wǎng)發(fā)布的軟件構件。其次,構件形成是一種在軟件體系結構支持下的組裝過程,也就是說,在應用領域里需要用DSSA將獨立的構件組裝成完整的應用系統(tǒng),可見構件的匹配和一致性驗證也成為CBD的關鍵任務。再次,CBD過程中需要同一些技術標準化接軌,相同的構件可能由多個軟件供應商生產(chǎn),被多個用戶使用,所以構件接口、構件基礎設施必須標準化。最后,CBD需要配置管理(Configuration Management),即專門處理構件的集成、配置和發(fā)布(distribution)的有關事宜,于是構件的配置、適配和部署都是CBD的關鍵任務。