印桂生,宋敏,2,韋正現,王紅濱,張萬松
(1.哈爾濱工程大學計算機科學與技術學院,黑龍江 哈爾濱150001;2.北京外國語大學 信息技術中心,北京100089;3.船舶系統工程研究所,北京100036)
構造性和演化性是軟件的兩個基本特性[1].軟件進行漸變并達到所希望的形態就是軟件演化.軟件演化由一系列復雜的變化活動組成,這些變化活動稱為演化操作.引起軟件變化的原因是多方面的,對軟件演化進行理解和控制顯得復雜而困難[2].而軟件體系結構(software architecture,SA)作為軟件的藍圖,為人們從宏觀上把握軟件的整體結構,為軟件的整個生命周期各個階段提供有效指導[3-4],因此,軟件演化的研究應該從高層的軟件體系結構,以便于對演化進程及其影響進行有效控制.SA演化研究分為靜態演化和動態演化兩方面.靜態演化主要從非運行時SA版本更新、功能增加、刪除和修改等方面入手.動態演化是在軟件運行時刻SA的變換來進行深入研究[5-7].文獻[2]通過語義可達矩陣給出構件對SA貢獻大小來評價SA演化的波及效應,但沒有從語義相關性以及不同SA演化操作具有不同特性的角度來分析SA演化.文獻[8-9]分別用進程代數和圖論來解釋SA演化,但它們更注重SA的構造而非演化.文獻[10-11]對軟件演化過程進行了定性分析.本文從SA中構件及構件之間的語義關系、語義協議關系和SA演化操作特性3個方面綜合分析SA靜態演化及其波及效應.首先給出構件內部的語義和語義協議關系,分析了構件之間語義關系的時序性可以通過語義協議關系來表示;其次給出了SA語義關系矩陣,將SA中語義關系組成語義關系鏈,提出了SA語義關系鏈矩陣并對它的性質進行分析;再次根據SA演化操作特點提出了語義關系鏈波及效應與語義關系構件波及效應算法,同時,針對不同語義協議關系項對刪除構件的影響程度不同,提出了刪除構件的語義關系構件波及效應算法;最后給出了SA演化實驗及結果分析.
目前,普遍認為構件以及構件之間的關系(連接件)共同組成了軟件體系結構[10].
構件C由接口規約和內部規約兩部分組成.構件接口分為兩類,一類是示出接口P,它是構件C向外提供功能(服務)接口,另一類是導入接口E,它是構件C需要的功能(服務)接口[12].內部規約是對構件內部功能和屬性的抽象和描述.從SA來考察構件,它表現為導入接口與構件內部規約到示出接口的關系總和.
定義1 構件的語義.設P是構件C的示出接口集(記為 C·P),E是 C的導入接口集(記為C·E),則構件C的語義S是從E到P的二元關系:S?E×P.
如圖 1(a)中 S={(a,p),(b,p),(b,q),(d,q),(e,t)}是 P 到 E 的一個關系.顯然導入接口a與示出接口p形成的有序偶(a,p)就是接口a和p之間的語義關系.
構件的語義描述了示出接口與導入接口之間存在語義關聯,并沒有刻畫接口成員間的語義時序或邏輯的協議關系.如,導入接口a和b必須同時滿足才能導致示出接口p,導入接口b和d其中一個滿足就可以導致示出接口q,二者的協議關系完全不一樣.示出接口與導入接口之間的語義協議關系,可以由不同的協議關系項來表示.由構件組成的軟件系統,必然存在只有示出接口而沒有導入接口的構件,同時也存在只有導入接口而沒有示出接口的構件.

