□文/安海寧 婁 健
(河北大學計算中心 河北·保定)
基于構件進行系統組裝的研究,是基于組件的軟件工程(簡稱CBSE)中的一個研究熱點。合理地進行構件描述,并在使用構件的時候,快速、準確地判斷出構件的可用性,通過構件組裝系統的可行性分析,才能在此基礎上進行有理有據的構件組裝,進而形成應用系統。
為了實現構件組裝,大量的可重用構件是不可缺少的,所以構件庫作為存儲和管理構件的實體,在基于構件的開發過程中起著非常重要的作用。其中,如何對構件進行合理的描述將直接影響構件的可用性、易用性、可學習性等。在利用構件庫中的構件進行系統組裝時,快速推導出構件能否被正確地集成在一起,完成特定的系統功能,是研究人員必須解決的一個非常重要的問題。
為了能夠利用構件庫中的構件進行組裝,對構件進行合理的描述是必不可少的。構件描述需要涉及其組裝特征,及從多個方面衡量它與其他構件能否組裝的必備信息;要描述構件的接口,從而獲知構件如何與其他構件進行信息交互;還有一些其他特征信息,便于用戶更好地理解構件。基于這些因素,定義構件描述如下:
一個構件描述就是一個三元組:

其中,AssemblyProperties用于描述構件的組裝特征,ComponentInterfaces用于描述構件的接口,OtherCharacters用于描述構件的其他特征。
1、AssemblyProper ties的描述。對于AssemblyProperties,定義其也為一個三元組:

其中,每個描述項稱為一個組裝刻面,每個組裝刻面可以有多個術語對其進行具體描述。
functions刻面描述構件的主要功能,是構件用戶最關心的一個刻面。其術語隨領域不同,可以自行定義。例如,針對圖書館管理領域,functions刻面的術語可以有圖書信息處理、讀者信息處理、借閱信息處理等。
依據軟件體系結構的構成,structures刻面主要描述該構件在軟件體系結構中中所處的位置,其術語可包括:表示層(UI)、業務邏輯層、數據層等,術語隨構件實際所處的軟件架構位置不同,可以自行定義。
implements刻面主要描述構件實現的具體方法,其術語可以包括如:應用程序實現、腳本實現等。該刻面的術語同樣可以自行定義。
2、Component Inter faces的描述。構件通過接口向外提供服務。對Interfaces的描述包括該接口能夠對外界提供哪些服務,滿足哪些條件才能夠提供這些服務,如何提供服務。表示如下:

接口語義說明接口能夠提供什么服務,需要滿足哪些條件才能提供這些服務,以及構件執行完畢的狀態;接口語法說明接口如何提供服務。由于利用XML可以比較清晰地反映接口描述的層次性,使描述結構化,所以這里用一個簡化的XML的DTD(文檔模板定義)給出對接口描述的詳細設計。其中參數的基本類型與C++所提供的基本參數類型一致。
3、OtherCharacters的描述。Other-Characters主要包括用戶在使用該構件時需要了解的其他方面的信息,如構件版本、運行平臺、其他構件支持等。Other-Characters的具體描述項可根據構件實際情況增減,但在描述時需要一一指明有哪些描述項。

圖1 構架規則實例

圖2 組裝過程
組裝規則可定義為一個三元組(A,R,P),其中A代表組裝的架構規則,R代表組裝的實現規則,P代表組裝的性能規則。
其中,架構規則的含義是軟件配置單中各個構件在軟件架構上滿足的要求,如一個完整的應用軟件應該由UI、業務邏輯等構件組成,即為架構規則。架構規則可保證配置單中的構件在邏輯上可以正確連接。
實現規則規定了軟件配置單中各個構件在實現方法上的一些限制,如采用何種構件實現技術、接口定義如何等。實現規則可確保配置單中的構件在物理上可以正確連接。
性能規則說明了組裝成一個性能較好的應用軟件,對配置單中出現的構件應有的一些要求。如各個構件的延遲、響應時間等。性能規則能夠輔助用戶組裝一個性能優越的應用軟件。
在上述組裝規則中,實現規則和性能規則的表達較為簡單,而架構規則的表達較為復雜,為了簡潔且準確地表達一個應用軟件的架構規則,在本項目中,使用EBNF對架構規則進行了描述。EBNF,即擴展巴科斯-瑙爾范式,經常用來描述高級程序設計語言的語法規則,具有簡潔、嚴謹、精確、無歧異等優點。EBNF中常用的符號如下:


根據架構規則的不同,我們可把目前常用的應用軟件分為數據庫應用型、網絡應用型、Web應用型等不同種類型,可用EBNF表達,如圖1所示。(圖1)
其中,規則a的含義為:一個應用軟件可以是數據庫應用、通信應用或Web應用;規則b的含義為:一個數據庫應用應該由UI構件、一個或多個業務邏輯構件、數據訪問構件、數據庫構件組成,其中數據訪問構件為可選項。其他規則的解釋類似,這里就不再贅述了。
項目中,采用如圖2所示的組裝過程。(圖 2)
首先,用戶根據軟件的功能需求及構件庫中現有構件功能特性,生成軟件配置單。由于用戶生成軟件配置單時只考慮了構件的功能特性,而功能符合要求的構件并不一定可以組裝成一個完整的應用程序,因此需要對用戶生成的軟件配置單做驗證,驗證依據即為上述的組裝規則。在本項目中,實現配置單驗證的模塊被稱為“配置單編譯器”。
若軟件配置單通過驗證,則配置單編譯器會給出成功標志,同時會對本次組裝的性能做相應評價;若未能通過驗證,則會給出錯誤標志,同時提示配置單出錯位置,以便于用戶修改。
通過上述對組裝過程的分析可知,組裝實現的關鍵是軟件配置單的驗證,即如何實現配置單編譯器。
[1]Shaw M,Deline R,K lein DV.Abstractions for Software Architecture and Tools to SupportThem[J].IEEETransaction on Software Engineering,1995.4.
[2]任洪敏,錢樂秋.構件組裝及其形式化推導研究[J].軟件學報,2003.6.
[3]廖昕,陳松喬,孫瑩.可復用構件組裝技術研究[J].計算技術與自動化,2004.3.