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