圖1 構件的語義及SA語義關系模型Fig.1 Component semantic and SA semantic model
定義2 語義協議關系.構件示出接口與導入接口之間的語義協議關系由它們的語義協議關系項來確定,語義協議關系項是下列關系中的一種:
1)產生關系:構件C的示出接口p不需要任何導入接口就可以提供或引發,記為0τ→p,稱為τ關系;
2)結束關系:構件C的導入接口a都不會的引發或提供任何示出接口,記為σa→0,稱為σ關系;
3)對應關系:構件C滿足導入接口a才可以引發或提供示出接口p,記為aθ0→p,稱為θ關系;
4)選擇關系:構件C需要滿足導入接口a和b的其中之一或全部,才能引發或提供示出接口p,記為 a∪b→p,稱為∪關系;
5)互斥關系:構件C在導入接口a和b之間,接口a被導入則接口b不能被導入,或者接口b被導入則接口a不能被導入,才引發或提供示出成員p,記為 a⊕b→p,稱為⊕關系;
6)并發關系:構件C需要導入接口a和b都得到滿足,才能引發或提供示出接口p,記為a∩b→p,稱為∩關系;
7)順序關系:構件C只有導入接口a被導入并處理完成以后,接口b才能被導入并進行處理,而引發或提供示出接口p,記為 a∞b→p,稱為∞關系.
定義2中0表示空接口.不同語義協議關系項具有語義強弱之分,顯然(θ≈ ∞ ≈ ∩)>(∪ ≈⊕).
在圖1(a)中的構件C,e和t之間存在對應關系,a、b與p之間,b、d與q之間可能存在選擇關系、并發關系、互斥關系或順序關系.
在構件組成的軟件系統中,構件與構件之間通過接口實現功能(服務)的交互,因此具有功能交互的構件之間就發生語義關聯.
定義3 構件之間的語義關系.存在構件C1和C2,如果滿足①a∈C1·P,②e∈C2·E,③a=e,則稱構件C1到C2具有直接語義關系;存在構件C1、C2和 C3,如果滿足①a∈C1·P,②e∈C2·E,③b∈C3·P,f∈C3·E,④a=f,b=e,⑤b 和 f之間存在對應關系、選擇關系、并發關系、互斥關系或和順序關系,則稱構件C1到C2具有間接語義關系.構件之間的直接語義關系和間接語義關系統稱為構件之間的語義關系,記為SR.
由定義3可知,當一個構件向外提供功能成為另一個構件請求輸入功能時,這兩個構件具有直接語義關聯,構件之間的語義關系如圖2,圖中構件C1和C3具有直接語義關系,構件C1和C2具有間接語義關系.構件之間的語義關系具有方向性,圖2中有SR1= <C1,C3> ,SR2= <C3,C2>,SR3= <C4,C3>.為了方便,將SR1記為C1SR→—1C3,稱構件C1為SR1的射出構件,C3為SR1的射入構件,C1和C3為結點構件(簡稱結點),C1為 C3的前驅,C3為 C1的后繼,
SR→—1為弧,它是C1的射出弧,也是C3的射入弧.圖 2 中,如果 a3∩b3→p3,則 SR3∩SR1→SR2,因此不同構件之間語義關系的時序性(邏輯性)就可以采用語義協議關系項來表示.

圖2 構件之間的語義關系Fig.2 Semantic relationship among conponents
SA是組成系統的構件以及構件與構件之間交互作用關系(連接件)的高層抽象[2,13].連接件承載構件之間的語義關系,為了方便,文章采用構件之間的語義關系SR表示連接件.由此,SA的語義關系模型可表示為SA={Cs,SRs},其中,Cs是構件集,SRs是構件之間的語義關系集.圖1(b)描述了5個構件具有7個直接語義關系的SA語義關系模型.
軟件的功能與屬性表現為構件內部以及構件之間語義關系的總和,根據SA中構件之間的語義關系,可以構建SA的語義關系矩陣.

稱MS為SA的語義關系矩陣.
設圖 1(b)中有:SR2θ0 →SR4、SR4θ0 →SR7、SR1@SR7→SR5,@∈{∪,∩,⊕,∞ },則其 SA 的


