国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

引入線索約束的設(shè)計(jì)模式變體挖掘研究*

2021-06-25 09:46肖卓宇徐運(yùn)標(biāo)
關(guān)鍵詞:結(jié)構(gòu)型結(jié)構(gòu)特征設(shè)計(jì)模式

肖卓宇,何 锫,徐運(yùn)標(biāo),陳 果,郭 杰,黃 俊

(1.湖南工業(yè)職業(yè)技術(shù)學(xué)院信息工程學(xué)院,湖南 長(zhǎng)沙 410208;2.廣州大學(xué)計(jì)算機(jī)科學(xué)與網(wǎng)絡(luò)工程學(xué)院,廣東 廣州 510006;3.湖南工業(yè)職業(yè)技術(shù)學(xué)院機(jī)械工程學(xué)院,湖南 長(zhǎng)沙 410208)

1 引言

Erich等[1]提出了3類共計(jì)23種經(jīng)典設(shè)計(jì)模式,并被廣泛應(yīng)用于軟件設(shè)計(jì)。設(shè)計(jì)模式挖掘有助于理解、維護(hù)和重構(gòu)大中型復(fù)雜軟件系統(tǒng),能有效減少軟件項(xiàng)目研發(fā)成本,縮短軟件系統(tǒng)研發(fā)周期,故在逆向工程領(lǐng)域有著重要的意義[2,3]。為此,眾多國(guó)內(nèi)外學(xué)者的研究工作圍繞設(shè)計(jì)模式挖掘展開[4 - 6]。

Chihada等[7,8]將C4.5、SVM等機(jī)器學(xué)習(xí)算法引入到設(shè)計(jì)模式挖掘領(lǐng)域。Yu等[9]關(guān)注了結(jié)構(gòu)型設(shè)計(jì)模式特征序列。肖卓宇等[10]提出了基于可視化文法約束的設(shè)計(jì)模式識(shí)別方法。Mayvan等[11]基于圖論原理,并通過多階段語(yǔ)義約束實(shí)現(xiàn)設(shè)計(jì)模式挖掘。Petterson等[12]提出設(shè)計(jì)模式變體是影響工具挖掘有效性的重要因素。文獻(xiàn)[13]總結(jié)了8種標(biāo)準(zhǔn)Bridge設(shè)計(jì)模式演化后的典型變體。文獻(xiàn)[14]依據(jù)GOF(Gang Of Four)設(shè)計(jì)模式分類原則,分3類總結(jié)了4種結(jié)構(gòu)型Proxy設(shè)計(jì)模式變體、4種行為型Command設(shè)計(jì)模式變體和7種創(chuàng)建型Factory Method設(shè)計(jì)模式變體。文獻(xiàn)[11,12,15]初步歸納了設(shè)計(jì)模式變體的普遍性規(guī)則,并對(duì)設(shè)計(jì)模式演化后的變體挖掘及其主要影響因素進(jìn)行了前期研究。文獻(xiàn)[16]基于謂詞邏輯對(duì)設(shè)計(jì)模式進(jìn)行了描述。

Figure 1 Steps of variant mining of design pattern with clue constraint

總體而言,目前研究工作對(duì)設(shè)計(jì)模式變體的關(guān)注比較缺乏,尚未形成全面、清晰的認(rèn)識(shí)。主要問題歸納為以下3點(diǎn):

(1)缺乏對(duì)設(shè)計(jì)模式變體的進(jìn)一步研究。

(2)設(shè)計(jì)模式案例庫(kù)缺乏對(duì)設(shè)計(jì)模式變體挖掘的支持。

(3)現(xiàn)有工具或方法對(duì)設(shè)計(jì)模式變體挖掘的結(jié)果不夠精確。

為此,本文提出引入線索約束的設(shè)計(jì)模式變體挖掘方法,基于約束滿足問題CSP(Constraint Satisfaction Problem)[17]的設(shè)計(jì)模式表示形式,分結(jié)構(gòu)特征約束與時(shí)序特征約束2個(gè)階段引入線索,實(shí)現(xiàn)對(duì)設(shè)計(jì)模式變體的挖掘。此外,通過精選的4種主流設(shè)計(jì)模式挖掘工具與4種基準(zhǔn)系統(tǒng)進(jìn)行了設(shè)計(jì)模式挖掘?qū)嶒?yàn)。

