姜火文,曾國蓀,熊煥亮,3
(1.江西科技師范大學 數學與計算機科學學院,江西 南昌330038;2.同濟大學 計算機科學與技術系,上海201804;3.江西農業大學 軟件學院,江西 南昌330045)
軟件體系結構 (software architecture,SA)演化主要涉及軟件系統中構件或連接件的增加、刪除、替換,以及構件聯系和拓撲結構等的改變[1-4]。體系結構及其演化過程的描述始終是SA演化研究的重點。文獻[5-8]用不同的體系結構描述語言ADL (architecture description language)描述SA的組成及演化操作,具有形式化、描述精確等優點,但大多數ADL主要用于描述SA的規范,以及側重分析SA 演化的某一方面,在整體上刻畫SA 演化方面還存在一些不足[9];文獻 [10,11]采用統一建模語言UML(unified modeling language)描述或分析SA演化,具有圖形化、直觀、易理解等優點,而UML主要是一種面向對象的建模語言,更適合SA模型的描述,缺乏形式化語義,難以精確刻畫SA演化的特性[12];文獻 [13-15]的研究均用圖描述SA,對圖的使用,各自賦予了不同涵義,但研究沒有討論基于構件增、刪等基本操作的SA 演化過程,也沒有涉及軟件的可信特性;文獻[4,16]研究了基于超圖文法的SA動態演化,但沒有考慮軟件的可信要求;文獻 [17]研究了一種支持軟件可信演化的構件模型,側重研究提高構件的環境感知與適應能力,來保證可信演化,但沒有提取并表達系統的構件可信屬性,也沒有具體研究帶可信屬性表達的SA的演化過程。
可見,盡管有多種SA 及其演化的描述方法,但很少有表示構件可信屬性,缺少對帶構件可信屬性SA 演化的描述。本文提出類E-R圖描述方法,支持描述考慮可信屬性的SA演化,對帶可信屬性的SA 建立類E-R圖表示,并給出其形式化描繪,刻畫構件和連接件的增加、刪除、替換操作,最后通過一個演化實例,例證了該描述方法的有效性。
定義1 (軟件體系結構SA):一個軟件系統的SA 由構成功能單元的構件,連接構件并建立構件間交互的連接件,以及規范構件和連接件之間連接配置和相關拓撲要求的約束。SA可以表示為一個3元組SA =(Cp,Cj,Cr),其中,Cp表示構件集合;Cj表示連接件集合,Cr表示約束集合。
需要指出,對SA,迄今為止并沒有一個公認的定義,本文所給定義參考了文獻 [4]中的概念。這里,構件(component)指具有一定功能的軟件實體,可以是體現為一組代碼的程序模塊;也可以是獨立的一個程序。連接件(connector)在構件之間起連接作用,定義了構件間的交互,如過程調用、管道等都可以被看成連接件。約束(constraint)指某些限制 (constrain),用來確定如構件是否連接正確、端口與角色是否匹配等,約束描述了軟件系統中構件、連接件以及配置的相關要求[18]。
可信性是衡量軟件品質量的重要屬性,軟件可信屬性主要包括功能完備性 (completeness)、行為一致性 (consistency)、質量可靠性 (reliability)和程序安全性 (security)。功能完備性指軟件能多大程度上實現其預先設計的功能,并滿足用戶需求;行為一致性指軟件在運行過程中,前后系統行為不引起操作沖突、表現為運行中系統維持操作不矛盾的能力;質量可靠性指系統面對應用或者錯誤,在意外或者錯誤使用的情況下維持功能特性的能力;程序安全性指系統向合法用戶提供服務的同時,能夠阻止非授權用戶使用或者拒絕服務的能力。以上4個屬性綜合體現了軟件的可信性,構成軟件可信的特征空間,其中每個屬性實質是一個信任證據向量,如質量可靠性包括平均可用時間、平均無故障時間、平均故障恢復時間等信任證據。
定義2 (構件的可信屬性):指反映構件的質量與性能等方面可信特性的屬性集,即功能完備性、行為一致性、質量可靠性和程序安全性等。
構件是軟件的功能組成單位,是構成SA 并研究其演化過程的主要載體,軟件可信屬性通過各個構件的可信屬性體現。構件可信屬性可以用基于觀測邏輯的狀態自動機、接口協議狀態機和契約自動機等方法分析、評估,根據多個信任證據向量來源,綜合判斷構件的可信度。SA 演化前后,根據可信度與設定閾值的比較,可分別決定演化是否進行、演化能否被接受。
定義3 (帶可信屬性的SA,SA-T):指在SA表示及演化過程描述中,包含有功能完備性、行為一致性、質量可靠性和程序安全性,這4個構件可信屬性表達的SA。即Software Architecture with Trusted Attributes,本文簡稱SA-T。
SA-T 的表示及演化描述是SA 可信演化研究的必要基礎,其意義表現在兩個方面:一是演化前的可信性評估,可用于控制演化是否進行,當評估的可信度大于設定的閾值被認為是可信的,可信構件才允許進行演化,不可信構件的演化將蘊含風險,禁止演化。二是演化后的可信度驗證,可用于監控演化效果,方便系統決定是否接受該演化,或改變演化策略。本文研究在于提出一種描述方法,刻畫包含構件可信屬性表示的SA 及其演化過程。進一步地,對構件可信屬性特征值的感知、評估與驗證等技術,將在后續論文中展開討論。
在數據庫設計中,經常用到E-R圖 (entity relationship diagram)也稱實體-關系圖。在E-R圖中有4個成分:矩形框,表示實體,框中記入實體名;菱形框,表示聯系,框中記入聯系名;橢圓形框,表示實體或聯系的屬性,框中記入屬性名;連線,連接實體與聯系之間、實體與屬性之間和聯系與屬性之間的直線,直線上標注聯系的類型,如:一對多聯系,在連線一的一方寫1,多的一方寫N。本文引入E-R圖形,對其4種成分賦予新的表達涵義,矩形框表示構件、菱形框表示連接件、橢圓形框表示構件可信屬性、帶標注記號的連線表示構件與連接件之間存在的相互關系,稱為 “類E-R圖”,用于表示帶可信屬性的軟件體系結構。
圖1 為類E-R 圖表示的一個SA-T 實例,其中包含3個構件:Client、Webserver 和DBMS,每個構件附帶功能完備性、行為一致性、質量可靠性和程序安全性這4個可信屬性;2個連接件:C-W Connector 和W-D Connector;4條帶標記的邊 (簡稱標記邊):連接各構件和連接件,表示相應構件和連接件之間的交互關系,其中邊上面的標記表示構件傳遞給連接件的消息、邊下面的標記表示連接件傳遞給構件的消息,如:Rclient、Rwebserver、ADBMS、RC-W分別表示客戶請求、Web服務器請求、數據庫管理器響應和Web服務器響應等構件與連接件的交互關系。

