利用支持體系結(jié)構(gòu)動(dòng)態(tài)變化的圖文法驗(yàn)證體系結(jié)構(gòu)的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于軟件體系結(jié)構(gòu)領(lǐng)域,具體涉及利用支持體系結(jié)構(gòu)動(dòng)態(tài)變化的圖文法驗(yàn) 證體系結(jié)構(gòu)的方法,尤其涉及圖文法理論、軟件體系結(jié)構(gòu)動(dòng)態(tài)演化理論。
【背景技術(shù)】
[0002] 在圖形化技術(shù)中,LeM6tayer使用了圖文法來形式化的定義軟件體系結(jié)構(gòu),將圖 中的節(jié)點(diǎn)映射成體系結(jié)構(gòu)中的構(gòu)件/連接子,邊映射成構(gòu)件間的交互關(guān)系,此外,他還采用 了類似通信順序進(jìn)程的標(biāo)注來對(duì)支持體系結(jié)構(gòu)風(fēng)格和實(shí)例的定義。Hirsch等人則采用超 圖的方式來定義軟件體系結(jié)構(gòu),他們利用圖重寫規(guī)則來表達(dá)體系結(jié)構(gòu)的動(dòng)態(tài)演化過程。Le M6tayer和Hirsch的方法都不支持對(duì)軟件體系結(jié)構(gòu)模型中,接口的規(guī)約。Rekers和Schilrr 則基于對(duì)象之間的空間關(guān)系,提出了一種上下文敏感的圖文法Layered圖文法,它允許左 圖和右圖中含有任意節(jié)點(diǎn)的節(jié)點(diǎn)和邊,并給出了一種高效的圖解析算法。雖然layered圖 文法作為一種形式化的圖語言比較容易理解,但是其語法的解析較為復(fù)雜并且實(shí)現(xiàn)的效率 較低。Zhang等人在此基礎(chǔ)上,提出了另一個(gè)上下敏感的圖文法Reserved圖文法。Reserved 圖文法使用標(biāo)記圖的方式來改進(jìn)算法的實(shí)現(xiàn)效率并降低了圖解析的復(fù)雜度,同時(shí)結(jié)合UML 來定義、驗(yàn)證及轉(zhuǎn)換軟件系統(tǒng),但未說明如何來實(shí)現(xiàn)軟件體系結(jié)構(gòu)的刻畫。柏林工業(yè)大學(xué)的 圖文法研宄小組也開發(fā)了一個(gè)基于規(guī)則的可視化語言Attributed圖文法,用來規(guī)約復(fù)雜 的圖形化數(shù)據(jù)結(jié)構(gòu)。一些自適應(yīng)系統(tǒng)也是使用了Attributed圖文法實(shí)現(xiàn)了系統(tǒng)自動(dòng)分析 和驗(yàn)證,并且可對(duì)系統(tǒng)的類型和約束進(jìn)行建模。然而,Attributed圖文法的開發(fā)和設(shè)計(jì)并 不是針對(duì)軟件體系結(jié)構(gòu)的設(shè)計(jì)和規(guī)約。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于對(duì)通用圖文法進(jìn)行擴(kuò)展,引入接口、接口標(biāo)簽集、狀態(tài)及附加屬 性的信息,從而能夠高層抽象軟件系統(tǒng)的組成結(jié)構(gòu)、連接方式以及系統(tǒng)結(jié)構(gòu)配置及屬性等 要素,完整地支持軟件體系結(jié)構(gòu)的建模、分析和動(dòng)態(tài)演化。同時(shí),通過給出Breeze圖文法中 的產(chǎn)生式規(guī)則,能夠描述軟件體系結(jié)構(gòu)的動(dòng)態(tài)重配置(增、刪操作),滿足開放的網(wǎng)絡(luò)環(huán)境 和變化的用戶需求。此外,通過Breeze圖文法在對(duì)軟件體系結(jié)構(gòu)進(jìn)行規(guī)約的同時(shí)還可以捕 獲在軟件開發(fā)初期和后期演化過程中動(dòng)態(tài)變換,基于Breeze圖文法的形式化基礎(chǔ),通過推 導(dǎo)驗(yàn)證,保證演化后的一致性和完整性。
[0004] 根據(jù)本發(fā)明提供的一種利用支持體系結(jié)構(gòu)動(dòng)態(tài)變化的圖文法驗(yàn)證體系結(jié)構(gòu)的方 法,包括如下步驟:
[0005] 步驟1,定義Breeze圖文法
[0006] 將&'eeze圖文法定義為六元組(G,P,TL,NL,TA,NA),其中:
[0007]-G表不Breeze圖;
[0008] -P表示可應(yīng)用于G的產(chǎn)生式規(guī)則集;
[0009] -TL表示終端標(biāo)簽集;
[0010] -NL表示非終端標(biāo)簽集;
[0011] -TA表示終端屬性集;
[0012] -NA表示非終端屬性集;
[0013] Breeze圖G定義為一個(gè)七元組(N,E,1N, 1E, s, t,aN),其中:
[0014] -Breeze圖G七元組中的N記為N(G),N(G)是一個(gè)有限的節(jié)點(diǎn)集;
[0015] -Breeze圖G七元組中的E記為E(G),E (G)是一個(gè)有限的邊集;E (G)定義為{(n. CNi,m.CNj)GN.CNXN.CN},n,mGN并且i,jGI;其中,n表示復(fù)合節(jié)點(diǎn)n,m表示復(fù)合節(jié) 點(diǎn)m,CNi表示子節(jié)點(diǎn)i,CN」表示子節(jié)點(diǎn)j,n.CN丨表示復(fù)合節(jié)點(diǎn)n上的接口子節(jié)點(diǎn)CNpm.CNj 表示復(fù)合節(jié)點(diǎn)m上的接口子節(jié)點(diǎn)C%,N表示通用節(jié)點(diǎn)集,CN表示接口子節(jié)點(diǎn)集,N.CN表示 節(jié)點(diǎn)集中的接口集,下標(biāo)i表示節(jié)點(diǎn)索引號(hào),即第i個(gè)節(jié)點(diǎn),下標(biāo)j表示表示節(jié)點(diǎn)索引號(hào),BP 第j個(gè)節(jié)點(diǎn);I表示索引集;
[0016]-Breeze圖G七元組中的]^記為IN(G),In(G)是給定的節(jié)點(diǎn)標(biāo)簽函數(shù),表示在 Breeze圖G中,將通用節(jié)點(diǎn)集N與節(jié)點(diǎn)標(biāo)簽集關(guān)聯(lián);其中,Breeze圖G中的1^記為 Ln(G),Ln(G)定義為KUj)GTXS},i,jGI;其中,凡表示節(jié)點(diǎn)類型集T中的第i種節(jié) 點(diǎn)類型,Sj表示節(jié)點(diǎn)狀態(tài)集S中的第j個(gè)狀態(tài)類型;T定義為{component,connector,X}, component表示構(gòu)件,connector表示連接子,X表示節(jié)點(diǎn)初始化時(shí)的類型;S定義為 {Waiting,Active,TemporaryFailure,FatalFailure},Waiting表不構(gòu)件或連接子創(chuàng)建 后的初始狀態(tài),Active表示構(gòu)件或連接子正常工作狀態(tài),TemporaryFailure表示構(gòu)件或連 接子臨時(shí)失效狀態(tài),F(xiàn)atalFailure表示構(gòu)件或連接子致命失效狀態(tài);
[0017]-Breeze圖G七元組中的Ie記為IE(G),Ie(G)是給定的邊標(biāo)簽函數(shù),表示在Breeze 圖G中,將通用邊集E與邊標(biāo)簽集1^相關(guān)聯(lián);
[0018] -Breeze圖G七元組中的aN記為aN (G),aN (G)是節(jié)點(diǎn)屬性標(biāo)記函數(shù),表示在Breeze 圖G中,將通用邊集E與構(gòu)件或連接子屬性集ANffi關(guān)聯(lián);
[0019]-Breeze圖G七元組中的s, t記為s(G), t (G),s(G), t (G)是函數(shù),表示在Breeze 圖G中,將每條邊與該邊對(duì)應(yīng)的源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的接口相關(guān)聯(lián);
[0020]I(G): =1CN (n) U In(G) U Ie(G)代表Breeze圖G中所有接口、節(jié)點(diǎn)和邊的標(biāo)簽 集;
[0021] 產(chǎn)生式規(guī)則集P由左手邊規(guī)則圖LHS、右手邊規(guī)則圖RHS構(gòu)成;LHS與RHS擁有一 個(gè)公共子圖CG,其中,公共子圖CG需滿足如下條件:
[0022] -任何一個(gè)屬于CG的節(jié)點(diǎn)也一定屬于LHS和RHS;
[0023]-任何一個(gè)屬于CG的邊也一定屬于LHS和RHS;
[0024] -CG的標(biāo)簽集是LHS的標(biāo)簽集和RHS的標(biāo)簽集的公共部分;
[0025] -CG的屬性集是LHS的屬性集和RHS的屬性集的公共部分;
[0026] 對(duì)于產(chǎn)生式規(guī)則集P中的任意一個(gè)產(chǎn)生式規(guī)則實(shí)例p,定義為一個(gè)二元組(L,R), 其中:
[0027] -L表示左手邊規(guī)則;
[0028] -R表示右手邊規(guī)則;
[0029]R是一個(gè)非空的連通圖,L和R都是基于相同的標(biāo)簽集Le和屬性集Ae,Le由TL和 NL構(gòu)成,Ae由TL和NL構(gòu)成;
[0030] Breeze圖文法中的節(jié)點(diǎn)為復(fù)合節(jié)點(diǎn),即將接口作為子節(jié)點(diǎn)引入到構(gòu)件節(jié)點(diǎn)中;
[0031]復(fù)合節(jié)點(diǎn)定義為一個(gè)四元組(pn,CN, 1CN,aCN),其中:
[0032]-復(fù)合節(jié)點(diǎn)四元組中的pn是一個(gè)父節(jié)點(diǎn),即構(gòu)件或連接子的主體部分;
[0033] _復(fù)合節(jié)點(diǎn)四元組中的CN是一個(gè)子節(jié)點(diǎn)集,即構(gòu)件或連接子的接口;
[0034]-復(fù)合節(jié)點(diǎn)四元組中的Icm是作用在子節(jié)點(diǎn)上的標(biāo)記函數(shù),表示將復(fù)合節(jié)點(diǎn)上的子 節(jié)點(diǎn)集CN與標(biāo)簽集Lcn相關(guān)聯(lián),其中,L^定義為{IVGT'},iGI;Ti'表示第i個(gè)復(fù)合節(jié) 點(diǎn)的接口類型,接口類型集T'定義為{1,0, 1/0,X},其中,1、0、I/O分別代表接口是服務(wù)請(qǐng) 求者、服務(wù)提供者、服務(wù)請(qǐng)求/提供者,X表示處于初始化期間的接口還未指派接口類型;
[0035] _復(fù)合節(jié)點(diǎn)四元組中的aCN是作用在子節(jié)點(diǎn)上的接口屬性標(biāo)簽函數(shù),表示將復(fù)合 節(jié)點(diǎn)上的子節(jié)點(diǎn)集CN與接口屬性集A。#關(guān)聯(lián);其中,Acm是構(gòu)件或連接子的接口屬性集;
[0036] 步驟2,定義Breeze圖文法重配置操作;
[0037] 步驟3,利用Breeze圖文法推導(dǎo)驗(yàn)軟件證體系結(jié)構(gòu)的一致性或完整性。
[0038] 優(yōu)選地,所述步驟2包括:重配置添加構(gòu)件和連接子,具體為:
[0039] 假定當(dāng)前Breeze圖為CS,CS中含有構(gòu)件類型為S的構(gòu)件s,若需要引入與構(gòu)件s 通訊且構(gòu)件類型為C的構(gòu)件c,則令該構(gòu)件c通過其接口Req發(fā)送請(qǐng)求,同時(shí)引入連接子類 型為CON的連接子con,該連接子con通過其接口Res接收來自構(gòu)件c的請(qǐng)求,構(gòu)件s通過 其接口Res接收來自連接子con的接口Req發(fā)來的請(qǐng)求。
[0040] 優(yōu)選地,所述步驟2包括:刪除構(gòu)件和連接子,具體為:
[0041] 假定當(dāng)前Breeze圖為CS,需要?jiǎng)h除與構(gòu)件類型為S的構(gòu)件s相連接的構(gòu)件類型為 C的構(gòu)件c,則刪除構(gòu)件c,同時(shí)移除負(fù)責(zé)構(gòu)件s與構(gòu)件c之間通訊的連接子類型為CON的連 接子con〇
[0042] 優(yōu)選地,所述步驟3包括步驟:
[0043] 利用Breeze圖文法推導(dǎo)驗(yàn)證體系結(jié)構(gòu)的一致性,包括:
[0044] 假設(shè)通過重配置添加操作給體系結(jié)構(gòu)SA增加了一個(gè)新的構(gòu)件Coms,并通過連接子 Connz進(jìn)行交互,K、T分別是構(gòu)件Com3和連接子Conn2對(duì)外隱藏的操作,則一致性保障驗(yàn)證 條件為如下