本文主要貢獻(xiàn):

(1)區(qū)別于以往僅關(guān)注標(biāo)準(zhǔn)設(shè)計(jì)模式挖掘的方法,本文以設(shè)計(jì)模式變體為專題,提出引入線索約束的設(shè)計(jì)模式變體挖掘方法。

(2)提出分結(jié)構(gòu)特征約束、時(shí)序特征約束2階段引入特征線索的思路。

(3)實(shí)驗(yàn)設(shè)計(jì)階段提出單個(gè)變體挖掘?qū)嶒?yàn)與集成變體挖掘?qū)嶒?yàn),以提升本文研究的信度與效度。

文章余下部分組織如下:第2節(jié)給出了設(shè)計(jì)模式變體挖掘主要步驟;第3節(jié)對(duì)特征歸納階段進(jìn)行了深入的闡述;第4節(jié)描述了特征約束階段中結(jié)構(gòu)特征約束與時(shí)序特征約束的CSP表示與存儲(chǔ);第5節(jié)描述了源碼挖掘的主要步驟;第6節(jié)設(shè)計(jì)了單個(gè)變體挖掘?qū)嶒?yàn)與集成變體挖掘?qū)嶒?yàn);第7節(jié)對(duì)本文工作進(jìn)行總結(jié),并探討了未來的主要工作。

2 設(shè)計(jì)模式變體挖掘步驟

本文研究分為特征歸納、特征約束和源碼挖掘3個(gè)階段,如圖1所示。

(1) 特征歸納階段工作包括對(duì)Erich等提出的創(chuàng)建型、行為型及結(jié)構(gòu)型3類共計(jì)23種標(biāo)準(zhǔn)設(shè)計(jì)模式進(jìn)行CSP[17]的中間結(jié)果表示;此外,需要依據(jù)文獻(xiàn)[11,12,15]對(duì)設(shè)計(jì)模式變體挖掘結(jié)果進(jìn)行分析歸納,進(jìn)而映射為CSP中間結(jié)果表示。

(2)特征約束階段工作包括結(jié)構(gòu)特征約束、時(shí)序特征約束及改進(jìn)P-mart[18]案例庫(kù)。結(jié)構(gòu)特征約束主要分析與歸納設(shè)計(jì)模式變體的參與者、屬性和方法等非動(dòng)態(tài)的普遍性特征;時(shí)序特征約束主要分析設(shè)計(jì)模式變體參與者間的委托和時(shí)序等普遍性動(dòng)態(tài)特征;改進(jìn)P-mart[18]案例庫(kù)主要實(shí)現(xiàn)結(jié)構(gòu)特征約束和時(shí)序特征約束后的特征線索存儲(chǔ)。

(3)源碼挖掘階段主要通過文獻(xiàn)[17]的工作獲取設(shè)計(jì)模式變體的候選參與者,接著使用工具DEMIMA(DEsign Motif Identification Multilayered Approach)[19]將設(shè)計(jì)模式變體的候選參與者映射為CSP中間表示,通過DPVMC(Design Pattern Variant Mining with Clue)算法分結(jié)構(gòu)特征約束、時(shí)序特征約束2個(gè)階段對(duì)參與者及其之間的關(guān)系特征進(jìn)行篩選,進(jìn)而與改進(jìn)后的設(shè)計(jì)模式案例庫(kù)P-mart[18]進(jìn)行匹配,從而實(shí)現(xiàn)對(duì)標(biāo)準(zhǔn)設(shè)計(jì)模式及其變體的挖掘。

3 特征歸納階段

