構件也稱為組件(component),是一個功能相對獨立的具有可復用價值的軟件單元。在面向對象的方法中,一個構件有一組對象組成,包含可一些協作的類的集成,它們協同工作來提供一種系統功能。可復用性是指系統和其組成部分能在其它系統重復使用的功能。軟件開發的聲生命周期都有可復用的價值,包括項目的組織,軟件需求、設計、文檔、實現,測試方法和測試用例,都是可以被重復利用和借鑒的有效資源,可復用性體現在軟件的各個層次。
軟甲復用的形式可分為垂直式復用和水平式復用。水平式復用是復用不同應用領域中的軟件元素。標準函數庫是一種典型的原始水平式復用機制;垂直式復用是在一類具有較多公共性的應用領域之間復用軟件構件。由于由于在兩個截然不同的應用領域之間進行軟件復用潛力不大,所以垂直式復用受到廣泛關注。
一.主流構件標準
為了達到復用的目的,構件應當是內聚的,并具有穩定的、公開的接口。為了是構件更切合實際、更有效地被復用,構件應當具備可變現,以提高其通用性。為了將不同軟件開發商在不同軟硬件平臺上開發的構件組裝成一個應用系統,必須解決異構平臺的各構件之間的互操作問題。目前,主流的構件標準有對象管理集團(OMG)的CORBA,Microsoft的構件對象模型COM和分布式構件對象模型DCOM和sun的java企業Bean,EJB。
1.CORMA
CORMA是由OMG指定的一個工業標準,其主要目標是提供一種機制,使得對象可以透明的發出請求和獲得應答,從而建立一個分布式應用環境。
在OMG的對象管理結構中,ORB是一個關鍵的通信機制,它以實現互操作性為主要目標,處理對象之間的消息分布。CORBA定義了一種面向對象的構件開發方法,使不同的應用系統可以共享構件。每個對象都將其內部操作細節封裝起來,同時又向外界提供精確定義的接口,從而降低了應用系統的復雜性,也減低了軟件開發費用。
2.EJB
EJB是用于開發和部署多層結構的、分布式的,面向對象的java應用系統的跨平臺的構件架構。使用EJS編寫的應用程序具有可擴展性和交互性,以及多用戶的安全的特性。這些應用只需要寫一次,就可以發布到任何支持EJB規范的服務器平臺上。
3.COM/DCOM
Microsoft的COM定義了構件和它們的客戶之間相互作用的方式,使得構件和客戶端無需任何中介構件就能相互聯系。DCOM擴展了COM,使其能夠支持在局域網、廣域網甚至Internet上不同計算機的對象之間的通信。DCOM是COM的無縫擴展,所以可以將基于COM的應用,構件、工具和知識轉移到標準化的分布式計算領域中。
二.構件的獲取與管理
存在大量的、可復用的構架是有效地使用復用技術的前提。對大量的構件進行有效地管理,以方便構件的存儲,檢索和提取,是成功復用構件的必要保證。
1.構件的獲取
基于構件的軟件開發中,可以通過多種不同的途徑來獲取構件:(1)從現有構件中獲取符和要求的構件;(2)通過遺留工程,將具有潛在復用價值的構件提取出來,得到可復用的構件。(3)從市場上購買現成的商業構件;(4)開發新的符和要求的構件。
2.構件的組織
當企業獲得了數量眾多的構件之后,就需要建立構件庫。為了給復用者在查詢構件時提供方便,同時也為了更好的復用構件,必須對獲取的構件進行分類,并置于構件庫的適當位置。可復用技術對構件庫組織的方法的要求如下所述。
(1)支持構件庫的各種維護動作;
(2)不僅要支持精確匹配,還要支持相似構件的查找
(3)不僅能進行簡單的語法匹配,而且能夠查找在功能或行為方面等價或相似的構件。
(4)對應用領域具有較強的描述能力和較好的描述精度。
(5)管理員和用戶容易使用。
構件的分類方法可以分為三大類:關鍵字分類法,刻面分類法和超文本組織方法。
(1)關鍵字分類法:關鍵字分類法將應用領域的概念按照從抽象到具體的順序逐次分解為樹形圖結構,每一個概念用一個描述性的關鍵字表示。
(2)刻面分類法。刻面分類法定義若干刻畫構件特征的刻面,每個面保護若干概念,這些概念描述構件在刻面上的特征。
(3)超文本方法。與基于數據庫系統的構件庫組織方法不同,基于全文檢索技術, 其主要思想是:所有構件必須輔以詳盡的功能或行為說明文檔;說明中出現的重要概念或構件以網狀鏈接方式相互連接;檢索者在閱讀文檔的過程中可按照人類的聯想思維方 式任意跳轉到包含相關概念或構件的文檔;全文檢索系統將用戶給出的關鍵字與說明文 檔中的文字進行匹配,實現構件的瀏覽式檢索。超文本組織方法為開發和復用構件提供了直觀的多媒體方式。由于網狀結構比較自由、松散,因此,超文本方法比前兩種方法更易于修改構件庫的結構。
三.構建復用的方法
軟件開發的目的是復用,要讓構件在新的軟件系統中發揮作用,復用者首先必須檢索與提取構件,然后理解與評價構件。
1.檢索與提取構件
(1)基于關鍵字的檢索
系統在圖形用戶界面上將構件庫的關鍵字樹形結構直觀地展示給用戶,復用者通過樹形結構的逐級瀏覽,尋找關鍵字并提取響應的構件。
(2)刻面檢索法。
該方法基于刻面分類法,有三部構成,分別是構造查詢、檢索構件和對構件進行排序。
(3)超文本檢索法。復用者首先給出一個或數個關鍵字,系統在構件的說明文檔中進行精確或模糊的語法匹配,匹配成功后,向復用者列出相應的構件說明。
2.理解與評價構件
要使庫中的構件在當前的開發項目中發揮作用,準確地理解構件是至關重要的,要求構件的開發過程遵循公共標準,在構件庫的文檔中全面而準的說明構件的功能與行為、相關領域的知識、可適應性約束條件與例外情形、可預見的修改部分及修改方法。對構件可復用性的評價,是通過收集并分析構件的復用者在實際復用該構件的歷史過程中的各種反饋信息來完成的。這些信息包括復用成功的次數、對構件的修改量、構件的健壯性度量和其他性能度量等。
3.修改構件
大多數情況下,必須對構件進行或多或少的修改,以適應新的需求。為了減少構件修改的工作要求開發人員盡量使構件的功能、行為和接口設計更為抽象化、通用化和參數化。這樣,復用者即可通過對實參的選取來調整構件的功能或行為。如果這種調整仍不足以使構件適用于新系統,復用者就必須借助設計信息和文檔來修改構件。
4.構件的組裝
構件的組裝時指將庫中的構件經適當修改后相互連接,或將他們與當前的開發系統中的軟件元素相連接,最終構成新的目標軟件。構件組裝技術大致可以分為三種:基于功能的組裝技術、基于數據的組裝技術和面向對象的組裝技術。