構(gòu)件的定義

          Posted on 2005-08-27 11:14 publisher luo 閱讀(3131) 評(píng)論(0)  編輯  收藏 所屬分類: 引用技術(shù)文章
                基于構(gòu)件的開(kāi)發(fā)(Component-Based Development,簡(jiǎn)稱CBD)或基于構(gòu)件的軟件工程(Component-Based Software Engineering,簡(jiǎn)稱CBSE)是一種軟件開(kāi)發(fā)新范型,它是在一定構(gòu)件模型的支持下,復(fù)用構(gòu)件庫(kù)中的一個(gè)或多個(gè)軟件構(gòu)件,通過(guò)組合手段高效率、高質(zhì)量地構(gòu)造應(yīng)用軟件系統(tǒng)的過(guò)程   
                由于以分布式對(duì)象為基礎(chǔ)的構(gòu)件實(shí)現(xiàn)技術(shù)日趨成熟,CBD已經(jīng)成為現(xiàn)今軟件復(fù)用實(shí)踐的研究熱點(diǎn),被認(rèn)為是最具潛力的軟件工程發(fā)展方向之一。
                 一、 基本概念
            下面簡(jiǎn)單介紹與本文相關(guān)的一些概念,包括構(gòu)件、接口、契約、接口描述語(yǔ)言、構(gòu)件框架等,另外還介紹了CBD的開(kāi)發(fā)模式,以及構(gòu)件技術(shù)和對(duì)象技術(shù)的關(guān)系。
            在文獻(xiàn)[Szyperski97]中,Szyperski把構(gòu)件定義為“軟件構(gòu)件是一個(gè)僅帶特定契約接口和顯式語(yǔ)境依賴的結(jié)構(gòu)單元”,同時(shí)他還寫道:“軟件構(gòu)件可以獨(dú)立部署,易于第三方整合。”
             根據(jù)這個(gè)觀點(diǎn),可以認(rèn)為構(gòu)件由一方定義其規(guī)格說(shuō)明,被另一方實(shí)現(xiàn),然后供給第三方使用。接口(interface)是用戶與構(gòu)件發(fā)生交互的連接渠道,第 三方只能通過(guò)構(gòu)件接口的規(guī)格說(shuō)明理解和復(fù)用構(gòu)件,接口規(guī)格說(shuō)明也是一種“契約”(contract),它足夠精確地描述構(gòu)件實(shí)現(xiàn)的功能,同時(shí)又不把構(gòu)件限 定于唯一的實(shí)現(xiàn)方法,這種不確定帶來(lái)多解決方案的靈活性。另一方面,雖然構(gòu)件可以獨(dú)立部署的,但是一個(gè)構(gòu)件可能會(huì)用到其它構(gòu)件或平臺(tái)提供的服務(wù),或者說(shuō)基 于構(gòu)件的軟件系統(tǒng)中通常是多個(gè)構(gòu)件協(xié)作完成一定功能,所以構(gòu)件依賴于組裝環(huán)境或稱為語(yǔ)境(context)。
            構(gòu)件基礎(chǔ)設(shè)施 (infrastructure)是異構(gòu)構(gòu)件互操作的標(biāo)準(zhǔn)和通信平臺(tái),構(gòu)件框架(Framework)是構(gòu)件實(shí)例“即插即用”的支撐結(jié)構(gòu)。通過(guò)一定的環(huán)境 條件和交互規(guī)則,構(gòu)件框架允許一組構(gòu)件形成一個(gè)“孤島”,獨(dú)立地與外部構(gòu)件或其他框架交互和協(xié)作,因此構(gòu)件框架及其內(nèi)含的構(gòu)件也可以視為一個(gè)構(gòu)件,于是構(gòu) 件通過(guò)不斷的迭代和合成,構(gòu)成一個(gè)結(jié)構(gòu)復(fù)雜的應(yīng)用系統(tǒng)。目前,有多個(gè)組織和公司制定了構(gòu)件基礎(chǔ)設(shè)施的標(biāo)準(zhǔn)或開(kāi)發(fā)了相關(guān)產(chǎn)品,也為構(gòu)件、構(gòu)件框架和接口建立 了模型和技術(shù)規(guī)范,其中OMG CORBA[OMG01]、Microsoft COM/DCOM(或.NET)[Microsoft01, Box99]以及Sun JavaBean/EJB[Perrone01]占主導(dǎo)地位,本文第六章將重點(diǎn)討論CORBA CCM(CORBA Component Model)構(gòu)件模型,并介紹基于CCM技術(shù)的演化構(gòu)件模型。
            特別地,通過(guò)購(gòu)買獲得的第三方構(gòu)件稱為COTS(commercial off-the-shelf ,簡(jiǎn)稱COTS)構(gòu)件,作為內(nèi)部(in-house)構(gòu)件的對(duì)應(yīng)概念。使用COTS是無(wú)源碼的完全黑盒復(fù)用,既有成本低、即買即用的優(yōu)點(diǎn),又有不一定滿足需求或誤配的風(fēng)險(xiǎn)。
             CBD遵循“購(gòu)買而不創(chuàng)建(buy, don’t build)”的開(kāi)發(fā)哲學(xué)[Clements95],讓人們從“一切從頭開(kāi)始”(build from scratch)的程序編制轉(zhuǎn)向軟件組裝。基于構(gòu)件的開(kāi)發(fā)任務(wù)包括創(chuàng)建、檢索和評(píng)價(jià)、適配(adaptation)、組裝、測(cè)試和驗(yàn)證、配置和部署 (deployment)、維護(hù)和演進(jìn),以及遺產(chǎn)系統(tǒng)(legacy)的再工程等主要活動(dòng),它們與傳統(tǒng)的生命周期中的方法不盡相同。首先,CBD采用以構(gòu) 件庫(kù)為中心的開(kāi)發(fā)模式,構(gòu)件檢索和評(píng)價(jià)是CBD的一項(xiàng)關(guān)鍵任務(wù),這里我們理解的構(gòu)件庫(kù)不僅僅是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù),而是廣泛的、一切可獲得的構(gòu)件資源,尤其 是通過(guò)互聯(lián)網(wǎng)發(fā)布的軟件構(gòu)件。其次,構(gòu)件形成是一種在軟件體系結(jié)構(gòu)支持下的組裝過(guò)程,也就是說(shuō),在應(yīng)用領(lǐng)域里需要用DSSA將獨(dú)立的構(gòu)件組裝成完整的應(yīng)用 系統(tǒng),可見(jiàn)構(gòu)件的匹配和一致性驗(yàn)證也成為CBD的關(guān)鍵任務(wù)。再次,CBD過(guò)程中需要同一些技術(shù)標(biāo)準(zhǔn)化接軌,相同的構(gòu)件可能由多個(gè)軟件供應(yīng)商生產(chǎn),被多個(gè)用 戶使用,所以構(gòu)件接口、構(gòu)件基礎(chǔ)設(shè)施必須標(biāo)準(zhǔn)化。最后,CBD需要配置管理(Configuration Management),即專門處理構(gòu)件的集成、配置和發(fā)布(distribution)的有關(guān)事宜,于是構(gòu)件的配置、適配和部署都是CBD的關(guān)鍵任務(wù)。
             構(gòu)件技術(shù)與面向?qū)ο蠹夹g(shù)緊密相關(guān)。構(gòu)件和對(duì)象都是對(duì)現(xiàn)實(shí)世界的抽象描述,通過(guò)接口封裝了可復(fù)用的代碼實(shí)現(xiàn),不同的是,首先在概念層面上,對(duì)象描述客觀世 界實(shí)體(identity),構(gòu)件提供客觀世界服務(wù)(service)[Petre00],其次在復(fù)用策略上,對(duì)象是通過(guò)繼承實(shí)現(xiàn)復(fù)用,而構(gòu)件是通過(guò)合成 實(shí)現(xiàn)復(fù)用;最后在技術(shù)手段上,構(gòu)件通過(guò)對(duì)象技術(shù)而實(shí)現(xiàn),對(duì)象按規(guī)定經(jīng)過(guò)適當(dāng)?shù)慕涌诎b(wrap)之后成為構(gòu)件,一個(gè)構(gòu)件通常是多個(gè)對(duì)象的集合體。
            當(dāng)今,構(gòu)件技術(shù)已經(jīng)成為計(jì)算環(huán)境的基本組成之一,眾多中間件產(chǎn)品和開(kāi)發(fā)工具提供了對(duì)不同構(gòu)件模型的實(shí)現(xiàn)支持,特別在分布式、企業(yè)級(jí)應(yīng)用軟 件系統(tǒng)中,無(wú)不把軟件的構(gòu)件化作為解決維護(hù)、擴(kuò)展和升級(jí)的唯一途徑。然而,雖然業(yè)已存在了大量的CBD概念、方法和工具,軟件業(yè)并未完全遷移到CBD軟件 開(kāi)發(fā)范型,一個(gè)主要原因是缺少一套成熟的CBD開(kāi)發(fā)方法學(xué),至今尚未完全解決如下關(guān)鍵問(wèn)題[Bergner99]:
            (1)必須建立一個(gè)完善的CBD概念框架,用數(shù)學(xué)方法定義構(gòu)件相關(guān)概念的形式化模型,既要盡可能的簡(jiǎn)單,又要足以描述已有的構(gòu)件基本概念和開(kāi)發(fā)技術(shù)。
            (2)必須有切實(shí)可行的構(gòu)件描述方法和技術(shù)。在構(gòu)件概念框架基礎(chǔ)上,為構(gòu)件開(kāi)發(fā)者建立相互交流的特殊語(yǔ)言,例如UML[Booch01]的圖形化描述技術(shù)和CORBA IDL[OMG01]的文本描述技術(shù),理想的描述技術(shù)可以提供系統(tǒng)的一致性約束和正確性驗(yàn)證。
            (3)要為CBD的開(kāi)發(fā)流程建立一個(gè)合理的過(guò)程模型,特別要研究如何為扮演不同角色的開(kāi)發(fā)者分配相應(yīng)的任務(wù),例如軟件體系結(jié)構(gòu)設(shè)計(jì)師負(fù)責(zé)軟件構(gòu)架設(shè)計(jì)的詳細(xì)職責(zé)和結(jié)果驗(yàn)收標(biāo)準(zhǔn)。
            (4)要有支持描述技術(shù)和過(guò)程模型的輔助開(kāi)發(fā)工具,至少需要具備開(kāi)發(fā)構(gòu)件、實(shí)現(xiàn)應(yīng)用系統(tǒng)和生成文檔的工具。理想的開(kāi)發(fā)工具還包括關(guān)鍵系統(tǒng)特征的驗(yàn)證工具。
             顯見(jiàn),上述這些問(wèn)題和前面介紹的軟件復(fù)用目的和任務(wù)緊密相關(guān),必須從軟件復(fù)用的認(rèn)識(shí)高度分析CBD方法中存在的問(wèn)題,重點(diǎn)是使用知識(shí)表示方法和演化計(jì)算 方法解決構(gòu)件的語(yǔ)義模型和自動(dòng)過(guò)程問(wèn)題,包括CBD原理和技術(shù)中的構(gòu)件模型、構(gòu)件體系結(jié)構(gòu)和描述語(yǔ)言和基于構(gòu)件的開(kāi)發(fā)過(guò)程等幾方面內(nèi)容。
          二、 CBSE/CBD的工程學(xué)目標(biāo)
            CBSE/CBD的工程學(xué)(管理)目標(biāo)如下:
            (1) 降低費(fèi)用:這是所有軟件開(kāi)發(fā)方法學(xué)的共同目標(biāo),CBSE/CBD把成本效率提高到軟件復(fù)用方法的最高境界。
            (2) 方便裝配:CBSE/CBD的最大特征是一系列構(gòu)件的裝配過(guò)程。
            (3) 提高復(fù)用性:全面考慮構(gòu)件在多個(gè)應(yīng)用系統(tǒng)中的復(fù)用潛力。
            (4) 提高可定制性和適應(yīng)性:開(kāi)發(fā)者可以按需配置構(gòu)件;
            (5) 提高可維護(hù)性:在系統(tǒng)中可以方便地添加、刪除和修改構(gòu)件。
          三、 CBSE/CBD的技術(shù)目標(biāo)
            CBSE/CBD的技術(shù)目標(biāo)如下:
            (1) 降低耦合:耦合指構(gòu)件之間的相關(guān)性;
            (2) 提高內(nèi)聚:內(nèi)聚指構(gòu)件內(nèi)元素之間的相關(guān)性;
            (3) 控制粒度:粒度系統(tǒng)中構(gòu)件對(duì)應(yīng)問(wèn)題域的規(guī)模,包括構(gòu)件數(shù)量和大小兩個(gè)方面;
          四、 CBSE/CBD的研究方向
            CBSE/CBD的研究方向:
            (1) 基于構(gòu)件軟件工程方法的概念模型過(guò)程模型;
            (2) 構(gòu)件模型:研究構(gòu)件的本質(zhì)特征及構(gòu)件間的關(guān)系;
            (3) 構(gòu)件獲取:有目的的構(gòu)件生產(chǎn)和從已有系統(tǒng)中挖掘提取構(gòu)件;
            (4) 構(gòu)件描述語(yǔ)言:以構(gòu)件模型為基礎(chǔ),解決構(gòu)件的精確描述、理解及組裝問(wèn)題;
            (5) 構(gòu)件庫(kù)(構(gòu)件分類與檢索):研究構(gòu)件分類策略、組織模式及檢索策略,建立構(gòu)件庫(kù)系統(tǒng),支持構(gòu)件的有效管理;
            (6) 構(gòu)件集成組裝:在構(gòu)件模型的基礎(chǔ)上研究構(gòu)件組裝機(jī)制,包括源代碼級(jí)的組裝和基于構(gòu)件對(duì)象互操作性的運(yùn)行級(jí)組裝;
            (7) 標(biāo)準(zhǔn)化:構(gòu)件模型的標(biāo)準(zhǔn)化和構(gòu)件庫(kù)系統(tǒng)的標(biāo)準(zhǔn)化;
            (8) 構(gòu)件系統(tǒng)的安全性問(wèn)題和時(shí)效(real-time)問(wèn)題;
            (9) 非技術(shù)因素對(duì)CBD的影響:法律法規(guī)、商業(yè)實(shí)踐、組織結(jié)構(gòu)等方面的挑戰(zhàn)和策略。
          參考文獻(xiàn)
          [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構(gòu)建企業(yè)系統(tǒng)—專家級(jí)解決方案. 北京: 清華大學(xué)出版社, 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用戶指南,機(jī)械工業(yè)出版社,2001.6

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 9, comments - 27, trackbacks - 0, articles - 19

          Copyright © publisher luo

          主站蜘蛛池模板: 乐昌市| 长顺县| 斗六市| 涟源市| 新和县| 永修县| 安图县| 康定县| 潼关县| 伊春市| 兴安盟| 平果县| 古蔺县| 凤凰县| 定安县| 方正县| 定南县| 衢州市| 诸城市| 卫辉市| 武穴市| 正蓝旗| 白水县| 年辖:市辖区| 共和县| 云霄县| 英超| 潞西市| 光泽县| 治多县| 平遥县| 博白县| 德令哈市| 余江县| 江达县| 宁晋县| 秦皇岛市| 河南省| 噶尔县| 体育| 苗栗市|