文獻(xiàn)[17]提出CSP約束集概念,CSP可通過特征約束對(duì)傳統(tǒng)的23種標(biāo)準(zhǔn)設(shè)計(jì)模式進(jìn)行有效表示[12,17]。此外,由于軟件研發(fā)規(guī)模的擴(kuò)大及應(yīng)用場(chǎng)景的多元化,標(biāo)準(zhǔn)設(shè)計(jì)模式在處理特定場(chǎng)景問題時(shí)的局限性逐漸顯露。為此,領(lǐng)域?qū)<遗c研發(fā)人員為更方便地實(shí)現(xiàn)軟件系統(tǒng)設(shè)計(jì),對(duì)標(biāo)準(zhǔn)設(shè)計(jì)模式在不改變?cè)O(shè)計(jì)意圖的原則下進(jìn)行演化,衍生出了設(shè)計(jì)模式變體。設(shè)計(jì)模式變體能夠更加高效地解決特定場(chǎng)景問題,但傳統(tǒng)設(shè)計(jì)模式挖掘方法難以有效識(shí)別設(shè)計(jì)模式變體,因此,設(shè)計(jì)模式變體挖掘成為了領(lǐng)域研究的熱點(diǎn)之一。表1給出了其中部分主要的約束集符號(hào)。本文以表1的CSP約束集符號(hào)為基礎(chǔ),進(jìn)行設(shè)計(jì)模式線索約束表示。

Table 1 CSP constraints of notations

3.1 標(biāo)準(zhǔn)設(shè)計(jì)模式的CSP表示

Erich 等提出創(chuàng)建型、行為型和結(jié)構(gòu)型3類共計(jì)23種標(biāo)準(zhǔn)設(shè)計(jì)模式,每種設(shè)計(jì)模式都具有不同的意圖、動(dòng)機(jī)和結(jié)構(gòu)等。Guéhéneuc 等[19]提出基于約束滿足問題CSP的設(shè)計(jì)模式約束集表示符號(hào)。本文以Command模式為例,對(duì)其進(jìn)行CSP中間結(jié)果表示。圖2為標(biāo)準(zhǔn)的Command模式,包括Command、Invoker等4個(gè)設(shè)計(jì)模式類參與者及其之間的關(guān)系。通過文獻(xiàn)[17]變量集、約束集和域集等步驟的處理,其中,變量集可獲取設(shè)計(jì)模式參與者類、屬性和接口等信息;約束集關(guān)注不同設(shè)計(jì)模式參與者之間的關(guān)系特征;域集可將篩選后的設(shè)計(jì)模式參與者及其關(guān)系歸納成設(shè)計(jì)模式挖掘的候選參與者,最終,可將圖2中標(biāo)準(zhǔn)設(shè)計(jì)模式描述為表2所示內(nèi)容。

Figure 2 Standard command design pattern

Table 2 Constraints representation of standard Command pattern

3.2 設(shè)計(jì)模式變體的CSP表示

設(shè)計(jì)模式變體可理解為標(biāo)準(zhǔn)設(shè)計(jì)模式在不改變?cè)O(shè)計(jì)意圖的前提下進(jìn)行了演化,即一個(gè)設(shè)計(jì)模式的多個(gè)版本[12]。部分國(guó)內(nèi)外研究團(tuán)隊(duì)對(duì)設(shè)計(jì)模式變體有初步研究,并對(duì)設(shè)計(jì)模式變體的規(guī)則和特征等進(jìn)行了初步分析與歸納[11,12,16],但仍需進(jìn)一步多元、全面和系統(tǒng)的研究。

圖3給出了一個(gè)典型的Command設(shè)計(jì)模式變體,與圖2中標(biāo)準(zhǔn)Command設(shè)計(jì)模式相比,圖3a虛線框中增加了Receiver1和Receiver2 2個(gè)設(shè)計(jì)模式類參與者,事實(shí)上由于子類Receiver1、子類Receiver2與父類Receiver存在繼承關(guān)系,故Receiver1和Receiver2中的方法action可以復(fù)寫其父類Receiver中的action方法,即增加圖3b中的子類Receiver1與父類Receiver及Receiver2與父類Receiver間的2條虛線,進(jìn)而形成與類ConcreteCommand的關(guān)聯(lián)關(guān)系。

Figure 3 Command design pattern variant

傳統(tǒng)設(shè)計(jì)模式挖掘工具或方法處理這類變體問題略顯不足,而本文通過增加這些有價(jià)值的特征線索能夠有效實(shí)現(xiàn)圖3c與圖3d中的Command設(shè)計(jì)模式變體的挖掘。