圖1 Client/Webserver系統SA-T 的類E-R
類E-R圖可直觀地表示SA-T 的結構組成,還可以描述SA-T 的可觀交互行為。SA-T 的可觀行為是指軟件系統中構件與連接件之間外部可見的交互序列,例如構件間通信時發生的交互動作序列[7]。如圖1 中所示,客戶Client發出查詢請求Rclient,連接件C-W Connector 收到該服務請求后,封裝成RC-W、傳送給Web服務器Webserver,Webserver 響應請求、轉而發請求Rwebserver給連接件W-D Connector,經W-D Connector 向后臺數據庫管理系統DBMS 發查詢請求RW-D,DBMS 響應請求、發響應信號ADBMS給W-D Connector,經W-D Connector 封裝、轉發AW-D回應給Webserver,Webserver 再將響應消息AWebserver回復給CW Connector,再經C-W Connector 檢查封裝、最后將響應消息AC-W發給Client,完成一次完整的信息交戶過程。從圖1中抽離出該部分SA 可觀行為序列,可以表示為

SA-T 演化過程主要通過構件或連接件的增加、刪除、替換等基本操作實現,研究SA-T 演化過程必須考慮體系結構的表示和演化操作的描述。如引言所述,研究者分別采用了ADL、UML、圖或超圖等作為描述工具,通過建立相關的形式語義或超圖文法建模SA 演化過程,各有優勢與缺陷。本文選用類E-R 圖及其形式化的描述方法,可以更直觀、簡便地描述SA-T 及其基本演化過程。為方便對類E-R圖表示的SA-T 演化操作進行形式化描述,下面先建立SA-T 圖及其形式化描述的概念。
定義4 (SA-T 圖):利用類E-R 圖表示的一個帶可信屬性的軟件體系結構圖,稱之為SA-T 圖,可以表示為一個五元組GSA=(VSA,ESA,ecp,ecn,ARSA)。
例如上文圖1即為一個SA-T 圖。在SA-T 圖的五元組GSA=(VSA,ESA,ecp,ecn,ARSA)中,VSA是圖中節點集合,表示SA-T 中所有構件或連接件,即VSA=(Cp,Cj),Cp是構件集合、Cj是連接件集合;ESA是標記邊集合,表示SA 中構件與連接件之間的交互關系 (即可以表示兩者間的通信端口);ecp和ecn均為VSA上的映射關系,分別是連接件和構件的入節點映射,表示構件與連接件之間的交互關系,其中,ecp:Cp→Cj,表示構件到連接件的消息輸入,標記在連接邊的上方,ecn:Cj→Cp,表示連接件到構件的消息輸入,標記在連接邊的下方;ARSA表示軟件構件的可信屬性集合,由Completeness、Consistency、Reliability和Security這4個構件的可信屬性組成。
在SA-T 圖中,具體的構件ci、連接件cni可以分別用一元關系Cp(ci)和Cj(cni)表示;ci和cni的連接關系,即兩者的連接邊ei可以用二元關系ei(ci,cni)表示;構件與連接件的交互關系,即消息傳遞關系ecp,ecn可以分別用一元關系cp(ei)和cn(ei)表示,cp(ei)表示對應邊ei上,由構件ci輸出到連接件cni的消息,cn(ei)表示反方向的、由cni輸往ci的消息流。
SA-T 演 化 可 以 表 示 為SA-T 圖 的 變 換。基 于SA-T圖中各成分的一元或二元關系表示,可以很方便地利用集合并、差運算來反映圖中各成分的增減,從而建立SA-T 圖變化的形式化描述,方便刻畫SA-T 的演化過程。增加、刪除或替換構件/連接件的操作構成SA-T 的基本演化,而諸如拆分或重組構件/連接件等復雜演化,都能由一些基本演化操作組合而成。下面針對SA-T 圖,分別給出其構件和連接件的增加、刪除和替換演化的類E-R 圖描述。
軟件體系結構演化包括構件或連接件的增加、刪除基礎演化及替換、拆分、重組等復合演化。為方便討論,本節以增加、刪除和替換3個典型演化為例,給出SA-T 演化的類E-R圖描述方法。
2.2.1 增加構件和連接件
假定G 為當前SA-T 圖,增加一個構件、連接件演化可以分別形式化描述為式 (1)、式 (2)

