《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 基于構(gòu)件的組裝開(kāi)發(fā)環(huán)境

基于構(gòu)件的組裝開(kāi)發(fā)環(huán)境

2008-12-22
作者:謝曉芹 李涓子 徐鵬 王克宏
1 引言
??? 構(gòu)件是可獨(dú)立開(kāi)發(fā)和部署的單元,,它具有自包含性,,可重用性?;跇?gòu)件的軟件開(kāi)發(fā)可以提高軟件開(kāi)發(fā)效率和產(chǎn)品質(zhì)量, 基于構(gòu)件的軟件開(kāi)發(fā)要求相應(yīng)的工具支持. 基于構(gòu)件的開(kāi)發(fā)環(huán)境" title="開(kāi)發(fā)環(huán)境">開(kāi)發(fā)環(huán)境(Component-based Development Environment, 簡(jiǎn)稱(chēng)CBDE)已成為軟件工程領(lǐng)域的一個(gè)研究熱點(diǎn),。CBDE必須為用戶(hù)提供重用構(gòu)件的所有信息.本文介紹了構(gòu)件模型" title="構(gòu)件模型">構(gòu)件模型的研究現(xiàn)狀" title="研究現(xiàn)狀">研究現(xiàn)狀,,CBDE環(huán)境的需求以及java語(yǔ)言對(duì)CBDE需求的滿(mǎn)足,最后給出了一個(gè)原型系統(tǒng)實(shí)現(xiàn),。
2 構(gòu)件模型
??? 構(gòu)件的表現(xiàn)形式多種多樣,,但在組裝開(kāi)發(fā)環(huán)境中應(yīng)以一種統(tǒng)一的方式對(duì)其建模,才能實(shí)現(xiàn)異構(gòu)" title="異構(gòu)">異構(gòu)構(gòu)件的集成,,實(shí)現(xiàn)真正的構(gòu)件重用,。
2.1 構(gòu)件模型內(nèi)容
??? 構(gòu)件模型定義了構(gòu)件的本質(zhì)屬性,規(guī)定了構(gòu)件接口的結(jié)構(gòu)以及構(gòu)件之間,、構(gòu)件與構(gòu)件基礎(chǔ)設(shè)施之間的交互機(jī)制,。對(duì)構(gòu)件的建模通常包含以下幾個(gè)方面[1]:
。語(yǔ)法級(jí):傳統(tǒng)的接口描述語(yǔ)言,、通常的程序設(shè)計(jì)語(yǔ)言,;
。行為級(jí):通過(guò)前后條件來(lái)刻畫(huà)操作的語(yǔ)義,;
,。同步級(jí):設(shè)定構(gòu)件的不同操作之間的同步來(lái)保證相應(yīng)操作的原子性,;
。質(zhì)量級(jí):刻畫(huà)構(gòu)件所提供的服務(wù)的質(zhì)量,,如:最大響應(yīng)延遲,、平均響應(yīng)時(shí)間等。
,。非技術(shù)級(jí):包括作者,日期,公司名稱(chēng),關(guān)鍵詞等.
2.2 研究現(xiàn)狀
?? 目前在學(xué)術(shù)界和產(chǎn)業(yè)界出現(xiàn)了多種構(gòu)件模型,,其中Traczi 90年提出的3C模型是學(xué)術(shù)界普遍認(rèn)同的一個(gè)具有指導(dǎo)性作用的構(gòu)件模型。該模型從概念(Concept),、內(nèi)容(Content)和語(yǔ)境(Context)三個(gè)不同方面來(lái)描述構(gòu)件[3]:
,。概念:關(guān)于構(gòu)件做什么的抽象描述,可以通過(guò)概念去理解構(gòu)件的功能,。概念包括接口規(guī)范和語(yǔ)義描述兩個(gè)部分,。
。內(nèi)容:概念的具體實(shí)現(xiàn),,描述構(gòu)件如何完成概念所刻畫(huà)的功能,。
。語(yǔ)境:構(gòu)件和外圍環(huán)境在概念級(jí)和內(nèi)容級(jí)的關(guān)系,,語(yǔ)境刻畫(huà)構(gòu)件的應(yīng)用環(huán)境,,為構(gòu)件的選用和適應(yīng)性修改提供指導(dǎo)。
? ?但是3C模型本身沒(méi)有形式化的良好定義,。在產(chǎn)業(yè)界,,成熟的構(gòu)件模型有OMG的CORBA、Microsoft的COM/DCOM/COM+和SUN的JavaBeans/EJB,,它們?nèi)愣αⅲ瑯?gòu)成了實(shí)現(xiàn)級(jí)構(gòu)件模型工業(yè)標(biāo)準(zhǔn)的競(jìng)爭(zhēng)與互操作并存的格局,。但這些構(gòu)件模型有自己獨(dú)有的實(shí)現(xiàn)語(yǔ)法和語(yǔ)義,,要實(shí)現(xiàn)異構(gòu)構(gòu)件的共享有一定困難。 許多文獻(xiàn)提出了自己的構(gòu)件模型,,及其相應(yīng)的組裝方法,。但這些模型通常局限于專(zhuān)有的領(lǐng)域,缺乏通用性?,F(xiàn)有的構(gòu)件模型一般認(rèn)為構(gòu)件由構(gòu)件接口和構(gòu)件內(nèi)容兩部分組成,,構(gòu)件接口是為成功復(fù)用" title="復(fù)用">復(fù)用該軟件實(shí)體而需要提供給外界的所有信息,包括構(gòu)件向外提供和請(qǐng)求的服務(wù),、構(gòu)件的自描述信息和定制信息,、構(gòu)件的初始化、實(shí)例化和永久化方法以及構(gòu)件對(duì)目標(biāo)復(fù)用環(huán)境的依賴(lài)和構(gòu)件組裝信息等[4],。構(gòu)件內(nèi)容就是直接復(fù)用的軟件實(shí)體,,它可以具有源代碼,、二進(jìn)制碼、文檔,、分析設(shè)計(jì)模型和腳本等不同的物理形態(tài),,并遵從一定的格式標(biāo)準(zhǔn)。XML語(yǔ)言被用來(lái)作為構(gòu)件的描述語(yǔ)言,,將有利于基于Web的構(gòu)件復(fù)用,。Java語(yǔ)言作為跨平臺(tái)的語(yǔ)言可用來(lái)實(shí)現(xiàn)構(gòu)件內(nèi)容。
3 基于構(gòu)件的開(kāi)發(fā)環(huán)境(Component-Based Development Environment)
??? 基于構(gòu)件的開(kāi)發(fā)的前提除了要有大量可供選擇的構(gòu)件外,,還需要有相應(yīng)的工具支撐,。CBDE可幫助用戶(hù)完成基于構(gòu)件的開(kāi)發(fā)過(guò)程,為構(gòu)件的瀏覽,、定制和組裝提供統(tǒng)一平臺(tái),,從而支持異構(gòu)構(gòu)件的集成和組裝。
3.1 CBDE的功能需求
??? CBDE的設(shè)計(jì)必須滿(mǎn)足如下七種需求[2]:
,。?必須遵循模塊化設(shè)計(jì)的規(guī)則. CBDE環(huán)境能夠?qū)?gòu)件的私有部分和公開(kāi)部分進(jìn)行分離. 私有部分無(wú)法從構(gòu)件外部訪問(wèn),一般包括構(gòu)件的實(shí)現(xiàn)和資源兩部分. 公有部分包括構(gòu)件的自描述信息,實(shí)例化機(jī)制,以及可選的公共接口定義. 語(yǔ)法描述的基本單元是接口, 接口描述是獨(dú)立于構(gòu)件, 根據(jù)接口描述開(kāi)發(fā)商可以提供可互換的構(gòu)件.
,。?環(huán)境必須支持構(gòu)件的自描述, 構(gòu)件的元數(shù)據(jù)直接存儲(chǔ)在構(gòu)件內(nèi)部. 外部描述易造成構(gòu)件實(shí)現(xiàn)與描述數(shù)據(jù)的不一致性, 且不易構(gòu)件的查詢(xún). 而內(nèi)部自描述提供了自動(dòng)生成描述文件的可能性; 減輕了對(duì)構(gòu)件庫(kù)的要求;而且將構(gòu)件之間的依賴(lài)關(guān)系描述也封裝在構(gòu)件內(nèi)部,利于構(gòu)件實(shí)現(xiàn)的演化.
。?構(gòu)件必須在一個(gè)全局的接口名字空間內(nèi)定義和訪問(wèn). 這樣就能以全球唯一的方式命名構(gòu)件接口,從而降低名字空間的語(yǔ)義匹配問(wèn)題.
,。?環(huán)境必須支持構(gòu)件開(kāi)發(fā)和應(yīng)用組裝兩種開(kāi)發(fā)過(guò)程. CBDE支持傳統(tǒng)的構(gòu)件開(kāi)發(fā),但又擅長(zhǎng)于支持應(yīng)用組裝,構(gòu)件開(kāi)發(fā)集中在功能方面,應(yīng)用組裝著重于應(yīng)用的商業(yè)邏輯. 應(yīng)用組裝是包含搜索,選擇,配置構(gòu)件三步的一個(gè)迭代過(guò)程.
,。 必須支持多種視圖,包括開(kāi)發(fā)視圖,組裝視圖,類(lèi)型視圖和實(shí)例視圖. 前兩者表示前述的面向構(gòu)件的兩種開(kāi)發(fā)過(guò)程, 后兩者表示組裝視圖的兩種刻面.?
。?必須解決構(gòu)件的維護(hù)問(wèn)題. 引用重用可以解決構(gòu)件的演化問(wèn)題. 引用重用意味著在Internet上保存引用構(gòu)件的單一主備份,, 一般CBDE以緩存機(jī)制提供復(fù)制功能, 同時(shí)CBDE在使用構(gòu)件的應(yīng)用和存放該構(gòu)件的庫(kù)之間建立永久連接,這樣構(gòu)件能實(shí)現(xiàn)自動(dòng)更新.
3.2 Java語(yǔ)言對(duì)CBDE的支持
?? Java語(yǔ)言支持構(gòu)件技術(shù), 如SUN提出的構(gòu)件模型有JavaBean和Enterprise Java Bean. 而且Java語(yǔ)言能很好的滿(mǎn)足第2節(jié)中提出的需求[2].
,。?Java語(yǔ)言支持在類(lèi)級(jí)和包級(jí)的封裝. 一個(gè)構(gòu)件可以看成一個(gè)或多個(gè)類(lèi)或者是一個(gè)包.
。?Java語(yǔ)言用接口實(shí)現(xiàn)比多重繼承更強(qiáng)的功能,。接口和類(lèi)可以同等對(duì)待,,接口把方法的定義和類(lèi)的層次區(qū)分開(kāi)來(lái),通過(guò)它可以在運(yùn)行時(shí)動(dòng)態(tài)地定位所調(diào)用的方法,,有利于代碼的重用,。
。?Java提供反射機(jī)制,能在運(yùn)行時(shí)獲取構(gòu)件的型構(gòu)描述. 因此自動(dòng)生成構(gòu)件的自描述信息成為可能.
,。?Java接口使用一種世界通用的名字空間定義, 例如包的命名定義以反向的Internet域名開(kāi)始,。
。?Java支持動(dòng)態(tài)鏈接和后綁定,。
4 原型實(shí)現(xiàn)
??? 基于上述思想,,我們利用Java語(yǔ)言設(shè)計(jì)了構(gòu)件組裝引擎的原型系統(tǒng),系統(tǒng)的支撐運(yùn)行環(huán)境如圖1示,。Java作為構(gòu)件的實(shí)現(xiàn)語(yǔ)言,,XML作為構(gòu)件的描述語(yǔ)言,基于XML的體系結(jié)構(gòu)描述語(yǔ)言作為模式語(yǔ)言,。組裝模式描述了構(gòu)件間的連接方式,,它被看作是與構(gòu)件同等的實(shí)體,。組裝模式描述了角色之間的交互關(guān)系,一個(gè)構(gòu)件能扮演一個(gè)或多個(gè)角色,,一個(gè)角色也可被不同的構(gòu)件實(shí)現(xiàn),。該系統(tǒng)的主要功能模塊為:
1).用戶(hù)需求的可視化表示到構(gòu)件組裝腳本語(yǔ)言的轉(zhuǎn)換
a.?將用戶(hù)需求、構(gòu)件的使用場(chǎng)景以及構(gòu)件交互關(guān)系用相應(yīng)的文檔表示格式記錄下來(lái),。
b.?構(gòu)件間的交互可以用消息序列圖描述,,傳送的消息來(lái)自面向領(lǐng)域構(gòu)件間交互原語(yǔ)字典。這樣在描述構(gòu)件和組裝模式時(shí)能避免對(duì)API的直接調(diào)用,,增加重用性,。
2).構(gòu)件組裝語(yǔ)言編譯器設(shè)計(jì)實(shí)現(xiàn)
? ? 包括語(yǔ)法分析器,語(yǔ)義分析器和代碼生成器,。
??? 因?yàn)闃?gòu)件組裝語(yǔ)言采用XML語(yǔ)法結(jié)構(gòu),,語(yǔ)法分析器可以使用XML相關(guān)技術(shù)實(shí)現(xiàn)。語(yǔ)義分析器主要是針對(duì)消息序列圖和組裝語(yǔ)義定義實(shí)現(xiàn),。代碼生成器完成構(gòu)件組裝語(yǔ)言到最終系統(tǒng)編程語(yǔ)言的實(shí)現(xiàn),,主要是原語(yǔ)與具體API的映射。體現(xiàn)了應(yīng)用=構(gòu)件+腳本的理念,。

結(jié)論
??? 本文給出了構(gòu)件模型的研究現(xiàn)狀和存在問(wèn)題,,研究了基于構(gòu)件的開(kāi)發(fā)環(huán)境需滿(mǎn)足的條件,并利用Java語(yǔ)言實(shí)現(xiàn)了構(gòu)件組裝引擎原型系統(tǒng),,可視化構(gòu)件組裝模型的設(shè)計(jì)已應(yīng)用于數(shù)據(jù)表示引擎系統(tǒng)中,。

參考文獻(xiàn)
[1] Beugnard, A., Jézéquel, J.-M., Plouzeau, N., and Watkins, D. Making Components Contract Aware.
Computer 32, 7 (1999), 38-45.
[2] C. Lüer and D. Rosenblum, "WREN - An Environment for Component-Based Development", In Proceedings of the Joint 8th European Software Engineering Conference and 9th ACM Sigsoft International Symposium on the Foundations of Software Engineering (FSE-9), Vienna, 2001,
[3] Tracz, W., “Where Does Reuse Start?” Proc. Realities of Reuse Workshop, Syracuse University CASE Center, January 1990.
[4] 張波 基于XML的分布式軟件體系結(jié)構(gòu)研究 中科院博士學(xué)位論文 2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。