摘 要:軟件系統的演化需要具有靈活性、適應性的軟件體系結構的支持。提出一種在組織結構上具有固有的動態性的軟件體系結構理論模型——動態樹型軟件體系結構模型(DTSAM)。在DTSAM定義的軟件體系結構組織結構下,軟件系統的演化抽象成為一棵動態樹的漸增和漸減。其中,所設計的漸增和漸減算法分別定義了動態樹的增減過程;所設計的生長函數中適應性因子的調節,使得軟件體系結構在組織結構層次上具有整體適應性和局部適應性。最后應用模型對例子系統仿真,其過程產生的結果也證實了這種適應性。
關鍵詞:軟件體系結構;模型;適應性;動態性
中圖分類號:TP31 文獻標志碼:A
文章編號:1001-3695(2008)07-2053-04
Theory research of dynamic adaptive software architecture model
MAO Feiqiao,QI Deyu
(Research Institute of Computer Systems, South China University of Technology, Guangzhou 510640, China)
Abstract:Software evolution needs the supports of software architecture with flexibility and adaptability.This paper proposed a dynamic tree software architecture model (DTSAM) with inherent dynamic character.Abstracted software system evolution as a dynamic tree growing and reducing gradually under the definition of DTSAM, in which the growing algorithm and the reducing algorithm separately defined the growing process and the reducing process of the dynamic tree, and the adjustment of the adaptable variable in the growing function made software architecture owning total adaptability and partial adaptability on the architectural level. Finally, the result produces during the application case with DTSAM proves that adaptability.
Key words:software architecture; model; adaptability; dynamic
0 引言
對軟件體系結構組織結構本身的研究[1~6]長久以來一直停留在非正式或半正式形式下,缺乏高層次的理論抽象,使得對具體一種軟件體系結構的理解難以把握,容易產生模糊理解,甚至不正確理解,從而產生了導致各種軟件系統不可靠性的因素;同時也使得對具體一種軟件體系結構功能特性和非功能特性的分析和評估難以進行,很難上升到定量的高度[7~9]。因此,另外一些研究者就不得不尋求用形式化的方法[10~17]在一定程度上形式化各種類型的軟件體系結構,期望能夠使得對這此軟件體系結構的理解變得精確一些,導致軟件系統不可靠性的因素盡量少一些,對軟件體系結構性能的分析和評估也能盡可能地向定量的高度靠近。這種非正式性或半正式性主要表現在對體系結構的研究和描述主要依賴于使用自然語言和框線圖來刻畫體系結構所包含的軟件構件類型、構件間的組織結構和約束規定等元素。另外,對軟件體系結構組織結構本身的研究主要集中在設計靜態的軟件體系結構,欠缺對動態性的支持。軟件體系結構這種結構上的刻板特點,也使其“牽一發而動全身”,使其缺乏靈活性和適應性,使得軟件系統一旦開發完成,其演化也很困難。
針對以上問題也有一些相關研究工作。如文獻[18]用抽象代數理論建立了一個描述軟件體系結構的數學模型,使得對軟件體系結構的描述研究上升到一定的理論層次,但也只是限于用數學方法對軟件體系結構的描述更正式、更精確,目的主要是為了解決軟件體系結構描述語言在描述軟件體系結構動態、可演化和可擴充特征方面的不足,對所描述的軟件體系結構本身在支持動態性、適應性和可演化性等方面的不足卻無能為力。再如文獻[19]在軟件體系結構的構件和連接器形式化描述中加入了可以描述構件位置及連接類型變化的信息,使得軟件系統在執行的過程中可以進行構件的刪除、修改或增加,在軟件構件層次上使軟件體系結構具有可適應性,而如何使軟件體系結構在高層次,如組織結構層次上、支持業務邏輯變化層次上,具有適應性卻沒作探討;另外其形式化的抽象程度不高,沒有達到數學理論的高度,所以對其所提出的軟件體系結構的分析和評估也很難定量進行??梢?,這些相關的研究工作還存在諸多不足。本文針對以上問題提出一種動態的,在組織結構層次上具有適應性的、呈樹型漸增或漸減進行演化的軟件體系結構理論模型。
1 動態樹型軟件體系結構模型
1.1 模型定義
從滿足需求的角度看,軟件是由軟件構件按照一定的組織結構構成,軟件構件間如何組織和如何交互影響著非功能性需求的滿足,而軟件構件間如何合作實現特定的業務邏輯則影響著功能性需求的滿足。用戶對軟件系統的功能性需求和非功能性需求經常會有一些變化,這就要求軟件體系結構具有適應性,能夠支持這些變化。一個軟件體系結構能夠支持這些變化,其本身在組織結構上應該是動態的,這樣組織結構才具有靈活性;其構件在合作關系上也應該是可以變化的,這樣才能隨著業務邏輯的變化,合作關系也能隨著變化。鑒于這樣的考慮,動態樹型軟件體系結構模型的基本思想是:將軟件構件抽象為一個個節點,軟件構件間的直接交互關系抽象為一條條生長邊;軟件系統是由最初的一個節點(軟件構件),再逐個加入新的節點(新的軟件構件),而逐步演化而成。在演化的過程中,支持舊節點(舊的軟件構件)的刪除(即退出)。
在定義模型前,先給出模型假設:a)每個構件是可以獨立部署、獨立運行的;b)每個構件都有惟一的代表該構件的非零自然數序號ID值,該序號由模型生成;c)可以退出軟件系統組織結構的構件是受條件限制的;d)當同一時刻既有構件加入系統,又有構件退出系統,假設先處理退出的構件,再處理加入的構件;e)一次只有一個構件加入系統,若有不只一個構件同時需要加入系統時,假設認為同時需要加入的構件經過了預處理,變成逐個按序加入。
定義1 動態樹型軟件體系結構模型(dynamic tree software architecture model,DTSAM)是由七元組構成,DTSAM=(N,E,NL,h,f,v,c)。
其中:N是動態樹中所有節點的集合,是非空集合,至少包含元素1,每一個節點表示一個構件,N表示軟件系統所有構件的集合。E代表動態樹中所有生長邊的集合,可以為空。生長邊是用一個有序對表示,如動態樹中連接1和2這兩個節點的生長邊表示為(1,2)。在表示生長邊的有序對中,總是靠近根的節點在前,離根較遠的那個節點在后,每一條生成邊表示一對構件之間存在交互關系。在軟件體系結構描述中,將交互關系抽象稱為連接器,所以每一條邊表示一個連接器,E表示軟件系統所有連接器的集合。NL代表動態樹中各層節點集的集合,是非空集合,至少包含元素{1},表示軟件系統體系結構中各層包含的構件。h代表動態樹的高,表示軟件系統體系結構的層次數。f是生長函數,其值代表當一個ID值為n的新構件進入系統后,約束指出應與該新構件相連接的那個構件的ID,并且
即求集合中所包含元素的個數;運算符號“[]”表示取整;LI(h)和WI(h)所表達的意思參見定義2和3。
v是節點值生成函數,其值代表即將加入系統成為軟件系統組織結構一部分的那個構件,也代表該節點進入系統,連入動態樹上生長邊的順序,其值越大表示該節點進入系統越晚;反之,則越早。當系統中有一構件退出,不再作為軟件組織結構一部分時,v函數的值要進行減1修正,以前退出系統的構件。當再次進入系統時,認為是一個新的構件,并且
v(n)=v(n)-1,當有構件退出組織結構的修正操作(4)
c是常量,代表漸減規則。這里規則定為:a)根節點的構件不能退出;b)葉子節點的構件可以直接退出;c)非葉子節點構件不能直接退出,要等到其子孫節點全部退出后才能退出;d)一次只能退出一個節點(構件),不允許兩個或以上節點(構件)同時退出。
定義2 縱向增長集(lengthwise increasing)是由動態樹最高層的構件構成的集合,LI(h)=NL(h)。其中LI(h)表示高為h的動態樹的縱向增長集。
定義3 橫向增長集(widthwise increasing)是由動態樹非最高層所有構件構成的集合。當h≠1時,WI(h)=N-LI(h)=∪hi=1NL(i);當h=1時,WI(h)=NL(h)=N={1}。其中WI(h)表示高為h的動態樹的橫向增長集。
定義4 縱向增長方式是指新加入系統的節點連接在動態樹縱向增長集中的節點所長出的生長邊的生長方式;橫向增長方式是指新加入系統的節點連接在動態樹橫向增長集中的節點所長出的生長邊的生成方式;混合增長方式指動態樹在增長過程中縱向增長方式與橫向增長方式混合進行。
定義5 當一個新的節點加入系統后,長出其所連接的生長邊的那個節點稱為該新加入節點的生長點。生長點也是動態樹中節點值與用生長函數求得的值相等的那個節點。
這里對生長函數的導出進行說明。由圖1中針對節點逐漸加入所進行的組織結構可能性變化推導可以看出,從圖1(a)到(d),系統組織結構中由一個節點增加到四個節點,新節點的加入引起動態樹的增長。
當一個新的節點準備加入時,動態樹中的每一個節點都可能被選為生長點;當一個新節點加入后,動態樹可能增高也可能增寬。當縱向增長集中的某個節點被選為生長點時,動態樹增高;當橫向增長集中的某個節點被選為生長點時,動態樹增寬??v向增長方式下,縱向增長集中每一個節點被選為生長點的概率是1/|LI(h)|;橫向增長方式下,橫向增長集中每一個節點被選為生長點的概率是1/|WI(h)|。對于樹型結構,當一個新的節點加入時,樹只有兩種變化可能性:或長高、或長寬。如果再引入適應性因子φ(φ∈[0,1]),表示在期望的增長方式下,縱向增長方式所占的理想比率,那么在期望的增長方式下,橫向增長方式所占的比率就是1-φ。在期望的增長方式下,動態樹所有節點中,其中一個節點是期望生長點。那么這個期望生長點的值就可以由期望值函數f(n)=[n∈NP(n)×n]求出。因為節點值是自然數,最后加上一個取整運算。這個期望值函數也就是定義1中的生長函數。
性質1 當適應性因子φ=0時,動態樹僅作橫向增長,組織結構退化為輻射式,節點間分布呈傳統的黑板式體系結構特征。
性質2 當適應性因子φ=1時,動態樹僅作縱向增長,結構退化為直線式,節點間分布呈傳統的層次式體系結構特征。
性質3 當適應性因子φ∈(0,1/2)時,動態樹以橫向增長為主。
性質4 當適應性因子φ∈(1/2,1)時,動態樹以縱向增長為主。
1.2 漸增和漸減算法
由定義1知動態樹是由根節點逐漸長大的,在初始狀態下就有:v(1)=1,N={1},E=,NL={{1}},h=1,LI(1)=WI(1)={1}。當一個新的節點n加入后,動態樹發生增長。這里給出動態樹增長的漸增算法。
1)漸增算法
(1)計算v(n)=v(n)+1,生成新加入的這個節點的節點值v(n);
(2)計算生長函數,求出生長點f(n),若生長點f(n)LI(h),則動態樹增寬,轉(7);
(3)h=h+1;//修改樹高
(4)WI(h)=WI(h)∪LI(h);//修改橫向增長集
(5)LI(h)={v(n)};//修改縱向增長集
(6)NL(h)={v(n)} ,NL=NL∪{NL(n)},然后轉(10);/*修改各層節點集的集合*/
(7)若生長點f(n)∈NL(h-1),則LI(h)=LI(h)∪{v(n)},NL(h)=NL(h)∪{v(n)},然后轉(10);/*修改縱向增長集和各層節點集的集合*/
(8)WI(h)=WI(h)∪{v(n)};//修改橫向增長集
(9)若生長點f(n)∈NL(i)(1≤i<h-1),則NL(i+1)=NL(i+1)∪{v(n)};//修改各層節點集的集合
(10)N=N∪{v(n)};//修改動態樹所有節點集
(11)E=E∪{(f(n),v(n))};//修改動態樹的生長邊集
當動態樹中一個節點值為i的節點退出系統組織結構后,動態樹發生削減,根據定義1中的削減規則,這里給出漸減算法。
2)漸減算法
(1)若i∈LI(h),則LI(h)=LI(h)-{i},否則轉(4);/*修改縱向增長集*/
(2)若LI(h)==,則NL=NL-{NL(h)},h=h-1,然后轉(5);//刪去各層節點集的集合中最高一層的節點集,并修改樹高
(3)任意j∈LI(h),若j>i,則j=j-1,然后轉(5);/*修改縱向增長集中節點值大于i的所有節點的節點值*/
(4)WI(h)=WI(h)-{i};//修改橫向增長集
(5)任意j∈WI(h),若j>i,則j=j-1;/*修改橫向增長集中節點值大于i的所有節點的節點值*/
(6)任意NL(k)(1<k≤h),任意j∈NL(k),若j-i==0,則NL(k)=NL(k)-{j},若j-i>0,則j=j-1;//修改各層節點集
(7)E=E-{(j,i)}(其中1≤j<|N|)且任意(m,n)∈E,若m>i,則(m,n)=(m-1,n-1),若m<i且n>i,則(m,n)=(m,n-1);//修改生長邊集
(8)N=N-{i},且任意j∈N,若j>i,則j=j-1;/*修改動態樹所有節點集,以及節點值大于i的所有節點的節點值*/
2 模型仿真分析
假設有個小系統由軟件構件八次增減逐步演化而成,其間有一次出現:某個符合退出條件的軟件構件退出,其他
七次均為加入軟件構件。應用上述定義的模型及其上的增減算法,對該小系統軟件的體系結構進行仿真,通過調節適應性因子,觀察由該模型定義的體系結構組織結構上的變化。
在仿真過程中,當適應性因子φ=0時,模型上各個量的變化情況如表1所示,對應的系統體系結構組織結構如圖2(a)所示;(a)顯示的結構特征表明動態樹組織結構呈放射式,從而也證實了性質1。當適應性因子φ=1時,模型上各個量的變化情況如表2所示,對應的系統體系結構組織結構如圖2(b)所示;(b)顯示的結構特征表明動態樹組織結構呈直線式,從而也證實了性質2。當適應性因子φ=0.3時,模型上各個量的變化情況如表3所示,對應的系統體系結構組織結構如圖2(c)所示;(c)所顯示的結構特征表明動態樹以橫向增長為主,從而也證實了性質3。當適應性因子φ=0.7時,模型上各個量的變化情況如表4所示,對應的系統體系結構組織結構如圖2(d)圖所示;(d)圖所顯示的結構特征表明動態樹以縱向增長為主,從而證實了性質4。
由上述仿真觀察到的結果可以看出,通過調節DTSAM的適應性因子,可以使軟件體系的組織結構發生不同程度的變化,從而使得軟件體系結構在組織結構上具有一定程度的適應性。另外,這種動態樹結構本身使得軟件體系結構在組織結構上具有一種固有的動態性,從而使其在結構上具有靈活性,避免了“牽一發而動全身”。其實,在上述仿真過程中,適應性因子的調整是在動態樹開始增減之前,一旦動態樹開始增減變化,適應性因子不再發生變化,所以觀察到的在組織結構上的變化是一種整體性的變化,表現出一種整體性的適應性;如果在動態樹增減變化的過程中調節適應性因子也是允許的,并且這種調節可以使得軟件體系結構在局部發生變化,表現出一種局部性的適應性。由于文章篇幅所限,這種局部性的適應性仿真情況這里不作詳細描述。
3 結束語
本文提出的這種動態樹型軟件體系結構模型,將軟件系統在組織結構上的演化抽象為一棵逐漸增減的動態樹。模型的定義及其增減算法的設計建立在離散數學的集合論、概率論以及圖論的基礎上,為軟件體系結構組織結構本身的理論研究提供了一種新的思路,為軟件體系結構定量分析和評估奠定了理論基礎。通過應用所定義的模型對一個小例子系統體系結構的組織結構進行仿真,也進一步證實了該模型所定義的軟件體系結構在組織結構層次上具有適應性,而且該模型所定義的軟件體系結構在組織結構上具有一種固有的動態性,這種固有的動態性使其具備與生俱來的靈活性。但是,目前該模型還存在不足之處,即缺乏對軟件體系結構在業務邏輯層次上的適應性支持。而這也正是下一步的研究工作。接下來筆者將在DTSAM上定義任務合作運算,以及任務合作條件生成運算。這些運算支持任務合成的變化,從而使得DTSAM進一步在業務邏輯層次上也具有適應性。
參考文獻:
[1]GENG Gangyong,ZHONG Cuihao,CHEN Wei.A domainspecific software architecture[C]//Proc of IEEE International Conference on Intelligent Processing Systems.Beijing:[s.n.],1997:18331837.
[2]LALANDA P,CHERKI S.Objectorientation and software architecture[C]//Proc of Lecture Notes in Computer Science of Workshopion on ObjectOriented Technology.1998:115119.
[3]LI Changyun,LI Gansheng,LI Yin.Research on computing grid software architecture[C]//Proc of Lecture Notes in Computer Science. Berlin, Heidelberg:Springer,2004:817-820.
[4]Van DEURSEN A,HOFMEISTER C,KOSCHKE R,et al.Symphony:viewdriven software architecture reconstruction[C]//Proc of the 4th Working IEEE/IFIP Conference of Software Architecture.Washington DC:IEEE Inc,2004:122132.
[5]NORO M,KUMAZAKI A.On aspectoriented software architecture: it implies a process as well as a product[C]//Proc of the 9th AsiaPacific Software Engineering Conference.Washington DC:IEEE Inc,2002:276-285.
[6]YU Huiqun,LIU Dongmei,HE Xudong,et al.Secure software architectures design by aspect orientation[C]//Proc of the 10th IEEE International Conference of Engineering of Complex Computer Systems.Washington DC: IEEE Inc,2005:47-55.
[7]SHAW M.The comingofage of software architecture research[C]//Proc of the 23rd International Conference of Software Engineering.Washington DC:IEEE Inc,2001:656-664.
[8]KRUCHTEN P,OBBINK H,STAFFORD J.The past,present, and future for software architecture[J].IEEE Software,2006,23(2):22-30.
[9]SHAW M,CLEMENTS P.The golden age of software architecture[J].IEEE Software,2006,23(2):31-39.
[10]駱華俊,唐稚松,鄭建丹.可視化體系結構描述語言XYZ/ADL[J].軟件學報,2000,11(8):10241029.
[11]楊世瀚,王灝.管道—過濾器軟件體系結構風格的形式化[J].小型微型計算機系統,2000,21(11):12141216.
[12]JIA Xiaoping.A pragmatic approach to formalizing objectoriented modeling and development[C]//Proc of the 21st Annual International Conference ofComputer Software and Applications.Washington DC:IEEE Inc,1997:240-245.
[13]PLAT N,Van KATWIJK,TOETENEL H.Application and benefits of formal methods in software development[J].Software Engineering Journal,1992,7(5):335-346.
[14]BAHSOON R,EMMERICH W.Evaluating software architectures: development, stability, and evolution[C]//Proc of ACS/IEEE International Conference of Computer Systems and Applications.Washington DC:IEEE Inc, 2003:47-56.
[15]KAZMAN R,BASS L,WEBB M,et al.SAAM:a method for analyzing the properties of software architectures[C]//Proc of the 16th International Conference of Software Engineering.Los Alamitor:IEEE Computer Society Press,1994:81-90.
[16]YU Huiqun,HE Xudong,DENG Yi,et al.A formal method for analyzing software architecture models in SAM[C]//Proc of the 26th Annual International Conference of Computer Software and Applications.Washington DC:IEEE Inc,2002:645-652.
[17]GARLAN D.Formal modeling and analysis of software architecture:components,connectors,and events[C]//Lecture Notes in Computer Science 2804.2003:1-24.
[18]趙會群,王國仁,高遠.軟件體系結構抽象模型[J].計算機學報,2002,25(7):730736.
[19]HAN Songqiao,ZHANG Shensheng,ZHANG Yong,et al.An adaptable software architecture based on mobile components in pervasive computing[C]//Proc of the 6th International Conference of Parallel and Distributed Computing, Applications and Technologies.Washington DC:IEEE Inc, 2005:309-311.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文?!?/p>