□文/安海寧 婁 健
(河北大學計算中心 河北·保定)
基于構件進行系統(tǒng)組裝的研究,是基于組件的軟件工程(簡稱CBSE)中的一個研究熱點。合理地進行構件描述,并在使用構件的時候,快速、準確地判斷出構件的可用性,通過構件組裝系統(tǒng)的可行性分析,才能在此基礎上進行有理有據(jù)的構件組裝,進而形成應用系統(tǒng)。
為了實現(xiàn)構件組裝,大量的可重用構件是不可缺少的,所以構件庫作為存儲和管理構件的實體,在基于構件的開發(fā)過程中起著非常重要的作用。其中,如何對構件進行合理的描述將直接影響構件的可用性、易用性、可學習性等。在利用構件庫中的構件進行系統(tǒng)組裝時,快速推導出構件能否被正確地集成在一起,完成特定的系統(tǒng)功能,是研究人員必須解決的一個非常重要的問題。
為了能夠利用構件庫中的構件進行組裝,對構件進行合理的描述是必不可少的。構件描述需要涉及其組裝特征,及從多個方面衡量它與其他構件能否組裝的必備信息;要描述構件的接口,從而獲知構件如何與其他構件進行信息交互;還有一些其他特征信息,便于用戶更好地理解構件。基于這些因素,定義構件描述如下:
一個構件描述就是一個三元組:
其中,AssemblyProperties用于描述構件的組裝特征,ComponentInterfaces用于描述構件的接口,OtherCharacters用于描述構件的其他特征。
1、AssemblyProper ties的描述。對于AssemblyProperties,定義其也為一個三元組:
其中,每個描述項稱為一個組裝刻面,每個組裝刻面可以有多個術語對其進行具體描述。
functions刻面描述構件的主要功能,是構件用戶最關心的一個刻面。其術語隨領域不同,可以自行定義。例如,針對圖書館管理領域,functions刻面的術語可以有圖書信息處理、讀者信息處理、借閱信息處理等。
依據(jù)軟件體系結構的構成,structures刻面主要描述該構件在軟件體系結構中中所處的位置,其術語可包括:表示層(UI)、業(yè)務邏輯層、數(shù)據(jù)層等,術語隨構件實際所處的軟件架構位置不同,可以自行定義。
implements刻面主要描述構件實現(xiàn)的具體方法,其術語可以包括如:應用程序?qū)崿F(xiàn)、腳本實現(xiàn)等。該刻面的術語同樣可以自行定義。
2、Component Inter faces的描述。構件通過接口向外提供服務。對Interfaces的描述包括該接口能夠?qū)ν饨缣峁┠男┓眨瑵M足哪些條件才能夠提供這些服務,如何提供服務。表示如下:
接口語義說明接口能夠提供什么服務,需要滿足哪些條件才能提供這些服務,以及構件執(zhí)行完畢的狀態(tài);接口語法說明接口如何提供服務。由于利用XML可以比較清晰地反映接口描述的層次性,使描述結構化,所以這里用一個簡化的XML的DTD(文檔模板定義)給出對接口描述的詳細設計。其中參數(shù)的基本類型與C++所提供的基本參數(shù)類型一致。
3、OtherCharacters的描述。Other-Characters主要包括用戶在使用該構件時需要了解的其他方面的信息,如構件版本、運行平臺、其他構件支持等。Other-Characters的具體描述項可根據(jù)構件實際情況增減,但在描述時需要一一指明有哪些描述項。
圖1 構架規(guī)則實例
圖2 組裝過程
組裝規(guī)則可定義為一個三元組(A,R,P),其中A代表組裝的架構規(guī)則,R代表組裝的實現(xiàn)規(guī)則,P代表組裝的性能規(guī)則。
其中,架構規(guī)則的含義是軟件配置單中各個構件在軟件架構上滿足的要求,如一個完整的應用軟件應該由UI、業(yè)務邏輯等構件組成,即為架構規(guī)則。架構規(guī)則可保證配置單中的構件在邏輯上可以正確連接。
實現(xiàn)規(guī)則規(guī)定了軟件配置單中各個構件在實現(xiàn)方法上的一些限制,如采用何種構件實現(xiàn)技術、接口定義如何等。實現(xiàn)規(guī)則可確保配置單中的構件在物理上可以正確連接。
性能規(guī)則說明了組裝成一個性能較好的應用軟件,對配置單中出現(xiàn)的構件應有的一些要求。如各個構件的延遲、響應時間等。性能規(guī)則能夠輔助用戶組裝一個性能優(yōu)越的應用軟件。
在上述組裝規(guī)則中,實現(xiàn)規(guī)則和性能規(guī)則的表達較為簡單,而架構規(guī)則的表達較為復雜,為了簡潔且準確地表達一個應用軟件的架構規(guī)則,在本項目中,使用EBNF對架構規(guī)則進行了描述。EBNF,即擴展巴科斯-瑙爾范式,經(jīng)常用來描述高級程序設計語言的語法規(guī)則,具有簡潔、嚴謹、精確、無歧異等優(yōu)點。EBNF中常用的符號如下:
根據(jù)架構規(guī)則的不同,我們可把目前常用的應用軟件分為數(shù)據(jù)庫應用型、網(wǎng)絡應用型、Web應用型等不同種類型,可用EBNF表達,如圖1所示。(圖1)
其中,規(guī)則a的含義為:一個應用軟件可以是數(shù)據(jù)庫應用、通信應用或Web應用;規(guī)則b的含義為:一個數(shù)據(jù)庫應用應該由UI構件、一個或多個業(yè)務邏輯構件、數(shù)據(jù)訪問構件、數(shù)據(jù)庫構件組成,其中數(shù)據(jù)訪問構件為可選項。其他規(guī)則的解釋類似,這里就不再贅述了。
項目中,采用如圖2所示的組裝過程。(圖 2)
首先,用戶根據(jù)軟件的功能需求及構件庫中現(xiàn)有構件功能特性,生成軟件配置單。由于用戶生成軟件配置單時只考慮了構件的功能特性,而功能符合要求的構件并不一定可以組裝成一個完整的應用程序,因此需要對用戶生成的軟件配置單做驗證,驗證依據(jù)即為上述的組裝規(guī)則。在本項目中,實現(xiàn)配置單驗證的模塊被稱為“配置單編譯器”。
若軟件配置單通過驗證,則配置單編譯器會給出成功標志,同時會對本次組裝的性能做相應評價;若未能通過驗證,則會給出錯誤標志,同時提示配置單出錯位置,以便于用戶修改。
通過上述對組裝過程的分析可知,組裝實現(xiàn)的關鍵是軟件配置單的驗證,即如何實現(xiàn)配置單編譯器。
[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.