其中,式 (1)中Cp(ci)表示構件ci;e1(ci-G(cn1))表示構件ci與SA 圖G 中某連接件cn1的連接,該連接邊可能不止一條,即某構件可能分別通過多個連接件與多個其它構件建立聯系;cp(e1),cn(e1)表示對應邊e1上構件與連接件的交互關系,分別代表構件ci的輸出與輸入方向消息流;ARci(Completeness),…,ARci(Security)表示構件ci附帶的可信屬性。式 (2)中,Cj(cni)表示連接件cni,e1(cni-G(c1))表示連接件cni與SA圖G中某構件c1的連接,該連接邊也可能不止一條,即該連接件可能互聯了兩個構件;cp(e1),cn (e1)分別表示對應邊e1上的交互關系。圖2為增加一個構件/連接件演化操作的類E-R圖表示。
2.2.2 刪除構件和連接件
刪除一個構件、連接件的演化操作可以分別形式化描述為式 (3)、式 (4)


圖3用類E-R圖表示了刪除一個構件/連接件的操作。
2.2.3 替換構件和連接件
替換一個構件、連接件演化操作可以分別形式化描述為式 (5)、式 (6)

圖4為類E-R圖表示的一個構件/連接件的替換操作。

圖2 增加一個構件/連接件的操作