DPVMC算法描述了具體的設(shè)計(jì)模式變體挖掘思路,該算法以面向?qū)ο笤创a為輸入,通過移除不存在關(guān)系的參與者縮減計(jì)算空間,進(jìn)而分結(jié)構(gòu)特征約束和時(shí)序特征約束2個(gè)階段引入特征線索,最終實(shí)現(xiàn)設(shè)計(jì)模式變體挖掘結(jié)果的輸出,如算法1所示。

算法1DPVMC

Input:Java source code of object-oriented software/*輸入面向?qū)ο蟮腏ava程序源碼*/

Output:instances of design pattern//輸出設(shè)計(jì)模式實(shí)例

1:Extract participants containing pattern instances by CSP//抽取設(shè)計(jì)模式參與者信息,并用CSP表示

2:{class,interface,attribute,method}→participants/*參與者集包含了類、接口、屬性和方法等信息*/

3:{Inheritance,Realization,dependency,association,aggregation,composition}→relationships/*參與者間關(guān)系集,包括繼承、實(shí)現(xiàn)、依賴、關(guān)聯(lián)、聚合和組合關(guān)系*/

4:If(participants not exist relationships)/*參與者間不存在任何關(guān)系*/

5: Remove participants/*移除不存在關(guān)系的參與者信息*/

6:ElseIf(participants exist multilayer relationship)//參與者是否存在多層關(guān)系

7:Foreach participant in relationshipsdo/*遍歷優(yōu)化后參與者集中的每個(gè)參與者*/

8:If(clue is static)//如果是靜態(tài)線索

9: Adding structural feature constraint clues by CSP/*增加結(jié)構(gòu)特征約束線索,并用CSP表示*/

10:Else//如果是動(dòng)態(tài)線索

11: Adding temporal feature constraints clues by CSP/*增加時(shí)序特征約束線索,并用CSP表示*/

12:endIF

13: Matching repository of P-mart/*匹配P-mart設(shè)計(jì)模式案例庫(kù)*/

14:EndFor

15:EndIF

16:returninstances of design pattern/*實(shí)現(xiàn)設(shè)計(jì)模式變體挖掘,給出返回值*/

表3對(duì)圖3中的Command設(shè)計(jì)模式變體進(jìn)行了CSP中間結(jié)果表示,表3中加粗部分為Command設(shè)計(jì)模式變體特征線索的CSP表示。如第11和第12行表示Receiver類派生出了Receiver1與Receiver2 2個(gè)子類,第14行和第16行分別表示子類中存在一個(gè)action方法,第15行和第17行表示子類中的action可復(fù)寫父類中的action方法。

Table 3 Constraints representation of Command pattern variant

4 特征約束階段

在特征歸納階段首先將Erich 等提出的23種標(biāo)準(zhǔn)設(shè)計(jì)模式和設(shè)計(jì)模式變體通過工具DEMIMA[19]映射為CSP中間表示。該階段已初步具備一定的設(shè)計(jì)模式變體挖掘能力,但總體而言具有局限性與主觀性。為此,特征約束階段將依據(jù)文獻(xiàn)[11,12,15,16]歸納的普遍性特征,并通過線上線下調(diào)研行業(yè)專家進(jìn)行多輪次論證,將本階段分為結(jié)構(gòu)特征約束和時(shí)序特征約束2個(gè)子階段。結(jié)構(gòu)型特征約束階段關(guān)注參與者等基本靜態(tài)特征信息的挖掘;時(shí)序特征約束階段側(cè)重于處理存在有嚴(yán)格時(shí)間節(jié)點(diǎn)約束的參與者間的動(dòng)態(tài)特征信息挖掘。

4.1 結(jié)構(gòu)特征約束

結(jié)構(gòu)特征約束主要負(fù)責(zé)處理設(shè)計(jì)模式包含的參與者類、接口和方法等扮演的角色映射關(guān)系。此外,這些角色間的關(guān)系也是關(guān)注的重點(diǎn)。本文對(duì)主流設(shè)計(jì)模式工具的挖掘結(jié)果進(jìn)行了詳細(xì)的分析,并結(jié)合文獻(xiàn)[11,12,15]的研究成果,通過文獻(xiàn)[17]中提出的候選者特征線索選取方法,歸納了20條特征線索,并選取其中出現(xiàn)頻次較高的10條特征線索進(jìn)行了CSP中間結(jié)果表示,如表4中的S1至S10所示。