定義5 SA語義關系鏈.SA語義關系鏈表示為 RL={C,SR},其中 SR={SRi|SRi∈SRs,1≤i≤n,n≥0},C={Ci|Ci∈Cs∧Ci∈SR,1≤i≤n,n≥0},并且滿足:
1)存在唯一的結點使得它的射出弧和射入弧之間存在τ關系,即為語義關系鏈的頭結點;
2)存在唯一的結點使得它的射出弧和射入弧之間存在σ關系,即為語義關系鏈的尾結點;
3)除了頭結點和尾結點,其他每個結點都有唯一的前驅和后繼,并且結點的射出弧和射入弧之間存在除τ和σ以外的語義協議關系項中的一種.
根據定義5,對?Ci∈RL,C不是RL中的構件,如果C和Ci沒有語義關系,則稱構件C與關系鏈RL無關,記作C//RL.可以將SA中包含的多個語義關系鏈組合起來形成矩陣.
定義6 語義關系鏈構件矩陣.構造一個矩陣,將一條語義關系鏈RL的構件Ci按照先后順序組成矩陣同一列,其他語義關系鏈的構件依次構成其他列,以構件最多的語義關系鏈為基準(n),不足n個構件的語義關系鏈所形成列的空位置補充空構件(NULL),這樣組成一個n×m的語義關系鏈構件矩陣MRV.
定義7 語義關系鏈矩陣.將一條語義關系鏈RL的構件語義關系SRi按照先后順序組成矩陣同一列,其他語義關系鏈的語義關系依次構成其他列,以構件語義關系最多的語義關系鏈為標準(n-1),不足n-1列的空位置補充0,則構成一個(n-1)×m的語義關系鏈矩陣MRI,m是SA的關系鏈的條數.
空構件與任意語義關系鏈無關NULL∥RLi.如果兩條語義關系鏈上的構件都不產生語義關系,則這兩條語義關系鏈無關,否則相關.
根據定義6和定義7,圖1(b)所對應的語義關系鏈構件矩陣和語義關系鏈矩陣為:

定義8 語義關系鏈無關.語義關系鏈RLi和RLj無關,如果?SRi和 ?SRi,使(SRi∈ RLi∧SRi?RLj)∧(SRj∈RLj∧SRj?RLi)成立,記作 RLi∥RLj,同時有 SRi∥RLj,SRj∥RLi.
定義9 語義關系鏈相關.語義關系鏈RL1和RL2相關,如果?SRi,使 SRi∈RL1∧SRi∈RL2成立,把所有這樣的SR集合記作S12=RL1∩RL2.
由定義9,如果2條語義關系鏈相關,則這2條語義關系鏈必然通過同一個構件發生關系,則該構件的射出弧或射入弧不是唯一,可將構件Ci的射出弧集合記為SOi,射入弧集合記為SIi.
定義10 語義關系鏈相關度.如果 S12=RL1∧RL2≠?,SRi∈S12,Ci為 SRi的射出構件,?SRj∈SIi并且 SRj∈RL1,同時?SRk∈SIi并且SRk∈RL2,使 SRj@SRk→SRi,當@ ∈{∩,∞ ,θ},則稱RL1和 RL2是強相關;當@∈{∪,⊕},則稱RL1和RL2是弱相關.
定義11 語義關系鏈矩陣相關性.對于SA的MRV和 MRI,如果?RLi,?RLj,有 RLi//RLj,則稱MRV和 MRI為無關矩陣;如果?RLi,?RLj,RLi和 RLj是強相關,則稱 MRV和 MRI為強相關矩陣;?RLi,?RLj,使 RLi和 RLj是弱相關,同時?RLk,?RLl,使RLk和RLl是強相關,則稱 MRV和 MRI為弱相關矩陣.強相關矩陣和弱相關矩陣統稱為相關矩陣.
根據語義關系鏈矩陣相關性定義,有以下定理.
定理1 如果MRV是無關矩陣,則任意2個元素Cij和 Ckl(j≠l)無關.
證明:在 MRV中,假設存在 2個構件 Cij和Ckl(j≠l)具有語義相關性.根據定義6和定義7,有Cij∈RLj,Ckl∈RLl,RLj≠RLl;根據定義 11,如果j≠l,則RLj//RLl,與MRV相關性定義矛盾,證畢.
定理2 如果MRI是無關矩陣,則任意2個RLi和RLj無關.
證明:同定理1,略.
定理3 如果MRV和MRI是相關矩陣,則存在SRk、Ch、RLi和 RLj,使 SRk∈RLi∧SRk∈RLj∧Ch∈RLi∧Ch∈RLj(j≠i)成立.
where A is constant, h is Planck’s constant, and Eg is the band gap width. n is a parameter that depends on the nature of the transition. For direct permitted transitions n= 1/2,while for indirect allowed transitions n = 2, and for direct forbidden transitions n = 3/2.
證明:在 MRV和 MRI中,1)假設對于任意 SR,使SR∈RLi∧SR?RLj(j≠i)為真,根據定義 8,有RLi∥RLj;2)假設對于任意 C,使 C∈RLi∧C?RLj(j≠i)為真,根據定義5,有 C∥RLj,再根據定義6,可知RLi∥RLj;根據1)、2)以及定義7和定義8,MRV和MRI為無關矩陣,矛盾,證畢.
定理1和2說明SA的MRV和MRI是無關矩陣,則不同語義關系鏈上的構件和SR不會產生關系.定理3說明SA的MRV和MRI是相關矩陣,則不同語義關系鏈上的構件和SR可能會產生關系.
SA演化操作主要包括SA中構件增加、修改、刪除、合并和拆分等.SA演化的波及效應δ表現為變化構件與其存在直接或間接語義關聯構件的修改、組合和歸整[2,14].
定義12 語義關系鏈波及效應δL.當SA中構件C發生變化時,與之產生語義關系并受到影響語義關系鏈的數量.
定義13 語義關系構件波及效應δC.當SA中構件C發生變化時,與之產生語義關系并受到影響構件的數量.
變化的構件通過與之產生語義關系的傳播而引起波及效應,這個波及效應可以通過SA中構件之間的語義關系來確定.根據定理1和2,如果SA的MRV和MRI是無關矩陣,則對構件的演化操作,僅影響到該構件所在語義關系鏈的其他構件.如果SA的MRV和MRI是相關矩陣,則對構件的演化操作,不僅影響該構件所在的語義關系鏈的其他構件,而且可能影響到與該語義關系鏈相關的其他語義關系鏈上的構件,根據定理3,能夠從SA的MRV和MRI來界定受其影響或波及到的其他構件范圍.本節設計計算SA中構件Ci的語義關系鏈波及效應與語義關系構件波及效應算法.
算法1:Ci語義關系鏈波及效應與語義關系構件波及效應算法描述:
輸入:SA的語義關系鏈相關矩陣MRV和SA的構件Ci.
輸出:構件Ci的語義關系鏈波及效應和語義關系構件波及效應.
1)初始化Ci語義關系鏈波及效應l=0,構件Ci的語義關系構件波及效應n=0,參數i=0,j=0,k=0,ki=0關系鏈的鏈表 LineRL,LineRL中每個元素的構件鏈表數組 Line[|LineRL|],并為 Line[|LineRL|]的每個元素設置一個印記;
2)在MRV中從左至右找到構件Ci的第i個位置,即Ci∈RLi并確定Ci所在位置,如果找到,則置Ci語義關系鏈效應數l=l+1,i=i+1,進入步驟3);如果找不到,進入步驟4);