圖3 刪除一個構件/連接件的操作

圖4 替換一個構件/連接件的操作
為進一步說明SA-T 演化過程的類E-R 圖及其形式化描述方法,這里通過一個基于web的電子商務系統的演化實例說明。該系統包含3 類構件:web客戶、web服務器和SQL Server數據庫服務器,兩類連接件:web 客戶與web服務器間的連接件 (簡稱web連接件)和web服務器與SQL server數據庫服務器間的連接件 (簡稱SQL 連接件)。Web客戶通過web連接件向web服務器發出查詢請求,web服務器再通過SQL連接件向SQL Server發出訪問數據信息,SQL Server完成操作、將響應信號通過SQL 連接件發回給web服務器,web服務器再通過web連接件將信息發回給對應的客戶,完成一次用戶訪問操作。該系統的SA如圖5所示,其中3個矩形框WebClient、WebServer 和SQLServer分別表示web客戶、web服務器和SQL Server數據庫服務器,連接它們的4個橢圓框Completeness、Consistency、Security和Reliability分別表示各自的可信屬性;兩個菱形框WebConnector和SqlConnector分別表示web連接件和SQL連接件;RWClient、AWCon、RWebS、…分別表示web客戶請求、對web客戶的響應、web服務器請求、…等。

圖5 系統初始SA-T
無線網絡和移動終端技術的發展,使移動電子商務成為可能與趨勢,為了適應該發展需求,系統需要相應改變,即進行演化。假定改變辦法是:①改用功能更強的新服務器 “WMServer”取代原web服務器,新服務器既支持原web服務器的功能又支持移動電子商務功能,即利用上述演化式 (5)進行構件替換操作。②新增移動連接件和移動客戶,以體現系統對移動用戶電子商務需求的支持,即分別利用上述演化式 (2)和式 (1)進行添加連接件和添加構件的演化操作。圖6為按此辦法演化后系統的SA-T。

圖6 增加移動電子商務功能后系統的SA-T
將上文中的圖5標記為G1,圖6標記為G′1。則G1到G′1的變換表示了對原電子商務系統增加移動電子商務功能的演化過程,可描述為