4.2 時(shí)序特征約束

結(jié)構(gòu)特征約束側(cè)重于靜態(tài)信息的歸納,有助于結(jié)構(gòu)型設(shè)計(jì)模式變體挖掘,但行為型與創(chuàng)建型設(shè)計(jì)模式變體由于存在方法或參數(shù)調(diào)用的前后關(guān)系、前置與后置等條件的時(shí)序限制,故僅關(guān)注靜態(tài)信息,存在不足之處。為此,時(shí)序特征約束階段將側(cè)重關(guān)注動(dòng)態(tài)信息的特征線索表示。該項(xiàng)工作有助于行為型和創(chuàng)建型設(shè)計(jì)模式變體挖掘。本文對(duì)主流設(shè)計(jì)模式工具的挖掘結(jié)果進(jìn)行了詳細(xì)的分析,結(jié)合文獻(xiàn)[11,12,15]研究成果,也通過文獻(xiàn)[17]中的候選者特征線索選取方法,歸納了16條特征線索,并選取其中出現(xiàn)頻次較高的9條特征線索進(jìn)行了CSP中間結(jié)果表示,如表5中的D1~D9所示。

4.3 P-mart設(shè)計(jì)模式基準(zhǔn)案例庫(kù)

Guéhéneuc等[18]通過手工形式對(duì)Jhotdraw,Junit和QuickUML等經(jīng)典設(shè)計(jì)模式基準(zhǔn)系統(tǒng)中的設(shè)計(jì)模式案例增加標(biāo)簽,從而形成P-mart設(shè)計(jì)模式基準(zhǔn)案例庫(kù)[18]。本文研究將結(jié)構(gòu)特征約束階段歸納的10種CSP特征線索表示和時(shí)序特征約束階段歸納的9種CSP特征線索表示存儲(chǔ)到P-mart案例庫(kù)。

Table 4 Structural feature constraints

Table 5 Temporal feature constraints

5 源碼挖掘階段

源碼挖掘階段以面向?qū)ο蟮脑闯绦驗(yàn)檩斎耄ㄟ^文獻(xiàn)[17]進(jìn)行設(shè)計(jì)模式候選參與者篩選,以期刪除與其余參與者類或接口不存在關(guān)系或關(guān)系不重要的參與者,從而減少CSP中間結(jié)果表示的轉(zhuǎn)換時(shí)間成本,并生成設(shè)計(jì)模式參與者與扮演角色的映射關(guān)系。最后,通過與P-mart[18]案例庫(kù)匹配實(shí)現(xiàn)設(shè)計(jì)模式變體挖掘。

6 實(shí)驗(yàn)設(shè)計(jì)

本文實(shí)驗(yàn)設(shè)計(jì)在單個(gè)設(shè)計(jì)模式變體和集成設(shè)計(jì)模式變體2個(gè)層面展開。其中,單個(gè)變體實(shí)驗(yàn)主要對(duì)典型單一結(jié)構(gòu)型、行為型與創(chuàng)建型設(shè)計(jì)模式變體進(jìn)行逐個(gè)挖掘;集成變體實(shí)驗(yàn)主要針對(duì)ApacheAnt等基準(zhǔn)系統(tǒng)中的設(shè)計(jì)模式變體進(jìn)行挖掘。

表6給出了本文進(jìn)行實(shí)驗(yàn)比較的設(shè)計(jì)模式挖掘工具,工具選擇依據(jù)為:(1)行業(yè)具有廣泛影響力;(2)支持面向?qū)ο蟮腏ava程序源碼;(3)使用了主流的基準(zhǔn)系統(tǒng)進(jìn)行挖掘?qū)嶒?yàn),便于數(shù)據(jù)的交叉比較。實(shí)驗(yàn)環(huán)境計(jì)算機(jī)CPU選擇6核Intel i7-8700K處理器,主頻為3.8 GHz,內(nèi)存為32 GB,操作系統(tǒng)為Windows 10。

Table 6 Parameters of design pattern mining tool