4)從 LineRL中取出第 j個元素 LineRL[j],如果,則進入步驟 8),否則進入步驟 5);
5)取出Line[|LineRL|]對應的第k個元素獲得對應的構件Ck所在的LineRL[j]的位置L(Ck),如果Ck 是 LineRL[j]的尾節點,則刪除并且將 LineRL[j]從鏈表中刪除,j=j+1,重復步驟4);如果印記為1并且Ck不是LineRL[j]的尾節點,則k=k+1,重復步驟5),如果印記為0并且Ck不是LineRL[j]尾節點,則進入步驟6);
6)查找對比 Line[|LineRLj|]的各個元素,如果Line[|LineRLj|]不存在 L(Ck),則計算 n=n+[L(Cn)-L(Ck)],L(Ck)進入 Line[LineRLj]并打上印記1;如果存在L(Ck)并且L(Ck)>,則計算 n=n+[L(Cn)-L(Ck)],打上印記1;如果存在L(Ck)并且L(Ck)<,則計算L(Ck)],打 上 印 記 1,表 示的第一個元素構件所在的語義關系鏈的位置;L(Ck+1),…,L(Cn)分別和Line[Lin-的各個元素相比較,如果不存在,則進入鏈表并打上印記0,執行下一步;如果存在則直接執行下一步;
7)在MRV中從左至右找到構件Ck的第ki個位置,即 Cki∈RLki并確定 Cki所在位置,將 RLki和 LineRL中的元素相比較,如果相等,則ki=ki+1,重復步驟7)直到遍歷MRV后重復執行步驟4);如果不等,則置語義關系鏈效應數l=l+1,ki=ki+1,計算n=n+[L(Cn)-L(Ci)],RLki進入鏈表 LineRL,L(Cki)進入 Line[LineRLki]并打上印記 1,L(Cki+1),…,L(Cn)進入 Line[LineRLki]并打上印記 0,重復步驟7)直到遍歷MRV后重復執行步驟4);
8)算法結束.
算法1可以界定SA中產生語義關系之間的構件波及效應,用于分析SA中構件增加和構件修改引起SA中其他構件變化的范圍.
然而,算法1并沒有考慮不同構件之間語義關系的時序性(邏輯性),即構件Ci的SOi中成員與SIi中成員的語義協議關系.不同語義協議關系對構件刪除產生不同影響,圖2中如果存在SR3∩SR1→SR2,即SR3和SR1強相關,則刪除構件C4,則C3和C2必然受到影響而需要修改;如果存在SR3∪SR1→SR2,即SR3和SR1弱相關,則刪除構件C4,則C3和C2可以不修改.因此為了界定不同的語義關系鏈相關度在構件刪除中產生的波及效應,設計了算法2.
算法2:考慮不同語義協議關系項對刪除構件語義關系構件波及效應(δDC)算法:
1)根據算法1找到在MRV中構件Ci所在的關系鏈和相應的位置,初始化n=0,l=0,進入步驟2);
2)根據找到的關系鏈,在MRI中找到對應的列,進行兩兩對比,判斷某個RLi中是否存在與其他RLj相同的元素,即 SRk∈RLi∧SRk∈RLj(i≠j),如果存在則將這些關系鏈提取出來形成一個系列(RLh1,RLh2,…,RLhn),進入步驟3);如果不存在,則計算n=n+[L(Cn)-L(Ci)],l=l+1,進入步驟5);

