999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于接口矩陣分析的構件變化檢測方法的研究

2009-01-01 00:00:00李心科嚴魯明
計算機應用研究 2009年4期

(合肥工業大學 計算機與信息學院, 合肥 230009)

摘 要:

針對構件的變化性問題一直都是基于構件的軟件工程(CBSE)中的一個關鍵問題,首先對構件模型以及構件匹配原則進行形式化描述,構造了構件的接口關系矩陣;然后根據構件匹配原則,對構件接口關系矩陣進行分析,動態地檢測構件的變化,判斷構件變化可能會對其他相關構件以及整個系統產生影響;最后實現了構件變化分析的輔助工具CIDT(component interface detecting tool),并在軟件開發以及維護過程中使用CIDT對系統進行動態的檢測和分析。

關鍵詞:基于構件的軟件工程; 構件; 適應性; 變化檢測; 接口矩陣

中圖分類號:TP311.56文獻標志碼:A

文章編號:1001-3695(2009)04-1360-03

Interface matrix-based detecting method for change of component

LI Xin-ke, YAN Lu-ming

(Institute of Computer Information, Hefei University of Technology, Hefei 230009, China)

Abstract:This paper analyzed the change of component in the system, and estimated the impact on both the correlative component and the whole system. Firstly described the component model and adaptation principle in formal specification, and then constructed the connection matrix of component interface. According to the above information, developed a tool CIDT, which was used in CBSE to analyze the incidence of the changed component.

Key words:CBSE; component; adaptation; detecting of change; interface matrix



基于構件的軟件工程(CBSE)已成為一種被廣泛應用的軟件工程模式。CBSE的根本目的是為了解決軟件危機問題,并促進軟件的自動化開發進程。從目前的應用現狀來看,基于構件的軟件工程的優點在于:a)大大提高了軟件的開發效率;b)提高了軟件(構件)的可復用性;c)降低了軟件開發成本;d)提高了軟件的質量。

在基于構件的軟件開發過程中,構件是開發的基本單元,新的軟件系統是通過對已有構件的組裝和集成實現的,因此構件的變化會對其他構件以及整個系統產生影響。構件變化的適應性的檢測和相容性的判斷是解決構件變化后系統正確性和穩定性問題的有效辦法。

本文在對構件模型以及構件匹配原則進行描述的同時,構造了構件的接口關系矩陣,并通過接口關系矩陣來追蹤和檢測構件動態變化的影響范圍和構件的相容情況。

1 相關研究情況

關于構件的變化檢測,研究者提出了多種方法和機制。文獻[1,2]中提出了一種符號級的構件檢測機制,該機制通過定義參數流的語法,判斷每個參數在代碼中的執行方式與順序來檢測構件的適應性。符號級的檢測方法可以準確的判斷構件接口參數對于構件匹配的影響,但是該方法要求詳細的了解構件內部結構和代碼,不適合黑盒以及灰盒構件的檢測。文獻[3]通過構件交互接口的靜態列表和鏈路來檢測軟件體系結構中構件動態變化的適應性,追蹤構件變化的影響范圍。該方法為檢測構件的動態變化性提供了方便,但是由于一個構件有多個接口,且在軟件中可能被不同的其他接口調用,因此,在該方法中需要對構件接口使用的每種情況都建立一條鏈路或者列表,增加了檢測之前的工作量,不適應大型系統的檢測。文獻[4]提出了軟件體系結構的語義模型,并利用三種構件適應結構來判斷構件的適應性。語義模型可以有效的檢測構件之間的匹配關系,但是由于缺乏整體性,該模型不利于軟件體系結構的整體分析。

2 構件模型與構件匹配原則

為了便于描述構件以及構件接口之間的關系,在本章中將對構件、構件接口以及構件匹配原則進行形式化的描述。

定義1 構件。在CBSE中,構件C=〈I,F,S〉。其中:I={I1,I2,…,In}(n∈N)為構件的接口集合,Ii(1≤i≤n)表示構件C的第i個接口;F表示構件C的功能函數,F(i)與Ii(1≤i≤n)相對應,表示接口Ii的功能函數;S={S1,S2,…,Sn}(n∈N),S為構件C的狀態集合,每個方法F(i)均使構件達到一個相應的構件狀態,記為F(i)→Si。