軟件演化已成為軟件的一種存在形式,軟件只有通過演化才能維持它的可用性。體系結構演化從更高抽象層次反映了軟件演化,是研究與實現軟件演化的重要手段。目前,軟件可信演化正成為軟件演化研究的一個重要方面,而SA 可信演化則是研究軟件可信演化的主要途徑。研究SA 可信演化,一般要考慮SA-T 的表示及其演化描述。本文提出的類E-R 圖描述方法,既有圖的形式化理論基礎,又有類E-R 圖形化的簡潔形象,能準確直觀地描述SA-T及其演化過程。論文工作為深入研究SA 可信演化奠定了基礎,后續我們將研究SA-T 演化前后構件可信屬性特征值的感知、分析與驗證,SA 行為語義演化的描述等。
[1]Salehie M,Tahvildari L.Self-adaptive software:Landscape and research challenges [J].ACM Transactions on Autonomous and Adaptive Systems,2009,4 (2):1-42.
[2]Breivold HP,Crnkovic I,Larsson M.A systematic review of software architecture evolution research [J].Information and Software Technology,2012,54 (1):16-40.
[3]CHENG Xiaoyu,ZENG Guosun,XU Hongzhen.Description of software architecture evolution based on Delta-Grammar[J].Computer Science,2010,37 (9):127-130 (in Chinese).[程曉瑜,曾國蓀,徐洪珍.基于Delta-Grammar的軟件體系結構演化的描述 [J].計算機科學,2010,37 (9):127-130.]
[4]XU Hongzhen,ZENG Guosun.Dynamic evolution of software architectures based on hypergraph grammars [J].Journal of Tongji University (Natural Science),2011,39 (5):745-750(in Chinese).[徐洪珍,曾國蓀.基于超圖文法的軟件體系結構動態演化 [J].同濟大學學報 (自然科學版),2011,39(5):745-750.]
[5]Navasa Amparo,Perez-Toledano Miguel A,Murillo Juan M.An ADL dealing with aspects at software architecture stage[J].Information and Software Technology,2009,51 (2):306-324.
[6]Di Ruscio Davide,Malavolta lvano,Muccini Henry,et al.Developing next generation ADLs through MDE techniques[C]//32nd International Conference on Software Engineering,2011:85-94.
[7]Mei H,Chen F,Wang QX,et al.ABC/ADL:An ADL supporting component composition [G].Lecture Notes in Computer Science 2495:Formal Methods and Software Engineering,2012:38-47.
[8]CHEN Xiangping,HUANG Gang,SONG Hui,et al.MOF based framework for intergration of software architecture analysis results[J].Journal of Software,2012,23 (4):831-845 (in Chinese).[陳湘萍,黃罡,宋暉,等.基于MOF的軟件體系結構分析結果集成框架[J].軟件學報,2012,23(4):831-845.]
[9]Mens T,Magee J,Rumpe B.Evolving software architecture descriptions of critical systems [J].IEEE Computer,2010,43 (5):42-48.
[10]Qu Chunyan.UML-based software process modeling [C]//International Conference on Computer,Mechatronics,Control and Electronic Engineering,2010:247-250.
[11]Spanoudakis George,Zisman Andrea.Discovering services during service-based system design using UML [J].IEEE Transactions on Software Engineering,2010,33 (3):371-389.
[12]Pelliccione P,Inverardi P, Muccini H.CHARMY: A framework for designing and verifying architectural specifications [J].IEEE Transactions on Software Engineering,2009,35 (3):325-346.
[13]Frank Hermann,Hartmut Ehrig,Ulrike Golas,et al.Formal analysis of model transformations based on tripe graph grammars[G].LNCS 5214:Graph Transformations,2008:178-193.
[14]Amirat Abdelkrim,Bouchouk Abderrezak,Yeslem Mohamed Ould,et al.Refactor software architecture using graph transformation approach [C]//Second International Conference on the Innovative Computing Technology,2012:117-122.
[15]Li Chen,Huang Linpeng,Chen Luxi,et al.BGG:A graph grammar approach for software architecture verification and reconfiguration [C]//Seventh International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing,2013:291-298.
[16]XU Hongzhen,ZENG Guosun,CHEN Bo.Conditional hypergraph grammars and its analysis of dynamic evolution of software architectures [J].Journal of Software,2011,22(6):1210-1223 (in Chinese).[徐洪珍,曾國蓀,陳波.軟件體系結構動態演化的條件超圖文法及分析 [J].軟件學報,2011,22 (6):1210-1223.]
[17]DING Bo,WANG Huaimin,SHI Dianxi,et al.Component model supporting trustworthiness-oriented software evolution[J].Journal of Software,2011,22 (1):17-27 (in Chinese).[丁博,王懷民,史殿習,等.一種支持軟件可信演化的構件模型 [J].軟件學報,2011,22 (1):17-27.]
[18]Tibermacine Chouki,Sadou Salah,Dony Christophe,et al.Component-based specification of software architecture constraints[C]//Proceedings of the 14th International ACM Sigsoft Symposium on Component based Software Engineering,2011:31-40.