4)如果 SRk-1和 SRk強相關,則計算 n=n+[L(Cn)-L(Ci)],l=l+1;否則計算 n=n+[L(Ck)-L(Ci)],l=l+1,進入步驟5);
5)算法結束.
算法2可以界定不同SR的語義協議關系在構件刪除中產生的波及效應.
構件拆分和構件合并操作導致構件之間語義關系的合并或修改進而影響SA的語義關系,因此需要重新構造SA的MS、MRV、MRI進行分析.
SA的演化分析用于界定由于演化操作引起的波及效應,預測和分析演化操作可能帶來的SA變化以及引起其他構件變化的范圍等[2,19].以某艦艇信息仿真系統為實驗案例,說明SA演化操作引起SA變化及其波及效應.該系統從版本1(V1)到版本2(V2)的演化中,增加通信指示信息功能,并將通信指示目標與本艦艇的探測目標信息實現融合,取消TMA(目標運動分析)人工修改信息輸入,將武器類型單獨控制改進為武器綜合控制,同時將武器的回復信息參與效果評估.
在實驗中,首先建立V1和V2的語義關系模型、MS、MRV和MRI,根據算法1和算法2計算相關的波及效應參數,然后以文獻[15]的方法分析檢測V1、V2相應構件的代碼相似度(Sim),在此基礎上,對2個版本的代碼進行詳細地分析,最后對實驗結果進行對比分析和總結.由于篇幅,V1和V2的MS、MRV、MRI這里不做介紹.V1和V2的SA語義關系模型如圖 3(a)和 3(b).V1的語義關系有:SR12θ0→SR15,(SR1∪SR10∪SR8)∩SR6→SR11,(SR1⊕ SR10⊕SR8)∩SR6→(SR12,SR13,SR14),(SR4∪SR2)∩SR5→SR7,SR3∩SR5→SR8,SR13θ0→SR16,SR7∪SR9→SR10,SR14θ0→SR17;V2的語義關系有:SR7θ0→SR10,(SR1⊕ SR10 ⊕ SR8⊕ SR19)∩SR6→SR12,(SR4∪SR2)∩SR5→SR7,SR12θ0 →(SR15,SR16,SR17),(SR18∪SR3)∩SR5→SR8,SR16θ0→SR20,SR15θ0→SR21,(SR1∪SR10∪SR8∪SR19)∩SR6→SR11,SR17θ0→SR22.實驗結果如表 1 所示.

圖3 V1和V2的SA語義關系模型Fig.3 SA semantic relationship model of V1and V2