定義2 接口。在構件中,構件接口I=〈IIn,Iout,DIn,Dout〉。其中:

IIn={P1,P2,…,Pk}(k∈N)表示接口I的輸入接口,{Pi}表示IIn的參數集合;

Iout={P1,P2,…,Ps}(s∈N)表示接口I的輸出接口,{Pi}表示Iout的參數集合;

DIn表示I的輸入接口IIn的接口約束集合;

Dout表示I的輸入接口Iout的接口約束集合。

為了方便表示,本文用param(IIn)表示接口I相應的輸入接口參數集合,param(Iout)表示接口I的輸出接口參數集合;把一對相應的輸入輸出接口記為〈IIn,Iout〉;構件C的第i個接口記為C_Ii。

定義3 接口相同。對于任意的接口I1=〈IIn1,Iout1,DIn1,Dout1〉,I2=〈IIn2,Iout2,DIn2,Dout2〉,若(param(IIn1)=param(IIn2))∧(param(Iout1)= param(Iout2))∧(DIn1=DIn2)∧(Dout1=Dout2),則稱接口I1與I2相同,記為I1≡I2。

在構件組裝的過程中,相同的接口之間是可以相互替換的,具有相同使用接口的構件也是可以替換的。

定義4 輸入匹配。對于任意的輸入接口IIn和輸出接口Iout,若(param(Iout)=param(IIn))∧(DoutDIn),則稱從接口輸出Iout到輸入接口IIn是輸入匹配的,記為IoutΔIIn。

定義5 接口匹配。對于任意的接口I1=〈IIn1,Iout1,DIn1,Dout1〉,I2=〈IIn2,Iout2,DIn2,Dout2〉,若存在Iout1ΔIIn2或Iout2ΔIIn1,則稱I1與I2或I2與I1是接口匹配的,記為I1→I2或I2→I1。

滿足接口匹配原則的接口之間是可以進行組裝和連接的,接口匹配是構件匹配的基礎。

定義6 構件可連接性。對于構件C1=〈IC1,FC1,SC1〉,C2=〈IC2,FC2,SC2〉,若存在一組接口Ii∈IC1,Ij∈IC2,滿足Ii→Ij,則稱構件C1與C2可連接,C1與C2之間具有可連接性,記為C1→C2。

在基于構件的軟件開發過程中,可以根據以上的構件模型描述和構件連接原則來判斷構件之間的可組裝性,形成基本的軟件體系結構。

3 構件接口矩陣與分析

3.1 構件關系分析

通過上文中提出的構件模型描述以及相關連接原則,可以初步得到軟件系統的連接模型,利用有向圖的相關理論,將軟件模型中的每個構件看做有向圖的一個節點,構件的連接看做有向邊,得到相應的有向圖,即構件關系圖。構件關系圖表示了軟件體系結構中各個構件之間的連接關系。一個構件關系圖可以表示為G=(C,E)。其中:C表示關系圖中各個構件節點,簡稱為節點;E為圖中有向弧的集合。

定義7 構件鄰接性。對于構件Ci∈C、Cj∈C,若e∈E且e=(Ci,Cj),則表示構件Ci與Cj相連。其中Ci的輸出接口與Cj的輸入接口相連,Ci為輸出構件,Cj為輸入構件。同時稱構件Ci與Cj鄰接,表示為CiCj。為了方便區別鄰接構件中的輸入/輸出關系,將從Ci到Cj稱為正向鄰接,從Cj到Ci稱為逆向鄰接。

構件的鄰接性表示構件關系圖中構件之間的直接關系,當某一構件發生變化時,最可能受影響的是與該構件之間具有鄰接關系的構件。

通過構件模型的描述(定義1)可以知道,一個構件包含多個構件接口,不同的接口對應了不同的功能,構件之間是通過接口進行連接的。構件關系圖緊緊反映了構件之間的關系,因此要準確地對構件進行檢測就必須確定構件接口的關系。

