• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種圖編輯距離的軟件體系結構變化性度量方法及應用研究

    2018-03-27 03:30:35鐘林輝
    小型微型計算機系統(tǒng) 2018年3期
    關鍵詞:代價度量構件

    鐘林輝,夏 鯨,彭 云,謝 冰

    1(江西師范大學 計算機信息工程學院,南昌 330022) 2(北京大學 軟件工程研究所,北京 100008)

    1 引 言

    軟件體系結構作為一類重要的軟件制品,其變化會對軟件的開發(fā)和維護產生較大的影響[1].通過比較不同版本軟件體系結構的差異性,不僅可以判斷軟件體系結構變化是否與軟件需求一致,而且可以度量、分析和預測軟件演化的趨勢.然而,目前已有的軟件體系結構變化性度量方法(例如MoJoFM[2]和a2a[3])只考慮經過劃分得到的“簇”中軟件實體的變化,未考慮“簇”之間關系的變化;而有的方法(例如基于圖核(Graph Kernel)理論的方法[4],基于圖編輯或者樹編輯距離的軟件差異性比較方法[5,6])雖然考慮了軟件實體之間的結構特征,但實際上針對的是面向對象模型或軟件體系結構的實現(xiàn),而非軟件體系結構的設計.

    因此,為了克服目前軟件體系結構變化性度量方法的不足,本文在軟件體系結構設計層次,既考慮構件本身的變化,也考慮軟件體系結構在結構上的變化,提出了以軟件體系結構為中心的軟件演化分析框架,以及針對軟件體系結構規(guī)約、基于圖編輯距離的變化性度量方法,并基于上述方法對若干開源軟件體系結構的演化歷史進行了度量分析.本文組織安排如下:首先是相關研究的介紹,隨后是以軟件體系結構為中心的構件化軟件演化分析框架,在第4及第5節(jié)分別介紹了軟件體系結構變化性度量具體方案,以及在開源軟件體系結構演化分析上的應用;第6節(jié)是工具支持,最后是結束語.

    2 相關研究

    本文相關研究涉及到跨版本的軟件變化性研究,主要包括變化性建模以及變化性度量.

    2.1 變化性建模

    變化性建模是采用靜態(tài)或者動態(tài)的方法將不同軟件版本的差異性用邏輯、規(guī)則和契約等形式加以描述.

    ①采用靜態(tài)方法:文獻[7]提出了用謂詞邏輯和本體表示程序不同版本抽象語法樹的變化.文獻[8]采用符號執(zhí)行和代碼總結的策略,能自動生成程序的差異性描述文檔.文獻[9]提出了用變化規(guī)則表示不同版本之間結構變化的策略.

    ②采用動態(tài)方法:文獻[10]提出了變化契約的概念以及推理框架,通過捕獲程序在運行時刻方法調用時進入、退出和異常等情況下的數(shù)據,進而歸納出變化契約.另外,國內研究者對軟件的變化也進行了研究,比較典型的是文獻[29]中提出了一種結合關鍵字檢索和啟發(fā)式規(guī)則,實現(xiàn)多層次演化信息之間追蹤關系逆向的方法;以及文獻[11]通過對代碼變化進行分組和聚類以發(fā)現(xiàn)變化的軌跡模式.

    2.2 變化性度量

    本文的變化性度量包括面向對象的程序或模型的變化性度量和軟件體系結構的變化性度量:

    ①面向對象的程序或模型的變化性度量:例如,JDiff工具將程序抽象為擴展的控制流圖,通過提出的差異性算法比較不同版本在方法上的差異性[6],UMLDiff工具通過計算不同UML圖之間的編輯距離代價判斷面向對象模型的差異性[5].文獻[12]通過計算不同軟件版本所包含的類在大小、內聚和耦合等屬性上數(shù)值大小變化,判斷面向對象軟件的演化穩(wěn)定性.不同于計算語法樹或者模型之間的變換來度量變化,在文獻[13,14]中提出的語義差異性操作能識別不同類圖、活動圖等在語義上的差別.在文獻[15-17]中則利用Kolmogorov復雜性的信息度量概念,計算不同軟件版本的差異性.文獻[30]提出采用層次分析法,試圖構建功能模塊、語法和文本等變化同演化率之間的函數(shù)關系.文獻[18]通過度量面向對象程序在包、結構簇、語義簇三個視圖上的差異性,判斷軟件設計質量是否存在偏差.文獻[4]將面向對象風格的軟件體系結構表示為標簽圖,基于隨機行走算法獲得的路徑作為軟件體系結構的特征向量并利用圖核理論度量軟件的差異性.

    ②軟件體系結構的變化性度量:例如文獻[19]基于軟件體系結構視圖復雜性度量和耦合性度量,分析了軟件變化對軟件體系結構的影響.文獻[31]為了研究構件變化所引發(fā)的波動效應,提出了利用構件組合運算度量軟件體系結構可演化性的方法.MoJoFM[2]將軟件劃分為若干簇,通過計算簇內節(jié)點的移動和簇的合并操作判斷兩個不同劃分的變化程度.文獻[20]將軟件體系結構演化過程分解為若干原子操作,通過計算原子操作在多個視圖上的質量屬性的變化達到分析軟件演化趨勢的目的.文獻[21]提出了體系結構債務(architectural debts)的概念,用以定量分析體系結構層次的文件變化同軟件維護代價之間的關系.文獻[22]則研究了跨體系結構模塊和體系結構模塊內部的協(xié)同變化,對軟件質量的不同影響.有的研究采用多種視圖相結合的方法研究軟件體系結構的變化性度量,例如文獻[3,23]提出了一種多層次軟件體系結構度量方案,其中度量公式cvg反應軟件體系結構在構件實現(xiàn)層次的變化,度量公式a2a反應軟件體系結構在系統(tǒng)層次的變化.但是,這些方法建立在MoJoFM度量的基礎上,沒有考慮到節(jié)點之間關系,而僅僅考慮簇的換名和增加,節(jié)點的換名、增加和移動等5個操作,導致計算結果不夠準確.

    3 以軟件體系結構為中心的軟件演化分析框架

    為了有效地支持構件化軟件的開發(fā)和演化,在我們的早期研究中提出了擴充構件描述語言(xCDL)支持基于構件的系統(tǒng)組裝與演化的策略[32],不僅可以有效的支持基于構件的系統(tǒng)構造定義,而且可以支持系統(tǒng)的演化以及系統(tǒng)的部署.其中的關鍵技術包括擴充了CDL以支持對構件及軟件體系結構本身的演化的表示和跟蹤,通過基于構件的軟件配置管理模型CBSCM[33],實現(xiàn)對構件化軟件演化數(shù)據的存儲.基于上述思想和關鍵技術,本文進一步提出了以軟件體系結構為中心的構件化軟件演化分析框架,如圖1所示.

    圖1 以SA為中心的軟件演化分析框架Fig.1 Framework of architecture-centric software evolution analysis

    整個框架分為3個部分,包括以軟件體系結構為中心的正向工程、以軟件體系結構為中心的逆向工程、以及軟件演化分析過程.其中,以軟件體系結構為中心的正向工程所產生的軟件制品例如每個版本的軟件體系結構描述、軟件體系結構的實現(xiàn)等均存儲在基于構件的軟件配置管理系統(tǒng)中;而以軟件體系結構為中心的逆向工程通過現(xiàn)有的逆向工程工具,對遺留系統(tǒng)的演化歷史進行軟件體系結構層次的重建,構造出帶版本信息的軟件體系結構描述,并將其存儲在基于構件的軟件配置管理系統(tǒng)中.軟件演化分析則通過提取基于構件的軟件配置管理系統(tǒng)中存儲的帶版本信息的軟件體系結構描述,度量相鄰版本之間的變化性,并實現(xiàn)對不同軟件系統(tǒng)的演化變化性進行度量.

    4 軟件體系結構變化性度量

    4.1 軟件體系結構的屬性圖

    軟件體系結構可以用多種方法加以描述,例如軟件體系結構描述語言或者圖.為了實現(xiàn)基于圖的軟件體系結構變化性的度量,本文通過對軟件體系結構描述語言進行解析,構造出其對應的屬性圖,屬性圖中刻畫了軟件體系結構元素之間的關系,相關定義如下:

    定義1.軟件體系結構屬性圖:G=是一個4元組,其中,V表示節(jié)點集合,E表示邊集合,LV表示節(jié)點的標簽映射函數(shù),LE表示邊的標簽映射函數(shù).在軟件體系結構的語境下,節(jié)點集合、邊的集合、節(jié)點的標簽函數(shù)及邊的標簽函數(shù)定義如下.

    定義2.節(jié)點集合V:表示軟件體系結構中的構件(包括復合構件與原子構件)、構件實例、每個構件對外提供的方法及實例、對外所需的方法及實例,以及版本信息例如版本號;其中,方法的實例是為了區(qū)分具有相同類型的不同構件實例中的方法,例如圖2(b)中的節(jié)點S2是方法Semantize的實例.

    定義3.邊的集合E:表示節(jié)點之間的關系,根據構件、方法、版本之間的關系,可以區(qū)分為以下幾種關系:方法之間的連接關系、方法之間的映射關系、復合構件和原子構件之間的組成關系,構件與版本之間的版本關系,以及構件與其實例之間的實例關系,構件和方法之間的對外所需的功能和對外提供的功能.

    定義4.節(jié)點的標簽函數(shù)LV:LV定義為LV:V→String,即節(jié)點到字符串的映射.字符串可以表示構件名稱、方法名稱、版本號等.

    定義5.邊的標簽函數(shù)LE:將上述邊的類型通過函數(shù)映射到具體的字符串,即:LE:E→{"connectTo","mapTo","composeOf","versionOf","instanceOf","requires","provides"}其中connectTo表示構件實例之間方法的連接關系,mapTo表示復合構件與成員構件之間方法的映射關系,composeOf表示復合構件與成員構件的包含關系,versionOf表示構件與版本的版本關系,instanceOf表示構件與構件實例的實例關系,requires和provides表示構件與方法需要和提供的關系.

    例如,考慮一個編譯系統(tǒng)的概念結構如圖2(a)所示,相應的用xCDL描述的軟件體系結構如下:

    component Parser < Version = 1.0 > is

    provides:

    function Initialize();

    function FileName() return String;

    requires:

    function Semantize(Tree);

    function Generate(Tree);

    end Parser;

    component Semanticizer < Version = 1.2 > is

    provides:

    function Semantize(Tree);

    function Incremental_Semantize(Context:Tree;

    Addition:Tree);

    requires:

    function FileName() return String;

    end Semanticizer;

    component Code_Generator < Version = 1.2 > is

    provides:

    function Generate(Tree);

    requires:

    function Initialize_Parser();

    function Semantize(Context:Tree;Addition:Tree);

    end Code_Generator;

    component Complier < Version=2.1>

    PreLink:Complier < Version=1.8 >

    Reference:

    Parser,Semanticizer,Code_Generator;

    Instance:

    P:Parser < Version = 1.0 >;

    S:Semanticizer < Version = 1.2 >;

    G:Code_Generator < Version = 1.2 >

    Connection:

    P.Semantize to S.Semantize;

    P.Generate to G.Generate;

    S.FileName to P.FileName;

    G.Initialize_Parser to P.Initialize;

    G.Semantize to S.Incremental_Semantize;

    End Complier

    其經過解析后得到的軟件體系結構屬性圖,如圖2(b)所示.

    圖2 例子:編譯系統(tǒng)概念圖及其體系結構的屬性圖表示Fig.2 An example:compiler and its attribute-graph presentation

    4.2 基于圖編輯距離的變化性度量

    基于上述軟件體系結構屬性圖,本文采用圖編輯距離的方法度量軟件體系結構的變化性.圖的編輯距離指的是使用節(jié)點的替換、增加和剔除操作,以及邊的替換、增加和剔除操作,將圖g1轉換為圖g2所需要的最小代價[24,25].存在多種計算圖編輯距離的算法,其中二分圖的編輯距離算法將圖的編輯距離看作是二次分配問題,能有效計算圖的編輯距離[26].

    為了使用二分圖編輯距離算法,需要定義節(jié)點和邊關于插入、刪除及替換操作的編輯代價,同時需要滿足圖編輯距離的三角不等式關系.在本文軟件體系結構屬性圖中,節(jié)點的標簽對應的是軟件體系結構描述語言中元素的標識符,例如構件的名稱、接口的名稱、版本號(以字符串形式表示,例如"2.31")等;邊的標簽對應的是枚舉類型.因此,節(jié)點之間和邊之間的編輯代價定義如下:

    定義6.節(jié)點之間的編輯代價Cij:Cij區(qū)分為替換代價、刪除代價以及插入代價3種.即c(Vi→Vj)=stringEditDistance(LV(Vi),LV(Vj));c(Vi→ε)=c(ε→Vi)=strlen(Vi),其中,LV(Vi),LV(Vj)分別表示節(jié)點Vi和Vj的標簽,即節(jié)點的替換操作代價c(Vi→Vj)為字符串LV(Vi)和LV(Vj)之間的編輯距離.插入操作代價c(ε→Vi)和刪除編輯代價c(Vi→ε)為字符串LV(Vi)的長度.一般,取c(Vi→Vj) =min{(c(Vi→ε) +c(ε→Vj),c(Vi→Vj)}可以滿足圖編輯距離所需的三角不等式關系.顯然,在以字符串的編輯距離作為編輯代價的前提下,可以證明c(Vi→Vj) =min{c(Vi→ε))+c(ε→Vj),c(Vi→Vj)}=c(Vj→Vi).

    定義7.邊之間的編輯代價:c(Ei→Ej) =if(LE(Ei)=LE(Ej)):0:1;c(Ei→ε)=c(ε→Ei)=1,即若Ei的標簽LE(Ei)與Ej的標簽LE(Ej)相同,則替換代價為0,否則為1.邊的插入和刪除操作代價定義為1.顯然邊的編輯代價亦滿足三角不等式關系.

    (1)

    圖3 兩個版本的編譯器體系結構(用屬性圖表示)Fig.3 Two compiler versions represented by attribute-graph

    k1≤|V(gi-1)|,0

    (2)

    例如,考慮如下編譯系統(tǒng)的演化歷史如圖3所示.

    節(jié)點和邊的編輯代價矩陣分別如下:

    考慮邊的關系,則新的代價矩陣如下,計算可得編輯路徑為:p(1,2,3,7,8,9)={(Complier→Complier),(C1→C2),(1.0→1.2),(ε→2.1) ,(ε→Parser),(ε→P2) },對應的編輯代價為C*(p(1,2,3,7,8,9))=0+2+1+4+7+5=19.

    此時,因此該編譯器變化性度量值為編輯代價19.

    5 應用:開源軟件體系結構演化分析

    5.1 演化度量

    為了對開源軟件體系結構進行演化分析,本文在軟件體系結構變化性度量EP(S,i)的基礎上定義了2個度量指標LEP和EEP,其中:

    ①LEP衡量軟件系統(tǒng)的近期變化,反映的是系統(tǒng)總的變化.該度量從系統(tǒng)全局的角度來分析,重點關注最新版本的變化,對每個版本的EP增加權重函數(shù)2i-maxRank(其中maxRank為參與度量最新版本對應的序列號),統(tǒng)計系統(tǒng)從初始版本生成最新版本所有的版本屬性變化的加權總和,即系統(tǒng)S從第i個版本到第j個版本的EP加權求和,定義如公式(3):

    (3)

    ②EEP主要衡量軟件系統(tǒng)的早期變化,同樣反映的是系統(tǒng)總的變化.該度量從系統(tǒng)全局的角度分析,重點關注較早版本的變化,對每個版本的EP增加權重函數(shù)2minRank-i(其中minRank為參與度量早期版本對應的序列號),統(tǒng)計系統(tǒng)從初始版本到最新版本所有的版本屬性變化的加權總和,即系統(tǒng)S從第i個版本到第j個版本的EP的加權求和,定義如公式(4):

    (4)

    實驗過程下載了4個開源軟件系統(tǒng)的源代碼以及第三方提供的實驗數(shù)據[3]作為本文的實驗基礎,這四個系統(tǒng)分別為cassandra,hbase,hive,openjpa,其中cassandra和hive這兩個系統(tǒng)各使用了8個版本,hbase和openjpa這兩個系統(tǒng)各使用了12個版本,其中版本標簽是github中設定的版本號,編制的版本號是按照提取的開源系統(tǒng)版本重新按序編排(從1開始).實驗中首先計算系統(tǒng)每個版本的EP值,系統(tǒng)的總LEP值/EEP值;同時,為了度量每個系統(tǒng)內部的變化過程,分別計算每個系統(tǒng)的前i個版本的LEP值/EEP值,即LEP(1,i)和EEP(1,i).具體計算結果見表1-表4.

    5.2 系統(tǒng)間演化度量分析

    表1 cassandra變化數(shù)據Table 1 cassandra′s change data

    表2 hbase變化數(shù)據Table 2 hbase′s change data

    表3 hive變化數(shù)據Table 3 hive′s change data

    表4 openjpa變化數(shù)據Table 4 openjpa′s change data

    根據表1到表4中的EP值分別畫出了各個系統(tǒng)演化的EP值的折線圖(如圖4),根據總LEP/EEP值畫出了各個系統(tǒng)整體LEP/EEP值柱狀圖(如圖5).

    圖4 四個開源系統(tǒng)的EP比較Fig.4 Comparison of EP among four open source systems

    通過對圖4和圖5的分析,即對4個軟件系統(tǒng)之間的變化進行分析,可以得出以下結論:

    圖4中每條折線的第一個點值的大小反應了該軟件系統(tǒng)初始版本的體系結構的大小,從圖4可以看出,casscandra,hbase,hive這三個系統(tǒng)的初始版本的體系結構相對來說比較小,其體系結構演化EP值都在10000以內,而openjpa的初始版本的體系結構相對來說要大得多,其體系結構演化EP值超過了35000.此外,cassandra中EP值大于第一個版本的EP值的一半的版本有2個,占版本總個數(shù)的25%;對應于hbase中有8個,占總個數(shù)的75%;hive中有3個,占總個數(shù)的37.5%;openjpa中有0個,占總個數(shù)的0%.從這個數(shù)據可以看出,這四個系統(tǒng)中,hbase變化最大,openjpa變化最小,cassandra和hive變化程度比較接近.

    按照LEP和 EEP的定義,值越大表示軟件變化越大.從圖5中可以看出,hbase的LEP值最大,表示該系統(tǒng)的近期變化在這四個系統(tǒng)中是最大的;openjpa系統(tǒng)的LEP值最小,EEP值最大,表示該系統(tǒng)的近期變化在這四個系統(tǒng)中是最小的,早期變化是最大的.別外,cassandra和hive這兩個系統(tǒng)的LEP值和EEP值都比較接近,說明這兩個系統(tǒng)的近期和早期變化程度較為接近.

    圖5 四個開源系統(tǒng)的LEP/EEP比較Fig.5 Comparison of LEP/EEP among four open source systems

    根據表1到表4中的每個系統(tǒng)的EP值畫出對應的EP值折線和趨勢線圖(見圖6).

    按照LEP和 EEP的定義,值越大表示軟件變化越大.從圖5中可以看出,hbase的LEP值最大,表示該系統(tǒng)的近期變化在這四個系統(tǒng)中是最大的;openjpa系統(tǒng)的LEP值最小,EEP值最大,表示該系統(tǒng)的近期變化在這四個系統(tǒng)中是最小的,早期變化是最大的.別外,cassandra和hive這兩個系統(tǒng)的LEP值和EEP值都比較接近,說明這兩個系統(tǒng)的近期和早期變化程度較為接近.

    根據表1到表4中的每個系統(tǒng)的EP值畫出對應的EP值折線和趨勢線圖(見圖6).

    圖6 四個開源軟件的EP折線及趨勢線圖Fig 6 Line and trend chart of four open source system′s EP

    對比分析這四個系統(tǒng)的EP值折線和趨勢線,可以得出以下結論:cassandra,hive,openjpa這三個系統(tǒng)的趨勢線呈下降的趨勢,這說明這三個系統(tǒng)在演化過程中的變化越來越小,從趨勢線下降的程度分析,這三個系統(tǒng)的趨勢線下降的程度依次變大,這說明openjpa的變化最為穩(wěn)定;而hbase這個系統(tǒng)的演化趨勢線呈上升的趨勢,說明該系統(tǒng)在演化的過程中變化程度越來越大.

    小結:通過從EP、LEP及EEP三個方面對以上四個系統(tǒng)之間的演化分析可知,這四個系統(tǒng)中,hbase不僅變化程度是最大的,而且變化在持續(xù)增大;openjpa變化程度是最小的,且是穩(wěn)定變化;cassandra和hive這兩個系統(tǒng)相對于hbase和openjpa,變化程度較為不穩(wěn)定.

    5.3 系統(tǒng)內部演化度量分析

    根據表1到表4中的前i個版本的LEP值/EEP值,畫出系統(tǒng)各自對應的LEP/EEP折線圖(見圖7).

    圖7 四個開源軟件前i個版本LEP/EEP折線圖Fig.7 Line chart of the first i versions of four open source system′s LEP/EEP

    通過對前i個版本的軟件系統(tǒng)LEP/EEP值的計算,可以分析版本增加對系統(tǒng)早期和近期變化程度的影響.LEP值變大說明近期版本的變化較大,反之;EEP變大說明該系統(tǒng)早期版本變化較大,反之.通過對圖7的分析,可以得出以下結論:

    從圖7(a)可知,cassandra系統(tǒng)的LEP值呈上下波動趨勢,說明該系統(tǒng)的演化處于不穩(wěn)定趨勢,但是LEP(1,4)值和LEP(1,6)的值突然增大,說明系統(tǒng)第4個版本和第6個版本變化較大.cassandra的EEP(1,1)到EEP(1,6)明顯變大,隨后變化不明顯,說明該系統(tǒng)演化到第6個版本的時候早期變化較大,此后早期變化比較穩(wěn)定.

    從圖7(b)可知,hbase系統(tǒng)的LEP值呈增長趨勢,說明該系統(tǒng)的變化處于增長的趨勢,但是LEP(1,3),LEP(1,6),LEP(1,8),LEP(1,9)和LEP(1,11)的值突然增大,說明這個系統(tǒng)的第3、6、8、9、11個版本變化較大;hbase的EEP(1,1)到EEP(1,7)值變化明顯變大,特別是EEP(1,3)突然增大,隨后的EEP值變化不明顯,說明該系統(tǒng)演化到第3個版本的時候早期變化很大,從第4個版本到第7個版本的早期變化較大,此后早期變化比較穩(wěn)定.

    從圖7(c)可知,hive系統(tǒng)的LEP值呈上下波動趨勢,說明該系統(tǒng)的演化處于不穩(wěn)定狀態(tài).但是LEP(1,2),LEP(1,5)和LEP(1,7)突然增大,說明該系統(tǒng)的第2、5、7個版本的變化較大;hive的EEP(1,2)突然增大,隨后EEP(1,3)到EEP(1,5)值明顯變大,然后變化不明顯,說明該系統(tǒng)演化到第2個版本的時候早期變化很大,從第3個版本到第5個版本的演化過程中,早期變化較大,隨后早期變化比較穩(wěn)定.

    從圖7(d)可知,openjpa系統(tǒng)的LEP值呈下降的趨勢,說明該系統(tǒng)的變化逐漸減少,只是第7個版本上出現(xiàn)較大變化.openjpa的EEP(1,1)到EEP(1,3)變化較為明顯,隨后變化不明顯,說明該系統(tǒng)發(fā)展到第3個版本的時候早期變化較為明顯,隨后早期變化比較穩(wěn)定.

    根據對表1到表4中每個系統(tǒng)EP值的分析,可以得出如下結論:cassandra的這8個版本一共經歷了3個變化減小和2個變化增大的過程;hbase的這12個版本一共經歷了5個變化減小和4個變化增大的過程;hive的這8個版本一共經歷了3個變化減小和3個變化增大的過程;openjpa的這12個版本一共經歷了4個變化減小和4個變化增大的過程.

    小結:通過從EP、LEP和EEP對以上四個開源系統(tǒng)進行演化度量可知,這四個系統(tǒng)中,cassandra的演化過程是不穩(wěn)定變化的,在第4和第6個版本時變化大幅度增大;hbase的演化過程是變化持續(xù)增大的,其中在第3和第11個版本時變化大幅度增大;hive的演化過程是不穩(wěn)定變化的,在第2和第7個版本時變化大幅度變大;openjpa的演化過程是穩(wěn)定變化的,除了在第7個版本處有個小幅度的變化增大之外,其他版本的變化程度逐漸變小.

    6 工具支持

    為了支持構件化軟件的演化分析,本文開發(fā)了相應的支持工具,包括軟件體系結構規(guī)約重建、xCDL圖的屬性圖表示、編輯距離的計算、變化性度量等主要功能.其中,

    ①軟件體系結構重建功能主要負責從源代碼恢復用xCDL表示的軟件體系結構.這部分功能主要借助現(xiàn)有的軟件體系結構逆向工具例如ACDC[28]方法,或者借助已有的基于ACDC恢復的數(shù)據.在恢復時不僅是產生簇(構件),而且借助源程序構造體系結構中構件之間連接關系,以及版本信息.

    圖8 系統(tǒng)結構圖Fig.8 System structure

    ②xCDL的屬性圖表示:通過解析xCDL或者在逆向生成xCDL時,構造軟件體系結構的圖結構.

    ③編輯距離的計算:通過分析屬性圖中的節(jié)點和邊關系,構造節(jié)點的編輯代價矩陣和邊的編輯代價矩陣,利用二分圖匹配算法計算圖之間的編輯距離.

    ④變化性度量:給定不同系統(tǒng)在軟件演化過程中的一組軟件體系結構規(guī)約,分別計算其相鄰版本的軟件體系結構編輯距離;并基于度量指標LEP和EEP比較軟件內部或者不同系統(tǒng)之間的變化性.

    7 結束語

    對軟件體系結構變化性進行度量,能夠幫助軟件開發(fā)人員在較高層次理解軟件不同版本之間的差異性和理解系統(tǒng)內部或者系統(tǒng)之間的變化程度.為了克服傳統(tǒng)軟件體系結構變化性度量方法只考慮軟件實體元素變化的不足,本文將軟件體系結構映射為屬性圖,通過度量不同圖之間結構上的差異性,達到實現(xiàn)軟件體系結構差異性比較的目的.同時,基于上述方法,以4個開源軟件作為實驗對象,從軟件版本變化、軟件最新變化和軟件早期變化等角度分別對4個系統(tǒng)內部變化程度,以及系統(tǒng)之間變化的程度進行了分析.實驗效果表明,通過以上方法,可以分析開源軟件在軟件體系結構層次上的變化程度及其穩(wěn)定性.

    [1] Medvidovic N,Taylor R N.Software architecture:foundations,theory,and practice[C].In:Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering,ACM,2010:471-472.

    [2] Wen Z,Tzerpos V.An effectiveness measure for software clustering algorithms[C].In:Proceedings of the 12th IEEE International Workshop on Program Comprehension,IEEE,2004:194-203.

    [3] Le D M,Behnamghader P,Garcia J,et al.An empirical study of architectural change in open-source software systems[C].In:Proceedings of the 12th Working Conference on Mining Software Repositories,IEEE Press,2015:235-245.

    [4] Nakamura T,Basili V R.Metrics of software architecture changes based on structural distance[C].In:The 11th IEEE International Symposium on Software Metrics,IEEE,2005:8-17.

    [5] Xing Z,Stroulia E.UMLDiff:an algorithm for object-oriented design differencing[C].In:Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering,ACM,2005:54-65.

    [6] Apiwattanapong T,Orso A,Harrold M J.JDiff:A differencing technique and tool for object-oriented programs [J].Automated Software Engineering,2007,14(1):3-36.

    [7] Hashimoto M,Mori A,Izumida T.A comprehensive and scalable method for analyzing fine-grained source code change patterns[C].In:The 22nd International Conference on Software Analysis,Evolution and Reengineering (SANER),IEEE,2015:351-360.

    [8] Buse R P L,Weimer W R.Automatically documenting program changes[C].In:Proceedings of the IEEE/ACM International Conference on Automated Software Engineering,ACM,2010:33-42.

    [9] Kim M,Notkin D,Grossman D.Automatic inference of structural changes for matching across program versions[C].In:Proceedings of the 29th International Conference on Software Engineering,2007:333-343.

    [10] Le T D B,Yi J,Lo D,et al.Dynamic inference of change contracts[C].In:The International Conference on Software Maintenance and Evolution (ICSME),IEEE,2014:451-455.

    [11] Jiang Q,Peng X,Wang H,et al.Summarizing evolutionary trajectory by grouping and aggregating relevant code changes[C].In:The 22nd International Conference on Software Analysis,Evolution,and Reengineering (SANER),IEEE,2015:361-370.

    [12] Almousa H,Alenezi M.Measuring software architecture stability evolution in object-oriented open source systems [J].Journal of Engineering and Applied Sciences,2017,12(2):353-362.

    [13] Maoz,Shahar,Jan Oliver Ringert,et al.CDDiff:semantic differencing for class diagrams[C].In:The European Conference on Object-Oriented Programming,Springer Berlin Heidelberg,2011:230-254.

    [14] Maoz S,Ringert J O,Rumpe B.ADDiff:semantic differencing for activity diagrams[C].In:Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering,ACM,2011:179-189.

    [15] Arbuckle T.Studying software evolution using artefacts′shared information content [J].Science of Computer Programming,2011,76(12):1078-1097.

    [16] Hayase Y,Kanda T,Ishio T.Estimating product evolution graph using Kolmogorov complexity[C].In:Proceedings of the 14th International Workshop on Principles of Software Evolution,ACM,2015:66-72.

    [17] Threm D,Yu L,Ramaswamy S,et al.Using normalized compression distance to measure the evolutionary stability of software systems[C].In:The 26th International Symposium on Software Reliability Engineering (ISSRE),IEEE,2015:112-120.

    [18] Zhu T,Wu Y,Peng X,et al.Monitoring software quality evolution by analyzing deviation trends of modularity views[C].In:The 18th Working Conference on Reverse Engineering,IEEE,2011:229-238.

    [19] Durisic D,Nilsson M,Staron M,et al.Measuring the impact of changes to the complexity and coupling properties of automotive software systems[J].Journal of Systems and Software,2013,86(5):1275-1293.

    [20] Li B,Liao L,Si J.A technique to evaluate software evolution based on architecture metric[C].In:The 14th International Conference on Software Engineering Research,Management and Applications (SERA),IEEE,2016:1-8.

    [21] Xiao L,Cai Y,Kazman R,et al.Identifying and quantifying architectural debt[C].In:Proceedings of the 38th International Conference on Software Engineering,ACM,2016:488-498.

    [22] Kouroshfar E,Mirakhorli M,Bagheri H,et al.A study on the role of software architecture in the evolution and quality of software[C].In:Proceedings of the 12th Working Conference on Mining Software Repositories,IEEE Press,2015:246-257.

    [23] Behnamghader P,Le D M,Garcia J,et al.A large-scale study of architectural evolution in open-source software systems [J].Empirical Software Engineering,2017,22(3):1146-1193.

    [24] Bunke H,Allermann G.Inexact graph matching for structural pattern recognition [J].Pattern Recognition Letters,1983,1(4):245-253.

    [25] Sanfeliu A,F(xiàn)u K S.A distance measure between attributed relational graphs for pattern recognition [J].IEEE Transactions on Systems,Man,and Cybernetics,1983,13(3):353-362.

    [26] Riesen K,Neuhaus M,Bunke H.Bipartite graph matching for computing the edit distance of graphs [J].Graph-Based Representations in Pattern Recognition,2007,(4538):1-12.

    [27] Riesen K,Bunke H.Approximate graph edit distance computation by means of bipartite graph matching [J].Image and Vision Computing,2009,27(7):950-959.

    [28] Tzerpos V,Holt R C.ACDC:an algorithm for comprehension-driven clustering[C].In:The 7th Working Conference on Reverse Engineering,IEEE,2000:258-267.

    [29]Wang Jin-shui,Ai Wei, Peng Xin, et al.Recovering traceability links among multi-level software evolution information[J].Computer Science, 2012,39(7):135-139.

    [30]Li Jun-pu,Wang Jian-xin, Mo Qiao-chu.Software-evolution analysis model based on AHP[J].Computer Engineering and Design,2015,36(9):2416-2421.

    [31]Huang Wan-gen, Chen Song-qiao.Measuring software architecture evolution based on component combination operations[J].Computer Science,2007,34(9):245-261.

    [32]Zhong Lin-hui,Xie Bing,Shao Wei-zhong.Supporting component-based software development by extending the CDL with software configuration information[J].Journal of Computer Research and Development,2002,39(10):1361-1365.

    [33] Zhang Lu,Xie Bing, Mei Hong,et al.Study of component-based software configuration management technologies[J].Acta Electronica Sinica,2001,29(2):266-268.

    附中文參考文獻:

    [29] 王金水,艾 偉,彭 鑫,等.多層次的軟件演化追蹤關系逆向恢復[J].計算機科學,2012,39(7):135-139.

    [30] 李俊普,王建新,莫翹楚.基于AHP的軟件演化分析模型[J].計算機工程與設計,2015,36(9):2416-2421.

    [31] 黃萬艮,陳松喬.基于構件組合運算的SA可演化性度量[J].計算機科學,2007,34(9):245-261.

    [32] 鐘林輝,謝 冰,邵維忠.擴充CDL支持基于構件的系統(tǒng)組裝與演化[J].計算機研究與發(fā)展,2002,39(10):1361-1365.

    [33] 張 路,謝 冰,梅 宏,等.基于構件的軟件配置管理技術研究[J].電子學報,2001,29(2):266-268.

    猜你喜歡
    代價度量構件
    有趣的度量
    模糊度量空間的強嵌入
    迷向表示分為6個不可約直和的旗流形上不變愛因斯坦度量
    愛的代價
    海峽姐妹(2017年12期)2018-01-31 02:12:22
    代價
    建筑構件
    建筑構件
    建筑構件
    建筑構件
    地質異常的奇異性度量與隱伏源致礦異常識別
    亚洲国产看品久久| 黄色丝袜av网址大全| 国内毛片毛片毛片毛片毛片| 国产精品久久久久久精品电影| 999久久久国产精品视频| 婷婷亚洲欧美| 久久久久国产精品人妻aⅴ院| 熟妇人妻久久中文字幕3abv| 中文字幕人妻丝袜一区二区| 老熟妇乱子伦视频在线观看| 99热6这里只有精品| 国产成人啪精品午夜网站| 久久午夜综合久久蜜桃| 国产精品野战在线观看| 精品不卡国产一区二区三区| av天堂在线播放| 天天躁狠狠躁夜夜躁狠狠躁| 女人高潮潮喷娇喘18禁视频| 亚洲电影在线观看av| 成年女人看的毛片在线观看| 不卡一级毛片| 精品电影一区二区在线| 国产主播在线观看一区二区| 午夜影院日韩av| 欧美日韩中文字幕国产精品一区二区三区| 在线免费观看不下载黄p国产 | 老熟妇乱子伦视频在线观看| 1024香蕉在线观看| 十八禁人妻一区二区| 欧美国产日韩亚洲一区| 久久精品91蜜桃| 午夜免费观看网址| 黄片大片在线免费观看| 国内精品久久久久精免费| 夜夜看夜夜爽夜夜摸| 99久久精品热视频| 九九热线精品视视频播放| 99国产精品一区二区蜜桃av| 国产精品久久视频播放| 精品熟女少妇八av免费久了| 夜夜夜夜夜久久久久| 国产精品 欧美亚洲| 99热这里只有是精品50| 亚洲va日本ⅴa欧美va伊人久久| 亚洲精品一卡2卡三卡4卡5卡| 亚洲av成人不卡在线观看播放网| 男人舔奶头视频| 国产三级黄色录像| 精品乱码久久久久久99久播| 亚洲av免费在线观看| 久久香蕉国产精品| 久久精品91无色码中文字幕| 麻豆国产av国片精品| 午夜精品在线福利| 丝袜人妻中文字幕| 日本一本二区三区精品| 99国产精品一区二区蜜桃av| 成人无遮挡网站| 亚洲成a人片在线一区二区| 淫妇啪啪啪对白视频| 国产成+人综合+亚洲专区| 欧美中文综合在线视频| 色av中文字幕| 中文字幕高清在线视频| 啦啦啦韩国在线观看视频| 国产伦人伦偷精品视频| 亚洲精品国产精品久久久不卡| 久久精品综合一区二区三区| 亚洲欧美一区二区三区黑人| 亚洲成av人片免费观看| www.www免费av| 成人av在线播放网站| 免费在线观看亚洲国产| 国产精品永久免费网站| 真实男女啪啪啪动态图| 搞女人的毛片| 免费在线观看影片大全网站| 人人妻,人人澡人人爽秒播| 色吧在线观看| 在线观看美女被高潮喷水网站 | 国产一区二区在线观看日韩 | 美女大奶头视频| 免费无遮挡裸体视频| 麻豆一二三区av精品| 搡老熟女国产l中国老女人| 国产精品久久久久久久电影 | 久久欧美精品欧美久久欧美| 国产av不卡久久| 男人的好看免费观看在线视频| 亚洲成a人片在线一区二区| 高潮久久久久久久久久久不卡| 国产视频内射| 日日夜夜操网爽| 亚洲 欧美 日韩 在线 免费| 久久亚洲精品不卡| 日本a在线网址| 在线免费观看不下载黄p国产 | 精品午夜福利视频在线观看一区| 日韩欧美国产在线观看| 搞女人的毛片| 日韩欧美 国产精品| a级毛片在线看网站| 一个人观看的视频www高清免费观看 | 熟妇人妻久久中文字幕3abv| 久久草成人影院| 亚洲第一电影网av| 日韩欧美国产在线观看| 无限看片的www在线观看| 夜夜看夜夜爽夜夜摸| 国产成人系列免费观看| 十八禁网站免费在线| 精品免费久久久久久久清纯| 午夜精品在线福利| www.熟女人妻精品国产| 亚洲国产精品久久男人天堂| 久久久久免费精品人妻一区二区| 国产精品久久久久久久电影 | 夜夜看夜夜爽夜夜摸| 亚洲国产精品999在线| 亚洲国产欧洲综合997久久,| a级毛片在线看网站| xxxwww97欧美| 男女那种视频在线观看| 91九色精品人成在线观看| 亚洲 国产 在线| 国产黄a三级三级三级人| 亚洲精华国产精华精| 午夜精品久久久久久毛片777| 欧美3d第一页| 啦啦啦韩国在线观看视频| 熟女电影av网| 亚洲成人中文字幕在线播放| 十八禁网站免费在线| 午夜免费激情av| 亚洲人成电影免费在线| 91麻豆av在线| 日韩大尺度精品在线看网址| 亚洲午夜精品一区,二区,三区| 日本五十路高清| 女生性感内裤真人,穿戴方法视频| 麻豆成人午夜福利视频| 在线观看日韩欧美| 五月伊人婷婷丁香| 久久久久久久久久黄片| 亚洲av熟女| 中文字幕熟女人妻在线| 欧美日韩国产亚洲二区| 国产伦一二天堂av在线观看| 国产亚洲精品久久久久久毛片| 日韩欧美 国产精品| 老熟妇仑乱视频hdxx| 亚洲中文av在线| 欧美色视频一区免费| 婷婷丁香在线五月| 韩国av一区二区三区四区| 午夜福利在线观看免费完整高清在 | 午夜激情欧美在线| 两个人看的免费小视频| 网址你懂的国产日韩在线| 又粗又爽又猛毛片免费看| 欧美又色又爽又黄视频| 中文字幕人妻丝袜一区二区| 美女cb高潮喷水在线观看 | 搡老岳熟女国产| 国产三级黄色录像| 99精品久久久久人妻精品| 亚洲在线自拍视频| 我的老师免费观看完整版| 亚洲片人在线观看| 国产一区二区激情短视频| 国产精品久久视频播放| 中文字幕最新亚洲高清| 9191精品国产免费久久| 国产亚洲精品av在线| 黄色成人免费大全| 97人妻精品一区二区三区麻豆| 亚洲性夜色夜夜综合| tocl精华| 少妇的丰满在线观看| 久久人妻av系列| 亚洲一区二区三区不卡视频| 国产亚洲精品av在线| 999久久久精品免费观看国产| 国产99白浆流出| 欧美一区二区精品小视频在线| 午夜a级毛片| 最近视频中文字幕2019在线8| 99在线视频只有这里精品首页| 精品无人区乱码1区二区| 看免费av毛片| 熟女电影av网| 国产av在哪里看| 九九久久精品国产亚洲av麻豆 | 欧美黄色淫秽网站| 窝窝影院91人妻| 搞女人的毛片| 国内少妇人妻偷人精品xxx网站 | 成人亚洲精品av一区二区| 不卡av一区二区三区| 国产主播在线观看一区二区| 久久亚洲真实| x7x7x7水蜜桃| 人人妻人人看人人澡| 无遮挡黄片免费观看| 在线观看美女被高潮喷水网站 | 午夜福利高清视频| 琪琪午夜伦伦电影理论片6080| 亚洲欧美激情综合另类| 一个人看视频在线观看www免费 | 黄色 视频免费看| 宅男免费午夜| 国产精品久久视频播放| 亚洲avbb在线观看| 网址你懂的国产日韩在线| 久久中文看片网| 免费观看的影片在线观看| 中文字幕久久专区| 成人国产一区最新在线观看| 久久中文字幕人妻熟女| 欧美成人免费av一区二区三区| 老司机在亚洲福利影院| 88av欧美| 久久久国产成人免费| 少妇的逼水好多| 少妇人妻一区二区三区视频| 亚洲黑人精品在线| 欧美大码av| av在线蜜桃| 亚洲狠狠婷婷综合久久图片| 午夜福利成人在线免费观看| 又紧又爽又黄一区二区| 麻豆国产97在线/欧美| 欧美黄色淫秽网站| 老司机在亚洲福利影院| 国产91精品成人一区二区三区| 午夜激情福利司机影院| 欧美日韩瑟瑟在线播放| 他把我摸到了高潮在线观看| 成人av在线播放网站| 一个人看视频在线观看www免费 | 日本精品一区二区三区蜜桃| 成年人黄色毛片网站| 久久久久久久久中文| 成年女人看的毛片在线观看| 国产高清激情床上av| 两个人视频免费观看高清| 亚洲天堂国产精品一区在线| 日韩中文字幕欧美一区二区| 国产黄a三级三级三级人| 99热6这里只有精品| 精品久久久久久久人妻蜜臀av| ponron亚洲| 久久久久久大精品| 日韩有码中文字幕| 一级毛片高清免费大全| 亚洲 国产 在线| 最近视频中文字幕2019在线8| 97超级碰碰碰精品色视频在线观看| 久久久久免费精品人妻一区二区| 19禁男女啪啪无遮挡网站| svipshipincom国产片| 女人高潮潮喷娇喘18禁视频| 狂野欧美白嫩少妇大欣赏| 又紧又爽又黄一区二区| 久久亚洲真实| 成人国产综合亚洲| 精品国产乱码久久久久久男人| 亚洲在线自拍视频| 黄片小视频在线播放| 成熟少妇高潮喷水视频| 亚洲乱码一区二区免费版| 国产淫片久久久久久久久 | 国产美女午夜福利| 欧美日韩精品网址| 欧美日韩乱码在线| 日韩欧美在线乱码| 欧美性猛交黑人性爽| 色尼玛亚洲综合影院| 国产三级在线视频| 在线免费观看不下载黄p国产 | 首页视频小说图片口味搜索| 99久久久亚洲精品蜜臀av| 最近最新免费中文字幕在线| 精品福利观看| 亚洲av熟女| 精品一区二区三区av网在线观看| www.自偷自拍.com| 日本与韩国留学比较| 又粗又爽又猛毛片免费看| 偷拍熟女少妇极品色| 极品教师在线免费播放| 九九久久精品国产亚洲av麻豆 | svipshipincom国产片| 日韩免费av在线播放| 俄罗斯特黄特色一大片| 欧美国产日韩亚洲一区| 嫩草影视91久久| 天天躁日日操中文字幕| 中文字幕av在线有码专区| 午夜a级毛片| bbb黄色大片| 国内精品一区二区在线观看| 国产一区二区在线av高清观看| 亚洲精品乱码久久久v下载方式 | 中文字幕人成人乱码亚洲影| 99精品久久久久人妻精品| 一本综合久久免费| 宅男免费午夜| 桃色一区二区三区在线观看| 曰老女人黄片| 国产欧美日韩精品亚洲av| 亚洲av电影不卡..在线观看| 好看av亚洲va欧美ⅴa在| 色在线成人网| 欧美成狂野欧美在线观看| 国产综合懂色| 久久精品人妻少妇| 国产精品久久视频播放| 好看av亚洲va欧美ⅴa在| 他把我摸到了高潮在线观看| av片东京热男人的天堂| 国产乱人伦免费视频| 久久久久久久午夜电影| 欧美一级毛片孕妇| 我的老师免费观看完整版| 免费人成视频x8x8入口观看| 成人欧美大片| 亚洲美女视频黄频| 欧美成狂野欧美在线观看| 国产亚洲精品一区二区www| 国产主播在线观看一区二区| 在线观看免费午夜福利视频| 免费在线观看视频国产中文字幕亚洲| 色吧在线观看| 女人被狂操c到高潮| 夜夜看夜夜爽夜夜摸| 午夜亚洲福利在线播放| 最新美女视频免费是黄的| 国产三级在线视频| 禁无遮挡网站| 欧美乱码精品一区二区三区| 精品国产三级普通话版| 可以在线观看的亚洲视频| 亚洲专区国产一区二区| 俄罗斯特黄特色一大片| 黄色丝袜av网址大全| 免费看a级黄色片| 免费观看的影片在线观看| 免费看光身美女| 欧美日韩中文字幕国产精品一区二区三区| 欧美国产日韩亚洲一区| 午夜免费成人在线视频| 青草久久国产| 又黄又爽又免费观看的视频| 亚洲精品美女久久久久99蜜臀| 亚洲人与动物交配视频| 99国产精品一区二区三区| 免费电影在线观看免费观看| 免费在线观看成人毛片| 亚洲无线观看免费| 男女做爰动态图高潮gif福利片| 国产亚洲av嫩草精品影院| 欧美一级a爱片免费观看看| 91字幕亚洲| 最近最新中文字幕大全免费视频| 窝窝影院91人妻| 丁香欧美五月| 真人一进一出gif抽搐免费| 老司机深夜福利视频在线观看| 99热只有精品国产| 久久性视频一级片| 特级一级黄色大片| 黄片小视频在线播放| aaaaa片日本免费| 悠悠久久av| 欧美成人性av电影在线观看| 国产高清三级在线| 午夜影院日韩av| 99久久国产精品久久久| 九九在线视频观看精品| or卡值多少钱| 国产精品一区二区免费欧美| 日本与韩国留学比较| 欧美日韩福利视频一区二区| 亚洲熟女毛片儿| a级毛片在线看网站| 国产精品亚洲美女久久久| 麻豆国产97在线/欧美| 欧美另类亚洲清纯唯美| 老汉色∧v一级毛片| 制服丝袜大香蕉在线| 日日夜夜操网爽| 国产高清激情床上av| 别揉我奶头~嗯~啊~动态视频| 亚洲av五月六月丁香网| 19禁男女啪啪无遮挡网站| 99久久精品国产亚洲精品| 国产亚洲精品av在线| 日韩欧美国产一区二区入口| 又大又爽又粗| 国产精品亚洲美女久久久| 久久精品综合一区二区三区| 婷婷丁香在线五月| 国产高清视频在线播放一区| 51午夜福利影视在线观看| 一区二区三区国产精品乱码| 国产高清激情床上av| 欧美丝袜亚洲另类 | 免费看a级黄色片| 老鸭窝网址在线观看| 久久伊人香网站| 国产男靠女视频免费网站| 在线观看日韩欧美| 免费看光身美女| 成人特级av手机在线观看| 成人欧美大片| 国产黄a三级三级三级人| 欧美大码av| 18禁国产床啪视频网站| 国产激情久久老熟女| 亚洲自拍偷在线| 精品一区二区三区四区五区乱码| 麻豆久久精品国产亚洲av| 麻豆av在线久日| 欧美日韩精品网址| 免费看美女性在线毛片视频| 国产v大片淫在线免费观看| 精品久久久久久,| 在线观看日韩欧美| 成年女人看的毛片在线观看| 男女视频在线观看网站免费| 超碰成人久久| 亚洲无线在线观看| 99热精品在线国产| 99精品欧美一区二区三区四区| 天堂影院成人在线观看| 午夜福利欧美成人| 欧美3d第一页| 亚洲 国产 在线| 麻豆国产av国片精品| 日韩中文字幕欧美一区二区| 18禁美女被吸乳视频| 一级毛片高清免费大全| 99在线人妻在线中文字幕| 高清在线国产一区| 国产不卡一卡二| 99久久精品国产亚洲精品| 国内少妇人妻偷人精品xxx网站 | 亚洲国产精品合色在线| 日本精品一区二区三区蜜桃| 操出白浆在线播放| 熟女电影av网| 国产黄色小视频在线观看| avwww免费| 国产成人欧美在线观看| 99国产极品粉嫩在线观看| 欧美成狂野欧美在线观看| 国产精品1区2区在线观看.| 免费人成视频x8x8入口观看| 免费在线观看视频国产中文字幕亚洲| 国产私拍福利视频在线观看| 免费看十八禁软件| 日本免费一区二区三区高清不卡| 欧美3d第一页| 久久精品国产清高在天天线| 一级毛片高清免费大全| 欧美zozozo另类| 日本黄色视频三级网站网址| 在线免费观看不下载黄p国产 | 亚洲一区高清亚洲精品| 亚洲激情在线av| 成人欧美大片| 两个人视频免费观看高清| 精品不卡国产一区二区三区| 狂野欧美白嫩少妇大欣赏| 巨乳人妻的诱惑在线观看| 国产人伦9x9x在线观看| 亚洲中文av在线| 日本熟妇午夜| 亚洲五月婷婷丁香| 免费看a级黄色片| svipshipincom国产片| АⅤ资源中文在线天堂| 99国产精品一区二区三区| 性色avwww在线观看| 久久精品人妻少妇| 欧美另类亚洲清纯唯美| 国产av不卡久久| 国产亚洲精品一区二区www| 精品久久久久久久末码| 91字幕亚洲| 成人亚洲精品av一区二区| 99精品欧美一区二区三区四区| 亚洲成av人片在线播放无| 天天躁日日操中文字幕| 精品电影一区二区在线| 熟女少妇亚洲综合色aaa.| 国产精品免费一区二区三区在线| 黑人操中国人逼视频| 天天躁日日操中文字幕| 国产乱人视频| 亚洲国产精品久久男人天堂| 女生性感内裤真人,穿戴方法视频| 不卡av一区二区三区| 国产亚洲av嫩草精品影院| 国产男靠女视频免费网站| 丰满人妻熟妇乱又伦精品不卡| 国产av不卡久久| 免费看光身美女| 欧美成狂野欧美在线观看| 色在线成人网| 男女那种视频在线观看| 国产精品自产拍在线观看55亚洲| 麻豆成人av在线观看| 国产精品美女特级片免费视频播放器 | 18美女黄网站色大片免费观看| 久久久久久人人人人人| 婷婷丁香在线五月| 亚洲熟妇熟女久久| 国产精品一区二区三区四区免费观看 | 免费在线观看成人毛片| 丰满的人妻完整版| 少妇的逼水好多| 国产精品 国内视频| 好男人电影高清在线观看| 日韩欧美在线二视频| 国产精品日韩av在线免费观看| 手机成人av网站| 99精品久久久久人妻精品| 午夜福利欧美成人| 丁香六月欧美| 色精品久久人妻99蜜桃| 婷婷精品国产亚洲av在线| 成人18禁在线播放| 嫩草影院精品99| 久久香蕉精品热| 色视频www国产| 欧美黄色片欧美黄色片| 一个人看视频在线观看www免费 | 丁香六月欧美| 亚洲精华国产精华精| 男人舔奶头视频| 级片在线观看| 舔av片在线| 麻豆成人av在线观看| 欧美色欧美亚洲另类二区| 色吧在线观看| 亚洲自偷自拍图片 自拍| 禁无遮挡网站| 亚洲成人中文字幕在线播放| 99精品在免费线老司机午夜| 99久久无色码亚洲精品果冻| 嫩草影视91久久| 国产人伦9x9x在线观看| 偷拍熟女少妇极品色| 精品一区二区三区视频在线观看免费| 欧美中文日本在线观看视频| 丰满的人妻完整版| 亚洲一区二区三区不卡视频| tocl精华| 99re在线观看精品视频| 99国产精品99久久久久| 午夜福利在线观看吧| 精品人妻1区二区| 男女那种视频在线观看| 欧美成人性av电影在线观看| 午夜福利高清视频| 黄色丝袜av网址大全| 国内毛片毛片毛片毛片毛片| 久久精品91蜜桃| 婷婷丁香在线五月| 欧美日韩中文字幕国产精品一区二区三区| 小说图片视频综合网站| 99久久精品国产亚洲精品| 欧美黑人欧美精品刺激| 国产毛片a区久久久久| 国产成人av教育| 国产精品,欧美在线| 无限看片的www在线观看| 亚洲国产色片| 在线永久观看黄色视频| 熟妇人妻久久中文字幕3abv| 成人性生交大片免费视频hd| 丰满的人妻完整版| 老司机深夜福利视频在线观看| av女优亚洲男人天堂 | 成人欧美大片| 成人无遮挡网站| 久久国产乱子伦精品免费另类| 99精品在免费线老司机午夜| 午夜福利在线观看吧| 午夜福利18| 日韩大尺度精品在线看网址| 熟女电影av网| 久久精品国产99精品国产亚洲性色| 欧美激情在线99| 在线观看免费视频日本深夜| 熟女人妻精品中文字幕| 亚洲成人中文字幕在线播放| 久久精品综合一区二区三区| 国产熟女xx| 亚洲黑人精品在线| 99久久久亚洲精品蜜臀av| 婷婷丁香在线五月| 哪里可以看免费的av片| 熟妇人妻久久中文字幕3abv| 免费观看的影片在线观看| 男女午夜视频在线观看| 中文在线观看免费www的网站| 亚洲av电影在线进入| 一二三四在线观看免费中文在| 好男人在线观看高清免费视频| 亚洲精品一区av在线观看| 久久久久精品国产欧美久久久| 99在线人妻在线中文字幕|