6.1 單個(gè)設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)

文獻(xiàn)[13,14]按結(jié)構(gòu)型、行為型與創(chuàng)建型分類歸納了4種結(jié)構(gòu)型Proxy變體、8種Bridge結(jié)構(gòu)型變體、4種行為型Command變體和7種創(chuàng)建型Factory Method變體[14]。單個(gè)設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)將對(duì)這3類共計(jì)23種變體進(jìn)行挖掘。表7中“√”表示變體挖掘成功,“×”表示變體挖掘失敗。由表7可知:

Table 7 Mining individual design pattern variant

(1)5種方法或工具對(duì)Proxy變體、Bridge變體、Command變體與Factory Method變體的平均挖掘準(zhǔn)確率依次為60%,55%,45%和25.71%。經(jīng)過分析發(fā)現(xiàn)Proxy變體與Bridge變體屬于結(jié)構(gòu)型設(shè)計(jì)模式變體,由于結(jié)構(gòu)型變體沒有復(fù)雜的動(dòng)態(tài)時(shí)序約束,故挖掘難度要小于行為型Command變體與創(chuàng)建型Factory Method變體的挖掘難度。

(2)本文方法和PINOT、DPJF、F.T.、DPRE工具對(duì)3類共計(jì)23個(gè)變體的平均挖掘準(zhǔn)確率依次為86.96%,4.35%,43.48%,47.8%和47.8%。經(jīng)過分析發(fā)現(xiàn),由于本文不僅關(guān)注了靜態(tài)線索,同時(shí)也關(guān)注了動(dòng)態(tài)線索,并在實(shí)現(xiàn)上通過結(jié)構(gòu)特征約束和時(shí)序特征約束階段進(jìn)行特征線索的引入,故取得了相對(duì)較好的設(shè)計(jì)模式變體挖掘結(jié)果。

(3) 本文方法對(duì)行為型模式Command變體的平均挖掘準(zhǔn)確率為75%,低于本文方法的綜合平均挖掘準(zhǔn)確率(86.96%),甚至要低于創(chuàng)建型Factory Method變體的平均挖掘準(zhǔn)確率(85.71%)。通過研究發(fā)現(xiàn),創(chuàng)建型模式不僅要考慮到時(shí)序機(jī)制,甚至要關(guān)注設(shè)計(jì)模式參與者間的委托機(jī)制,故原則上挖掘難度更大。雖然本文方法取得了較好的效果,但仍需更多的實(shí)例及更大的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)驗(yàn)證。

(4) 5種方法對(duì)創(chuàng)建型Factory Method變體3的平均挖掘準(zhǔn)確率為0%。通過研究發(fā)現(xiàn)Factory Method變體3返回選定的 product 類時(shí),被設(shè)計(jì)模式參與者角色間的附加關(guān)系[23,24]影響,易導(dǎo)致挖掘失敗。后續(xù)工作考慮將附加關(guān)系作為主題,厘析其與結(jié)構(gòu)型、行為型與創(chuàng)建型設(shè)計(jì)模式的關(guān)系,并歸納變體特征線索。

6.2 集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)

為了驗(yàn)證本文方法對(duì)軟件系統(tǒng)的挖掘效果,選用行業(yè)內(nèi)具有代表性的ApacheAnt等4個(gè)經(jīng)典開源系統(tǒng)(如表8所示,其中KLOC(Thousand Lines Of Code)表示代碼千行數(shù))進(jìn)行集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)。選用ApacheAnt等經(jīng)典系統(tǒng)的原因?yàn)椋?1)眾多課題相關(guān)研究皆使用這些系統(tǒng),便于挖掘結(jié)果的交叉驗(yàn)證;(2)課題組邀請(qǐng)行業(yè)專家多輪次交流與驗(yàn)證發(fā)現(xiàn),這4個(gè)經(jīng)典系統(tǒng)中不僅存在較為豐富的3類標(biāo)準(zhǔn)設(shè)計(jì)模式案例,同時(shí)也存在驗(yàn)證所需的變體案例;(3)課題組熟悉設(shè)計(jì)模式案例所在的位置與目錄,如表9給出了JHotDraw7.0中4個(gè)Command設(shè)計(jì)模式參與者的目錄位置信息。