定義8 接口鄰接性。在構件關系圖中,構件Ci∈C,Cj∈C,Ci=〈ICi,FCi,SCi〉,Cj=〈ICj,FCj,SCj〉,若CiCj且接口Im∈ICi,In∈ICj是構件間的連接的接口,則稱接口Im與In是鄰接接口,表示為ImIn,稱Ci與Cj時關于接口(Im,In)鄰接的;將從Im到In稱為正向鄰接,從In到Im稱為逆向鄰接。

定義9 接口連通性。在構件關系圖中,構件Ci∈C,Cj∈C,Ci=〈ICi,FCi,SCi〉,Cj=〈ICj,FCj,SCj〉,如果:

a)在構件關系圖中至少存在一條路徑使得從Ci到Cj是可達的,即Ci…Cj;

b)Im∈ICi,In∈ICj分別為Ci,Cj的連接接口,即Im…In;

則稱Im與In是接口連通的,記為Im~In,Im與In正向連通,In與Im逆向連通。

結論1 在軟件體系結構S中,當構件Ci=〈ICi,FCi,SCi〉的接口Im發生變化時,在S中任意的構件Cj=〈ICj,FCj,SCj〉滿足: In∈ICj, ImIn或InIm, Im~In或In~Im時,構件Cj將受到構件Ci的影響。

3.2 構件接口矩陣

為了便于討論,本文只考慮理想狀態下的構件關系圖,即簡單有向無環圖。

本文在3.1節中闡述了構件關系圖以及關系圖中構件之間的關系和接口之間的關系。根據有向圖理論每個有向圖都與一個鄰接矩陣相對應。在構件關系圖中,關系圖的鄰接矩陣反映的是構件之間的關系,為了準確地反映構件接口的關系,本文將根據接口關系和鄰接矩陣得出構件的接口矩陣。

根據簡單有向圖理論可知構件關系圖的鄰接矩陣可表示為A=(aij)。其中:

aij=1;從Ci到Cj是正向鄰接關系0;從Ci到Cj不是正向鄰接關系

圖1表示了一個構件關系圖,G=(C,E)。

圖1的鄰接矩陣為

A=010000001100

000011000001

000000000000

本文的目的是要通過細化軟件體系結構中構件之間的關系,通過接口來確定構件之間的相互影響。根據上文敘述的接口之間的關系,可以將構件關系圖中的鄰接矩陣轉換為相應的接口矩陣。

定義9 接口矩陣。設構件關系圖為G=(C,E),C={C1,C2,…,Cn}(n∈N),B=(bij)為G的接口矩陣。其中:

bij=(Is,It); Is∈Icj,從Is到It是正向鄰接關系

(0,0);構件Ci到Cj不是鄰接關系

接口矩陣反映了構件中接口之間的鄰接關系。由構件關系圖的鄰接矩陣和接口矩陣的定義可以看出,鄰接矩陣與接口矩陣是可以相互轉換的,鄰接矩陣中aij=0的位置對應了接口矩陣中bij=(0 0);aij=1反映了接口矩陣中相應的位置存在接口鄰接關系。

以圖1為例,假設圖1中鄰接構件之間的接關系如下:

C1_I1C2_I1;

C2_I1C3_I1;

C2_I2C4_I1;

C3_I1C5_I1;

C3_I2C6_I1;

C4_I1C6_I2

有上述關系可以得到圖1的接口矩陣為

B=

(0 0)(I1 I1)(0 0)(0 0)(0 0)(0 0)

(0 0)(0 0)(I1I1)(I2I1)(0 0)(0 0)

(0 0)(0 0)(0 0)(0 0)(I1I1)(I2I1)(I2I1)

(0 0)(0 0)(0 0)(0 0)(0 0)(I1I2)

(0 0)(0 0)(0 0)(0 0)(0 0)(0 0)

(0 0)(0 0)(0 0)(0 0)(0 0)(0 0)

4 構件變化檢測機制與工具實現

在CBSE中,構件的變化是構件內部功能方法的變化。對于構件C=〈I,F,S〉,F(i)對應了一個特定的Ii(Ii∈I),構件的變化是F(i)的變化,因此,構件的變化可以映射到相應的接口上。本文根據上述關系,在構件發生變化時,通過構件關系圖以及構件接口矩陣來檢測構件變化的影響范圍,判斷構件變化的相容性。

