簡(jiǎn)介
可重用組件是指通過(guò)對(duì)以往組件進(jìn)行局部修改或者不修改就可以組成新的軟件??芍赜密浖且钥芍赜媒M件為基礎(chǔ)??芍赜媒M件設(shè)計(jì)的目的是更好地實(shí)現(xiàn)可重用組件。
組件組件技術(shù)是 90 年代初出現(xiàn)的一種新技術(shù),它是在結(jié)構(gòu)化設(shè)計(jì)和面向?qū)ο蠹夹g(shù)的基礎(chǔ)上發(fā)展起來(lái)的,是面向?qū)ο蠹夹g(shù)之后的軟件開(kāi)發(fā)的標(biāo)準(zhǔn)方法體系,是面向?qū)ο蟮拈_(kāi)發(fā)技術(shù)的延伸 。因此,組件具有面向?qū)ο蟮奶卣?。由于組件能夠獨(dú)立地實(shí)現(xiàn)其功能而不依賴與其它外部環(huán)境,它能夠被高度的重用。在理想的環(huán)境下,組件的實(shí)現(xiàn)及應(yīng)用與開(kāi)發(fā)語(yǔ)言和平臺(tái)無(wú)關(guān) 。因此組件具有功能獨(dú)立性 、 高度的可重用性 、 與語(yǔ)言和平臺(tái)無(wú)關(guān)性等特點(diǎn) 。建立一個(gè)組件時(shí)應(yīng)該考慮:①組件應(yīng)該是完整的;②組件應(yīng)該重點(diǎn)解決一個(gè)問(wèn)題;③組件及其對(duì)象方法、屬性和事件應(yīng)該容易理解;④組件應(yīng)該具有新功能;⑤在安裝組件之前應(yīng)該調(diào)試它們; ⑥考慮使用第三方組件開(kāi)發(fā)工具。
可重用組件的描述組件的描述分為兩個(gè)部分:組件說(shuō)明部分和組件實(shí)現(xiàn)部分。 任何可重用組件都必須要有特征說(shuō)明( 重用組件的類型信息) 和規(guī)則說(shuō)明( 組件的動(dòng)態(tài)行為),分別描述重用組件的靜態(tài)特征和動(dòng)態(tài)語(yǔ)義。另外,在描述重用組件的信息中還應(yīng)包括組件接口信息,例如組件是客戶組件還是服務(wù)者組件。一個(gè)組件可以有多個(gè)“ 提供”接口和“ 要求”接口。 甚至還可以包括組件的配置特性,例如其開(kāi)發(fā)環(huán)境( 編程語(yǔ)言、對(duì)象模型) 和運(yùn)行環(huán)境( 操作系統(tǒng)等)。
可重用 組件的存儲(chǔ)目前比較廣泛的存儲(chǔ)方法是將組件分類存儲(chǔ)。分類的模式主要有:①基于關(guān)鍵詞的面分類模式和枚舉分類模式。 面分類模式可同時(shí)考慮部件幾種不同方面或特性;枚舉模式是一種一維的信息分類模式。 ②基于功用與環(huán)境分類模式。 功用描述組件的功能,包括: 系統(tǒng)類型、功能范圍和應(yīng)用領(lǐng)域。
檢索檢索組件庫(kù)的方法有三種,第一種是信息科學(xué)索引方法。 如以關(guān)鍵字或者模糊匹配為主的檢索系統(tǒng),它主要適用于小型重用組件庫(kù)的查找。 第二種是基于知識(shí)的方法。 它用于自動(dòng)檢索機(jī)制的系統(tǒng)中。通過(guò)檢索控制規(guī)則庫(kù)( 存有各種檢索單位的檢索規(guī)則) 和字典庫(kù)( 存有同義詞、包含關(guān)系詞、領(lǐng)域關(guān)系詞等),在推理機(jī)的作用下,根據(jù)查詢要求進(jìn)行推理,查出滿足條件的目標(biāo)。 檢索方式可采用交互式語(yǔ)義網(wǎng)絡(luò)聯(lián)想查詢、條件查詢、專家選擇查詢等。 典型的檢索方法如:Wood 等應(yīng)用概念依賴模型,采用框架形式描述和檢索組件;Tarumi 提出的支持面向?qū)ο蟮能浖赜铆h(huán)境中使用的關(guān)系描述檢索,方法是, 當(dāng)用戶給出對(duì)象名、屬性、關(guān)系和操作的輸入,由基于規(guī)則的機(jī)制匹配相應(yīng)的組件。 第三種是超級(jí)文本方法。 它是前兩種方法的結(jié)合, 其表示形式直觀、易于使用1。
組件組裝的基本過(guò)程確定系統(tǒng)總體構(gòu)架;
快速構(gòu)筑總體框架;
確定所需的組件,并將所需的組件盡量分解成原子組件并檢索組件;
將檢索出的原子組件盡量綁定成較大的復(fù)合組件。 根據(jù)組件的接口進(jìn)行組裝;
將復(fù)合組件、原子組件和用戶自定義的組件組裝成目標(biāo)系統(tǒng)。
在綁定過(guò)程中,如果兩個(gè)組件可以構(gòu)成一對(duì)客戶/ 服務(wù)者,就將它們綁定起來(lái),否則就要用到適配器。如果客戶和服務(wù)者的接口兼容但并不完全相同,則可以用適配器對(duì)客戶或服務(wù)者進(jìn)行調(diào)整,如果沒(méi)有與某組件匹配的組件,則可以產(chǎn)生一個(gè)適配器模板,留給用戶填寫(xiě)客戶或者服務(wù)者組件,即用戶自定義的組件。 利用可重用組件組裝成目標(biāo)系統(tǒng)的過(guò)程表示如下:
要求組件均是符合 COM 標(biāo)準(zhǔn)的組件,如果是普通組件,則要求轉(zhuǎn)換為 COM 標(biāo)準(zhǔn)組件,從而使組件可以在許多編程環(huán)境下重用。 這樣組裝時(shí)比較容易。 組件可以在某個(gè)容器或?qū)iT的組裝工具內(nèi)進(jìn)行組裝。 很多工具都提供了此功能。
常見(jiàn)組件模型在組件規(guī)范化的過(guò)程串,許多公司做了很多的努力并取得了一定的成功。下面介紹一下常見(jiàn)的組件模型。
(1)CORBA :CORBA 是由 OMG( 對(duì)象管理集團(tuán) ) 開(kāi)發(fā)的工業(yè)版本,是用來(lái)解決以下的問(wèn)題:系統(tǒng)獨(dú)立于操作系統(tǒng),系統(tǒng)基于網(wǎng)絡(luò)且功能分布開(kāi)各機(jī)器之間, 組件開(kāi)發(fā)獨(dú)立于語(yǔ)言。
(2)COM( 組件對(duì)象模型 ) :COM 是由微軟公司提出并實(shí)踐的組件模型。 COM 是用于“ 便利系統(tǒng)能夠通過(guò)獨(dú)立開(kāi)發(fā)的二進(jìn)制組件,動(dòng)態(tài)、 有效地合成系統(tǒng)的組件重用” [BOX 1998] 。 COM 組件是二進(jìn)制層次上的組件復(fù)用,是基于接口的編程, 模塊間的耦合度低,易于部署和軟件的升級(jí)。
(3)EJB 組件: EJB 是用于開(kāi)發(fā)安全、 可擴(kuò)展、 事務(wù)型和多用戶組件的一種分布式組件模型。 EJB 可以部署在分布式多層體系結(jié)構(gòu)環(huán)境中的服務(wù)器端的軟件組件,它允許把應(yīng)用程序邏輯與系統(tǒng)級(jí)服務(wù)分開(kāi),使系統(tǒng)開(kāi)發(fā)人員集中精力編寫(xiě)具體的業(yè)務(wù)處理問(wèn)題,而不必關(guān)心系統(tǒng)的編程。每個(gè) EJB 可由一個(gè)或多個(gè) Java 對(duì)象組成,每個(gè) EJB 是按照相同的規(guī)范開(kāi)發(fā)的,Bean 之間可以相互調(diào)用,實(shí)現(xiàn)任務(wù)的分解和進(jìn)行業(yè)務(wù)處理, 具有非常高的擴(kuò)展性2。
(4) .Net 組件:.NET 就是借鑒 Java,采用 XML,并遠(yuǎn)遠(yuǎn)超出 Java 的新的體系。.NET 允許添加類似關(guān)鍵字的描述性聲明來(lái)批注編程元素的元數(shù)據(jù),可以實(shí)現(xiàn)被封裝的對(duì)象類、 類樹(shù)、 功能模塊、 軟件框架、 軟件構(gòu)架 ( 或體系結(jié)構(gòu) ) 、 文檔、 分析件、 設(shè)計(jì)模式等。