Table 8 Parameters of open source systems

在6.1節(jié)單個(gè)設(shè)計(jì)模式變體實(shí)驗(yàn)中,設(shè)計(jì)模式挖掘工具F.T[22]和DPRE[1]由于可一定程度上支持靜態(tài)與動(dòng)態(tài)機(jī)制,故取得了相對(duì)較好的挖掘效果。為此,集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)將進(jìn)一步將本文方法與這2種效果較好的主流經(jīng)典設(shè)計(jì)模式挖掘工具進(jìn)行比較。

表10中NA表示不存在該類模式,分析表10結(jié)果可知:

(1)本文方法在單個(gè)設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)和集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)的擬合度較好;

(2)設(shè)計(jì)模式參與者角色間存在的附加關(guān)系是影響設(shè)計(jì)模式變體挖掘成功主要因素之一;

(3)設(shè)計(jì)模式參與者扮演多個(gè)角色易導(dǎo)致設(shè)計(jì)模式變體挖掘失?。?/p>

(4)部分未考慮到的設(shè)計(jì)模式特征線索約束表示問題,需要通過更大的數(shù)據(jù)集進(jìn)行歸納。

6.3 設(shè)計(jì)模式變體挖掘主要影響因素

通過單個(gè)設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)與集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)分析發(fā)現(xiàn)一些共性問題,歸納如下:

(1)3類設(shè)計(jì)模式變體挖掘的難易程度依次為創(chuàng)建型最大,行為型次之,結(jié)構(gòu)型較易;

Table 9 Directory location of Command design patterns in JHotDraw 7.0

Table 10 Experiment on mining variant of integrated design patterns

(2)設(shè)計(jì)模式參與者間的關(guān)系挖掘受時(shí)序機(jī)制影響,對(duì)創(chuàng)建型模式挖掘的影響尤為明顯;

(3)設(shè)計(jì)模式參與者間的某些附加關(guān)系可能改變?cè)O(shè)計(jì)意圖,易導(dǎo)致假陰性變體挖掘結(jié)果產(chǎn)生;

(4)多個(gè)設(shè)計(jì)模式實(shí)例間可能存在共享同一個(gè)參與者角色的現(xiàn)象,也易導(dǎo)致挖掘結(jié)果準(zhǔn)確率出現(xiàn)偏差。

7 結(jié)束語(yǔ)

本文提出引入線索約束的設(shè)計(jì)模式變體挖掘方法,分結(jié)構(gòu)特征約束與時(shí)序特征約束2個(gè)階段引入線索,給出了DPVMC算法,并通過4個(gè)經(jīng)典設(shè)計(jì)模式挖掘工具與4個(gè)開源系統(tǒng)進(jìn)行了單個(gè)設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)和集成設(shè)計(jì)模式變體挖掘?qū)嶒?yàn)。未來工作將致力于探究設(shè)計(jì)模式附加關(guān)系對(duì)設(shè)計(jì)模式變體挖掘的影響、設(shè)計(jì)模式變體基準(zhǔn)案例庫(kù)的建構(gòu)、設(shè)計(jì)模式參與者間時(shí)序機(jī)制的進(jìn)一步分類歸納[25]、設(shè)計(jì)模式推薦[26]機(jī)制等熱點(diǎn)問題的研究。

猜你喜歡
結(jié)構(gòu)型結(jié)構(gòu)特征設(shè)計(jì)模式
“1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
自愈合薄膜的研究進(jìn)展
三維協(xié)同設(shè)計(jì)模式下的航天項(xiàng)目管理實(shí)踐與展望
交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
體育社團(tuán)結(jié)構(gòu)型社會(huì)資本的培育研究
結(jié)構(gòu)型含磷阻燃劑在PET中應(yīng)用的專利分析
新時(shí)期計(jì)算機(jī)程序的設(shè)計(jì)模式
結(jié)構(gòu)特征的交互作用對(duì)注塑齒輪翹曲變形的影響
特殊環(huán)境下雙駝峰的肺組織結(jié)構(gòu)特征
2012年冬季南海西北部營(yíng)養(yǎng)鹽分布及結(jié)構(gòu)特征