4.1 構件變化檢測機制

本文在3.2節中定義了構件關系圖和構件接口矩陣。由構件接口矩陣的定義可以知道,在接口矩陣中aij反映了從構件i到構件j的正向接口鄰接的關系,同時也反映了從構件j到構件i的逆向接口鄰接的關系。因此對于構件接口矩陣有以下性質:a)接口矩陣的第i行的所有向量表示了構件Ci的各個接口與其他構件接口之間的正向鄰接關系;b)接口矩陣的第j列的所有向量表示了構件Cj的各個接口與其他構件接口之間的逆向鄰接關系。

根據構件接口矩陣的性質以及構件內部特性,當軟件體系結構中構件發生變化時,可以通過對構件接口矩陣的遍歷來檢測構件變化對整個體系結構產生的影響,具體檢測方法將在下文中具體介紹。

設構件關系圖G=(C,E),C={C1,C2,…,Cn}(n∈N),構件Ci=〈ICi,FCi,SCi〉∈C,當構件Ci發生變化且對應的變化接口為Ip∈ICi時,則構件變化的檢測方法如下:

a)由構件關系圖的鄰接矩陣和構件接口匹配關系得出構件接口矩陣,B=(bij);

b)在構件接口矩陣中,檢索第i行的向量bij=(Is,It)(j=1,2,…,n),找出Is=Ip的向量,即查找接口Ck_It,從Ck_It到Ip呈逆向鄰接關系,記接口集合為A-={Ck_It};

c)檢索第i列的向量bji=(Is,It)(j=1,2,…,n),找出It=Ip的向量,即查找接口Ck_Is,從Ck_Is到Ip呈正向鄰接關系,記為集合A-={Ck_Is};

d)重復b),找出與集合A-={Ck_It}中各個元素呈逆向鄰接關系的構件接口,放入A-={Ck_It}中;

e)重復c),找出與集合A+={Ck_Is}中各個元素呈正向鄰接關系的構件接口,放入A+={Ck_Is}中。

根據構件接口矩陣的性質,在檢索后的集合中,Ip與A-中的元素Ck_It為正向連通關系,Ip與集合A+中元素Ck_Is呈逆向連通關系(圖2),集合C*=A+∪Ci∪A-是構件Ci的接口Ip變化后影響的范圍。

在上述檢測方法中,構件集合C*是原系統構件的子集,即C*C。因此,可以得到G*=(C*,E*)是圖G=(C,E)的子圖,由G*中構件構成的系統是原系統的一個子系統。所以當構件發生變化后,判斷系統的正確性以及構件變化帶來的影響等價于判斷由C*構成的子系統的正確性,這就避免了以往構件變化后需要對整個系統或者系統中一個較大范圍進行檢測的情況。

4.2 構件變化檢測工具CIDT的實現

在上述理論的基礎上,本文開發了相應構件變化檢測工具CIDT,并將CIDT在安徽省科技計劃網上申報評審系統的開發中進行了應用。CIDT主要由三個功能部分組成,即構件匹配判斷模塊(CIM)、構件接口關系生成模塊(CIR)和構件變化追蹤模塊(CID)。CIDT結構如圖3所示。

CIDT主要有以下功能:a)根據輸入的構件來判斷構件間的匹配關系;b)根據已有的匹配關系產生軟件體系結構中構件關系模型,并產生相應的構件接口矩陣;c)構件發生變化時,對變化進行追蹤,檢測變化的影響范圍,產生受影響的構件列表。在CIDT中為了方便建模引入了UML模型,并利用Rational ROSE工具對軟件體系結構進行UML建模。

5 結束語

本文通過對構件的形式描述,引入構件接口矩陣來表示軟件體系結構中構件之間的接口關系。當構件發生變化時,本文利用接口矩陣提出了一種新的構件變化檢測方法。該方法在已有方法的基礎上更精確地確定了構件變化的影響范圍,為解決CBSE中構件變化帶來的軟件一致性問題和軟件測試提供了參考。

參考文獻:

[1]胡海洋,呂建,馬曉星,等.面向對象范型體系結構中構件行為相容性研究[J].軟件學報,2006,17(6):1276-1286.

[2]XIE Xiong, ZHANG Wei-shi. A checking mechanism ofsoftware component adaptation[C]//Proc of the 5th International Conference on Grid and Cooperative Computing(GCC 2006). Washington DC: IEEE Computer Society, 2006: 347-354.

[3]FENG Tie, MALETIC J I. Applying dynamic change impact analysis in component-based architecture design[C]//Proc of the 7th ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing. Washington DC: IEEE Computer Society, 2006: 43-48.

[4]BRANDON M, PERRY A. Spartacas: automating component reuse and adaptation[J]. IEEE Trans on Software Engineering, 2004,30(9):587-600.

[5]楚旺,錢德沛.以體系結構為中心的構件模型的形式化語義[J].軟件學報,2006,17(6):1287-1297.

[6]孫瑩,陳松喬.接口連接式構件組裝的一種形式化方法[J].計算機科學,2007,33(7):253-256.

[7]柯堯,趙保華,屈玉貴.基于組件系統的可靠性分析[J].北京郵電大學學報,2005,28(6):115-119.

[8]CRAIG D C, ZUBEREK W M. Verification of component behavioral compatibility[C]//Proc of the 2nd International Conference on Dependability of Computer Systems. Washington DC: IEEE Computer Society, 2007: 347-354.

主站蜘蛛池模板: av一区二区三区在线观看| 国产成人精彩在线视频50| 国产成人精品免费视频大全五级| 免费国产黄线在线观看| 日韩美女福利视频| 中文字幕欧美日韩高清| 日本午夜三级| 在线观看无码a∨| 欧美国产中文| 亚洲一欧洲中文字幕在线| 国产jizz| 国产在线小视频| 人人91人人澡人人妻人人爽| 综合色亚洲| 久久黄色一级视频| 成人中文字幕在线| 国产欧美高清| 中文天堂在线视频| 一级做a爰片久久免费| 第九色区aⅴ天堂久久香| 色婷婷久久| 曰韩人妻一区二区三区| www亚洲精品| 老色鬼欧美精品| 国产微拍一区二区三区四区| 欧美日韩v| 日韩精品一区二区三区swag| 92午夜福利影院一区二区三区| 国产欧美精品一区二区| 亚洲妓女综合网995久久| 日韩精品亚洲一区中文字幕| 伊人五月丁香综合AⅤ| 小13箩利洗澡无码视频免费网站| 国产欧美视频综合二区| 视频一区亚洲| 久久久噜噜噜久久中文字幕色伊伊| 精品国产成人a在线观看| 青青青草国产| 在线色综合| 国产欧美视频在线| 国产成人综合久久| 小说 亚洲 无码 精品| 国产成人无码AV在线播放动漫 | 成人福利在线视频| 波多野结衣的av一区二区三区| 国产在线八区| 国产麻豆福利av在线播放 | 欧美爱爱网| 老司机aⅴ在线精品导航| 午夜限制老子影院888| 尤物特级无码毛片免费| 人妻精品久久无码区| 国产黄在线免费观看| 高清亚洲欧美在线看| 久久亚洲国产一区二区| 精品欧美视频| 欧美日韩精品一区二区在线线| 亚洲综合网在线观看| 久久综合丝袜日本网| 日本手机在线视频| 国产精品一区二区不卡的视频| 久久亚洲天堂| 极品私人尤物在线精品首页 | 欧美一区二区自偷自拍视频| 国产一级二级三级毛片| 国产午夜福利片在线观看| 国产免费看久久久| 欧美日韩成人在线观看| 狠狠做深爱婷婷久久一区| 日韩久草视频| 91综合色区亚洲熟妇p| 色综合狠狠操| 91香蕉视频下载网站| 香蕉在线视频网站| 麻豆国产在线观看一区二区 | 久久精品嫩草研究院| 美女潮喷出白浆在线观看视频| 美女毛片在线| 日韩视频福利| 免费在线国产一区二区三区精品| 亚洲av无码成人专区| 日韩黄色大片免费看|