一、構件的定義
定義1:軟件構件是一種組裝單元,它具有規范的接口規約和顯式的語境依賴。軟件構件可以被獨立地部署并由第三方任意地組裝。
定義2:構件是某系統中有價值的、幾乎獨立的并可替換的一個部分,它在良好定義的體系結構語境內滿足某清晰的功能。
定義3:構件是一個獨立發布的功能部分,可以通過其接口訪問它的服務。
模塊的特性(結構化開發的產物)=> 對象的特性(1、一個實例單元,具有唯一的標志;2、可能具有狀態,此狀態外部可見;3、封裝了自己的狀態和行為。) => 構件的特性(獨立部署單元;1、2、作為第三方的組裝單元;3、沒有(外部的)可見狀態。)
構件系統架構特性
- 構件系統體系結構由一組平臺決策、一組構件框架和構件框架之間的互操作設計組成。
- 構件框架是一種專用的體系結構(通常圍繞一些關鍵的機制),同時,也是一組固定地 作用于構件層次機制的策略。
- 概念框架的互操作設計包括系統體系結構連接的所有框架間的互操作的規則。構件是一組通常需要同時部署的原子構件。
- 構件和原子構件之間的區別在于,大多數原子構件永遠都不會被單獨部署,盡管它們可以被單獨部署。
- 一個原子構件是一個模塊和一組資源。
- 模塊是一組類和可能的非面向對象的結構體,比如過程或者函數。
- 資源是一個類型化的項的固定集合。
- 資源這個概念可以包含代碼資源,進而包含模塊。問題在于除了編譯器編譯一個模塊或包生成的資源外,還可能存在其他的資源。在“純對象”的方法中,資源是外部化的不可改變的對象–不可改變是因為構件沒有持久化的標志,而且復制不能被區分。
二、中間件
中間件是一類構件
中間件是一類系統軟件
簡化結構、屏蔽差異、利于復用
ESB 企業服務總線也屬于一種中間件。
采用中間件技術的優點
(1)面向需求。即設計師集中精力于業務邏輯本身。
(2)業務的分隔和包容性。應用開發人員可以按照不同的業務進行功能的劃分,體現為不同的接口或交互模式。
(3)設計與實現隔離。構件對外發生作用或構件間的交互,都是通過接口進行的,構件使用者只需要知道構件的接口,而不必關心其內部實現,這是設計與實現分離的關鍵。
(4)隔離復雜的系統資源。架構很重要的一個功能就是將系統資源與應用構件隔離,這是保證構件可復用甚至“即插即用”的基礎,與中間件的意圖也是一致的。
(5)符合標準的交互模型。中間件則實現了架構的模型,實現了標準的協議。
(6)軟件復用。中間件提供了構件封裝、交互規則、與環境的隔離等機制,這些都為軟件復用提供了方便的解決方案。
(7)提供對應用構件的管理。基于中間件的軟件可以方便地進行管理,因為構件總可以通過標識機制進行劃分。
例如JDBC。
三、構件的復用
流程:
1、檢索與提取構件 (1、基于關鍵守的檢索特點: 樹形或有向無回路圖結構,2、刻面檢索法:特點:利用Facet描述構件執行的功能、被操作的數據、構件應用的語境或任意其他特征
例如:分多個刻面:1、應用領域使用環境、功能; 3、超文本檢索法 特點:按照人類的聯想思維方式任意跳轉到包含相關概念或構件的文檔)
2、理解與評價構件 (1、要復用構件,準確地理解構件至關重要。特別是對構件修改使用時。2、為達到目的,必須要求構件的開發過程遵循公共標準。3、一般構件庫的文檔中全面而準確地說明以下內容:構件的功能與行為、相關的領域知識、可適應性約束條件與例外情形、可以預見的修改部分及修改方法。)
3、修改構件 (1、理想狀態是直接復用構件庫中現成的構件,但大多數情況下,必須對構件進行或多或少的修改,以應對新需求。2、為了減少構件修改的工作量,要求開發人員盡量使構件的功能、行為和接口設計更為抽象化、通用化和參數化。這樣,復用者即可通過對實參的選取來調整構件的功能或行為。如果這種調整仍不足以使構件適用于新系統,復用者就必須借助設計信息和文檔來修改構件。3、構件庫中若無可修改使用的構件,則按新需求開發構件,并存入構件庫。)
4、組裝構件 (組裝的三種方式
1、基于功能的組裝:采用子程序調用和參數傳遞的方式將構件組裝起來。2、基于數據的組裝:仍然是傳統的子程序調用與參數傳遞。但它所依賴的軟件設計方法不再是功能分解,而是面向數據的設計方法,例如,Jackson系統開發方法。3、面向對象的組裝:如果從類庫中檢索出來的基類能夠完全滿足新系統的需求,則可以直接應用否則,必須以基類為父類,生成相應的子類,以滿足新系統的需求。
構件組裝失配問題
1、由構件引起的失配,包括由于系統對構件基礎設施、構件控制模型和構件數據模型的假設存在沖突引起的失配;
2、由連接子引起的失配,包括由于系統對構件交互協議、連接子數據模型的假設存在沖突引起的失配;
3、由于系統成分對全局體系結構的假設存在沖突引起的失配等。要解決失配問題,首先需要檢測出失配問題,并在此基礎上通過適當的手段消除檢測出的失配問題。)
例子:
軟件重用可以分為垂直式重用和水平式重用,()是一種典型的水平式重用。
A 醫學詞匯表
B標準函數庫
C 電子商務標準
D 網銀支付接口
參考答案:B
構件組裝是指將庫中的構件經適當修改后相互連接構成新的目標軟件。()不屬于構件組裝技術。
A 基于功能的構件組裝技術
B 基于數據的構件組裝技術
C基于實現的構件組裝技術
D 面向對象的構件組裝技術
參考答案:C
四、構件的分類
從構件的外部形態來看,構件可分為5類:
(1)獨立而成熟的構件。已在實際運行環境多次檢驗,該類構件隱藏了所有接口,用戶只需用規定好的命令進行使用。例如,數據庫管理系統和操作系統等。
(2)有限制的構件。有限制的構件提供了接口,指出了使用的條件和前提,這種構件在裝配時,會產生資源沖突、霍蓋等影響,在使用時需要加以測試。例如,各種面向對象程序設計語言中的基礎類庫等。
(3)適應性構件。適應性構件進行了包裝或使用了接口技術,把不兼容性、資源沖突等進行了處理,可以直接使用。這種構件可以不加修改地使用在各種環境中。例如ActiveX等。
(4)裝配的構件。裝配(assemble)的構件在安裝時,已經裝配在操作系統、數據庫管理系統或信息系統不同層次上,使用膠水代碼(gluecode)就可以進行連接使用。目前一些軟件商提供的大多數軟件產品都屬這一類。
(5)可修改的構件。對原構件修改錯誤、增加新功能,可以利用重新“包裝”或寫接口來實現構件的版本替換。這種構件在應用系統開發中使用得比較多。
五、中間件的分類
中間件分類
通信處理(消息)中間件 (特點:可靠、高效、實時跨平臺通信,eLink,MQSeries)
事務處理(交易)中間件 (事務分發,負載均衡,Tuxedo)
數據存取管理中間件 (為虛擬緩沖存取、格式轉換、解壓等帶來方便)
Web服務器中間件 (有負載均衡、緩存、安全性等功能)
安全中間件 (如:加密,認證等)
跨平臺和架構的中間件 (解決跨平臺問題,如:CORBA)
專用平臺中間件 (為特定應用領域設計領域參考模式,建立相應架構)
網絡中間件 (功能包括網管、接入、網絡測試、虛擬社區和虛擬緩沖等)
六、構件標準
三大構件標準
- COBRA Common Object Request Broker Architecture,公共對象請求代理體系結構)是由對象管理組織(OMG)制定的一種分布式對象計算標準,旨在實現不同編程語言、操作系統和硬件平臺之間軟件組件的無縫通信與協作
(伺服對象(Servant):CORBA對象的真正實現,負責完成客戶端請求。對象適配器(0bject Adapter):用于屏蔽ORB內核的實現細節,為服務器對象的實現者提供抽象接口,以便他們使用ORB內部的某些功能。對象請求代理(ObjectRequest Broker):解釋調用并負責查找實現該請求的對象,將參數傳給找到的對象,并調用方法返回結果。客戶方不需要了解服務對象的位置、通信方式、實現、激活或存儲機制。) - COM (Component Object Model,組件對象模型)是微軟提出的一套二進制軟件組件標準,用于實現跨語言、跨進程的軟件組件交互。)
- EJB (會話Bean: 實現業務邏輯,負責完成服務端與客戶端的交互
實體Bean: 實現O/R映射,簡化數據庫開發工作
消息驅動Bean: 處理并發與異常訪問)
例子:
CORBA服務端構件模型中,()是CORBA對象的真正實現,負責完成客戶端請求。
A伺服對象(Servant)
B對象適配器(Object Adapter)
C對象請求代理(Obiect Request Broker)
D適配器激活器(AdapterActivator)
參考答案:A