表1 V1/V2波及效應參數和相應構件的SimTable 1 V1/V2ripple-effect data and corresponeling components of Sim %
很顯然,從V1到V2的SA演化中,V2中刪除了Cont,增加了 Conn,將 CMis、CTor和 CDes 合并為CW,增加了 SR18~ SR22,刪除了 SR9,將 SR12、SR13和SR14合并為SR12.下面對實驗結果進行分析:
1)刪除 Cont構件,δDC=0,δC=9,V1和 V2的TMA的代碼相似度為100%,說明文章算法2的實驗結果與文獻[20]的方法檢測相吻合.
2)從SA語義關系上,增加Conn構件是在原來SA上增加兩個語義關系(SR18和SR19),生成新的語義關系鏈.因此兩個版本的δL,Fuse由20變成24,Comp由32 變成 36,Eval、Mis、Tor和 Des由 8 變成9.Fuse和 Comp的代碼相似度檢測結果分別為89.3%和86.8%.在人工分析代碼中,Fuse對 SR18進行處理而增加代碼,Comp處理SR19而增加代碼,同時對SR8的處理增加并修改部分代碼.從實驗結果來看,文章算法1的實驗結果、代碼相似度檢測結果及人工分析結果相吻合.
3)在 V2中,對構件 Mis、Tor和 Des的修改,是增加相應輸出接口,構件Eval則調用這些接口.從SA演化上看,是在Mis、Tor和Des所在的語義關系鏈尾結點增加了相應的構件(虛擬構件),而這些虛擬構件合并在構件Eval中,同時Eval還需要對SR8、SR20、SR22和SR22進行相關處理而增加和修改代碼.因此,兩個版本Mis、Tor和Des的代碼相似度非常高,而構件Eval的代碼相似度就比較低(78.6%).
4)從實驗結果上看,將 CMis、CTor和 CDes合并為CW并沒有改變SA的語義關系鏈數目,因而也未從語義關系上改變SA的MRV和MRI.但因構件數目減少而改變SA的MS,因此構件合并有利于SA優化.構件合并后需要對合并后的代碼進行修改,因此構件代碼的相似度比較低.
從實驗結果及分析來看,從構件及構件之間的語義關系的角度,根據不同SA演化操作特性設計的波及效應算法的實驗結果、代碼相似度檢測結果以及人工代碼分析結果是相吻合的.
SA的語義關系總和體現了軟件的功能與屬性,SA演化描述了軟件功能和屬性的變遷,對軟件功能及其變遷的控制一直都是業界難題.文章將SA演化分析建立在構件之間的語義關系及其語義協議關系上,把SA中語義關系組成語義關系鏈,通過構建SA語義關系模型、語義關系矩陣和語義關系鏈矩陣,從構件本身和構件之間的語義關系以及這些語義關系之間的相關性兩個方面,根據不同SA演化操作特性,計算分析SA不同演化操作的波及效應,進而界定它的影響范圍,從而能夠為SA演化的控制和預測提供了可量化的依據.目前,在構件組成的系統中,對SA的構建及其構件的析出主要以人工為主,如何自動識別并構建SA,自動解析出其中的構件,并實現智能控制SA的演化將是下一步研究重點.
[1]LIU Y,ZHANG S K,WANG L F,et al.Component-based software frameworks and role extension form[J].Journal of Software,2003,14(8):1364-1370.
[2]WANG Y H,ZHANG S K,LIU Y,et al.Ripple effect analysis of software architecture evolution based on reachability matrix[J].Journal of Software,2004,15(8):1107-1115.
[3]MEDVIDOVIC N,GRüNBACHER P,EGYED A,et al.Bridging models across the software lifecycle[J].Journal of Systems and Software,2003,68(3):199-215.
[4]JIA Y,GU Y Q.Domain feature space based semantic representation of component[J].Journal of Software,2002,13(2):311-316.
[5]ZENG J,SUN H L,LIU XD,et al.Dynamic evolution mechanism for trustworthy software based on service composition[J].Journal of Software,2010,21(2):261-276.
[6]SONG Wei,MA Xiaoxing,LU Jian.Instance migration in dynamic evolution of web service compositions[J].Chinese Journal of Computers,2009,32(9):1816-1830.
[7]HUANG G,MEI H,YANG F Q.Runtime recovery and manipulation of software architecture of component-based systems[J].Journal of Automated Software Engineering,2006,13(2):251-278.
[8]MAGEE J,KRAMER J.Dynamic structure in software architectures[C]//Proc of the ACM SIGSOFT Symp on Foundations of Software Engineering.New York:ACM Press,1996:3-14.
[9]SHEN J R,SUN X,HUANG G,et al.Towards a unified formal model for supporting mechanisms of dynamic component update[C]//Proc of the ACM SIGSOFT Symp on Foundations of Software Engineering.New York:ACM Press,2005.80-89.
[10]SUN C A,JIN M Z,LIU C.Overviews on software architecture research[J].Journal of Software,2002,13(7):1228-1237.
[11]RYDER B G,TIP F.Change impact analysis for object-oriented programs[C]//Proc of 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering.New York:ACM Press,2001:46-53.
[12]張世琨,張文娟,常欣,等.基于軟件體系結構的可復用構件制作和組裝[J].軟件學報,2001,12(9):1351-1359.
ZHANG Shikun,ZHANG Wenjuan,CHANG Xin,et al.Building and assembling reusable components based on software architecture[J].Journal of Software,2001,12(9):1351-1359.
[13]MEI H,CHEN F,FENG Y D,et al.ABC:an architecture based,component oriented approach to software development[J].Journal of Software,2003,14(4):721-732.
[14]XU Jiaqing,PENG Xin,ZHAO Wenyun.An evolution analysis method based on fuzzy concept lattice and source code analysis[J].Chinese Journal of Computers,2009,32(9):1833-1844.
[15]趙長海,晏海華,金茂忠.基于編譯優化和反匯編的程序相似性檢測方法[J].北京航空航天大學學報,2008,34(6):711-715.
ZHAO Changhai,YAN Haihua,JIN Maozhong.Approach based on compiling optimization and disassembling to detect program similarity[J].Journal of Beijing University of Aeronautics and Astronautics,2008,34(6):711-715.