件架構設計構件與中間件技術-構件
構件的定義
構件的定義不同地方的不同人,對它有不同的解讀,解讀的方向可能有些不一樣,認可度比較高的就是定義1.
- 定義1:軟件構件是一種組裝單元,它具有規(guī)范的接口規(guī)約和顯式的語境依賴。軟件構件可以被獨立的部署并由第三方任意組裝。
- 定義2:構件是系統(tǒng)中有價值的,幾乎獨立的,且可替換的一個部分。它在良好定義的體系結構語境內滿足某清晰的功能。
- 定義3:構件是一個獨立發(fā)布的功能部分,可以通過其接口訪問它的服務。
構件和傳統(tǒng)的對象比較,我們一般認為構件的粒度比對象要大,服務又比構件要大一號。而構件和對象具體有如下一些區(qū)別:
構件的特性 | 對象的特性 | 模塊的特性 |
1.獨立的部署單元 2.作為第三方的組裝單元 3.沒有(外部的)可見狀態(tài) | 1.一個實例單元,具有唯一的標識 2.可能具有狀態(tài),此狀態(tài)外部可見 3.封裝了自己的狀態(tài)和行為 | 結構化開發(fā)的產(chǎn)物 |
沒有外部的可見狀態(tài)就是,直接從外部不能訪問,一般提供統(tǒng)一訪問的入口。對象如果沒有封裝好的話,外部是可以訪問的,如果封裝好的話,也能做到統(tǒng)一入口訪問,這樣安全性和可靠性會更高。
構件系統(tǒng)架構的特性(了解,不怎么重要)
構件系統(tǒng)體系結構由一組平臺決策,一組構件框架和構件框架之間的互操作設計組成。
構件框架是一種專用的體系結構(通常圍繞一些關鍵的機制),同時,也是一組固定的作用于構件層次機制的策略。 概念框架的互操作設計包括系統(tǒng)體系結構連接的所有框架的互操作的規(guī)則。
構件是一組通常需要同時部署的原子構件,構件和原子構件之間的區(qū)別在于,大多數(shù)原子構件永遠不會單獨被部署,盡管它們可以被單獨部署。
一個原子構件是一個模塊和一組資源。模塊是一組類和可能的非面向對象的結構體,比如過程或者函數(shù)。資源是一個類型化的項的固定集合。
資源可以包含代碼,進而包含模塊,問題在于除了編譯器編譯一個模塊或包生成的資源外,還可能存在其他的資源。在純對象的方法中,資源是外部化的不可改變的對象。不可改變是因為構件沒有持久化標志,而且賦值不能被區(qū)分
構件的復用
假設我們要利用構件的思想開發(fā)一套系統(tǒng),首先我們要經(jīng)歷這樣一個流程:檢索于提取構件--->理解于評價構件--->修改構件--->組裝構件.
檢索于提取構件
- 檢索于提取構件
一般是已經(jīng)有了一些構件,但是標準化程度不是很高,此時需要先去找到構件
然后把構件提取出來
檢索和提取構件有幾種方式
- 基于關鍵字的檢索
系統(tǒng)在圖形用戶界面上將構件庫的關鍵字呈樹形結構直觀的展示給用戶,復用者通過對樹形結構的逐級瀏覽,尋找需要的關鍵字并提取相應的構件.
- 刻面檢索法
該方法基于刻面分類法,由三步構成,分別是構造查詢,檢索構件和對構件進行排序.優(yōu)點是易于查找相似構件,但構造查詢時比較麻煩.
- 超文本檢索法
復用者先給出一個或多個關鍵字,系統(tǒng)在構件的說明文檔中進行精確或模糊的匹配,匹配成功夠列出相應構件說明. 優(yōu)點是對用戶友好,但有時候難以在瀏覽過程中找到正確的那部分構件.
提取構件之后,需要理解和評價構件
理解于評價構件
檢索于提取構件--->理解于評價構件--->修改構件--->組裝構件.
- 理解于評價構件
要復用構件,準確的理解構件是至關重要的.特別是您要使用或修改這個構件時.
為達到目的,必須要求構件的開發(fā)遵循公共標準
一般構件庫的文檔中全面而準確的說明了構件的功能與行為,相關的領域知識,可適應性約束條件和例外情形,可預見的修改部分及修改方法.
當您理解這個構件是怎么一回事了,它能不能達到我們的要求,是不是完全匹配我們的需求, 假設這個構件不能完全滿足需求,有些功能有,有些沒有,此時就需要修改構件了.
修改構件
檢索于提取構件*--->理解于評價構件--->修改構件--->組裝構件.
- 修改構件
理想狀態(tài)是直接復用現(xiàn)成的構件,但多數(shù)情況下,都必須對構件進行或多或少的修改,以應對新需求.
為了減少構件的修改工作量,要求開發(fā)人員盡量使構件的功能,行為和接口設計更加抽象化,通用化和參數(shù)化.這樣,復用者可通過參數(shù)選取來調整構件的功能或行為.如果仍不滿足需求,必須借助設計信息和文檔來修改構件.
構件庫中若無可修改使用的構件,則按新需求開發(fā)構件,并存入構件庫.
當所有的構件都開發(fā)或修改完成之后,我們就可以把構件組裝起來,完成我們的需求.
組裝構件
檢索于提取構件*--->理解于評價構件--->修改構件--->組裝構件.
- 組裝構建
基于功能的組裝技術
基于功能的組裝技術采用子程序調用和參數(shù)傳遞的方式將構件組裝起來.就是我們模塊于模塊之間的調用于組裝.
基于數(shù)據(jù)的組裝技術
- 根據(jù)當前軟件問題的核心數(shù)據(jù)結構設計出一個框架,然后根據(jù)框架中各個節(jié)點的需求提取構件并進行適應性修改,再將構件逐個分配至框架中的適當位置.后面,組裝方式仍然跟傳統(tǒng)方式一樣,也就是子程序調用于參數(shù)傳遞.
面向對象的組裝技術
- 由于封裝和繼承的特性,面向對象方法比其他軟件開發(fā)方法更適合支持軟件復用.如果滿足需求,直接復用,如果不滿足,必須以基類作為父類,生成對應的子類,以滿足新系統(tǒng)的需求.
而在組裝過程中有可能會存在一些失配的問題,包括如下一些問題:
- 由構建引起的失配,包括由于系統(tǒng)對構件基礎設施,構件控制模型和構件數(shù)據(jù)模型的假設存在沖突引起的失配。
- 由連接子引起的失配,包括由于系統(tǒng)對構件交互協(xié)議,連接子數(shù)據(jù)模型的假設存在沖突引起的失配
- 由系統(tǒng)成分對全局體系結構的假設存在沖突引起的失配等。
要解決失配問題,首先要檢測出失配問題,并在此基礎上通過適當?shù)氖侄蜗龣z測出的失配問題。
小結
構件的一些基本概念就大概這些,這些概念我們還是要結合實際情況去理解它,不然這么枯燥的知識海洋,當我們時刻都用蠻力去遨游時,總會有精疲力竭之時。 學無止境,加油!