欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于子模式的GoF設(shè)計模式實例挖掘方法

文檔序號:8258955閱讀:343來源:國知局
一種基于子模式的GoF設(shè)計模式實例挖掘方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于設(shè)計模式挖掘技術(shù)領(lǐng)域,具體涉及到一種基于子模式的設(shè)計模式實例 挖掘方法。
【背景技術(shù)】
[0002] 設(shè)計模式是在軟件開發(fā)項目中使用的一種最佳實踐,關(guān)注于解決應用程序高級結(jié) 構(gòu)開發(fā)問題。近年來,設(shè)計模式被廣泛地應用于軟件開發(fā)中,這在給軟件開發(fā)人員帶來了便 利的同時,也導致一些新問題的產(chǎn)生。例如,當系統(tǒng)中缺少對設(shè)計模式使用信息的記錄時, 系統(tǒng)的可理解性和可維護性將大大降低。因此,高效、準確地恢復系統(tǒng)中存在的設(shè)計模式實 例,對理解系統(tǒng)架構(gòu)和軟件再工程具有重要意義。
[0003] 研究GoF定義的23種設(shè)計模式的結(jié)構(gòu),可以發(fā)現(xiàn)不同的設(shè)計模式存在部分共同的 結(jié)構(gòu)。例如,在Decorator模式和Proxy模式中都存在這樣的結(jié)構(gòu):兩個不同的類繼承于同 一個類;還有在Adapter模式和Proxy模式中都存在這樣的結(jié)構(gòu):一個類繼承于另外一個 類,同時又與第三個類具有關(guān)聯(lián)關(guān)系。我們把由一組類以及這組類之間的繼承、聚合、關(guān)聯(lián) 和依賴關(guān)系構(gòu)成的、比設(shè)計模式更小的結(jié)構(gòu)稱之為子模式。發(fā)現(xiàn)系統(tǒng)中的子模式實例比直 接探測設(shè)計模式實例容易,并且以同步的方式挖掘這些子模式實例,可以避免對每個設(shè)計 模式實例的探測都重頭開始,有助于減少挖掘的時間復雜度。此外,通過將不同的子模式實 例依據(jù)特定的環(huán)境進行組合,對于挖掘設(shè)計實例的變體也提供了有效的解決方案。

【發(fā)明內(nèi)容】

[0004] 本發(fā)明針對現(xiàn)有技術(shù)的不足,提供了一種基于子模式的設(shè)計模式實例挖掘方法。
[0005] 本發(fā)明技術(shù)方案的主要構(gòu)思是:從GoF定義的23種設(shè)計模式的中提取相同的、更 易于挖掘的結(jié)構(gòu)--子模式,并使用子模式定義23種設(shè)計模式的結(jié)構(gòu)特征模型;使用類關(guān) 系有向圖表示軟件系統(tǒng)和子模式,在此基礎(chǔ)上利用圖同構(gòu)算法從表示軟件系統(tǒng)的類關(guān)系有 向圖中挖掘子模式實例,然后按照設(shè)計模式結(jié)構(gòu)特征模型的定義,使用連接類合并特定的 子模式實例以生成設(shè)計模式實例。
[0006] 本發(fā)明方法的具體步驟是: 步驟(1) 定義子模式(Sub-Pattern) 代表 一組類和這組類之間關(guān)系,用一個2元組表示,即 SP= (<CQ, ...,(^4>,R),其中CuCj^代表子模式中的這組類,R代表這組類之 間的關(guān)系,R = |>(%(:|)丨1*(€|,€|) = {inherit|agg|ass|dep}], inherit 表示繼承,agg 表示聚合,ass表示關(guān)聯(lián),dep表示依賴。
[0007] 步驟(2)使用子模式定義設(shè)計模式的結(jié)構(gòu)模型SFM,它是由一系列相關(guān)的子模式 的集合組成,用于表征某一種特定的設(shè)計模式的結(jié)構(gòu)特征。
[0008] 步驟(3)將軟件系統(tǒng)、子模式分別使用類關(guān)系有向圖表示,用三元組表示為 GCDR= (V,E,w:),其中:V= (VwVj,…,vj表示類關(guān)系有向圖中頂點的集合,代表所 有的類,E = Vj)}cV XV表示有向圖中邊的集合,表示類與類之間具有繼承、聚 合、關(guān)聯(lián)、依賴關(guān)系,臀給以Vi為起點和以、為終點的每條邊賦予一個權(quán)值,表示邊 的起點Vi和終點Vj對應的兩個類q和€|之間的關(guān)系,其值分別用2、3、5、7或者它們的乘積
【主權(quán)項】
1. 一種基于子模式的GoF設(shè)計模式實例挖掘方法,其特征在于該方法的具體步驟是: 步驟(1).定義子模式代表一組類和這組類之間關(guān)系,用一個二元組表示,即
代表子模式中的這組類,:R代表這組類之 間的關(guān)系,
,inherit表示繼承,agg 表示聚合,ass表示關(guān)聯(lián),dep表示依賴; 步驟(2).使用子模式定義23種GoF設(shè)計模式的結(jié)構(gòu)特征模型SFM,它 是由一系列相關(guān)的子模式連接組成,用于表征某一種特定的設(shè)計模式的結(jié) 構(gòu)特征,即
表示通過連接類|GlaSSfet連接而成的兩個子模式SPk和SPi2的組合,即
和 ClassSetSPi2分別表示子模式SPi±和5巧2包含的類集合; 步驟(3).將軟件系統(tǒng)、子模式分別使用類關(guān)系有向圖GCDR表示,即用三元組表示 為GCDR= (¥,E,w),其中:表示類關(guān)系有向圖中頂點的集合,代 表所有的類:
表示類關(guān)系有向圖中邊的集合,表示類與類之間具 有繼承、聚合、關(guān)聯(lián)、依賴關(guān)系,給以%為起點和以Vj為終點的每條邊賦予一個 權(quán)值,表示邊的起點Vi和終點V|對應的兩個類q和q之間的關(guān)系,其值分別用2、3、5、7或 者它們的乘積表示; _ ^
那么
;若兩個類之間擁有多種關(guān)系,那么使用不同關(guān)系對應的權(quán)值的乘積表示這 兩個類之間的關(guān)系; 步驟(4).首先,從軟件系統(tǒng)的類關(guān)系有向圖中找出每個子模式的類關(guān)系有向圖中每 個頂點的參與類候選集,其中表示參與類的頂點的入邊和出邊的權(quán)值能分別整除子模式的 類關(guān)系有向圖中對應頂點的入邊和出邊的權(quán)值;接著,從每個參與類候選集中任意選出一 個頂點,將這些頂點以及在軟件系統(tǒng)的類關(guān)系有向圖中相應的邊,組合成子圖;最后,判斷 該子圖是否與相應的子模式的類關(guān)系有向圖同構(gòu),若同構(gòu),將其添加到相應的子模式實例 集合中; 步驟(5).對于每種GoF設(shè)計模式遍歷其結(jié)構(gòu)特征模型SFM中的每一個SFMj,首先 在步驟(4)得到的子模式實例中選擇兩個與組成該結(jié)構(gòu)特征模型SFM0^子模式一致的 子模式實例進行組合,并檢查它們是否具有與組成該結(jié)構(gòu)特征模型SFM;的子模式一致的 連接類jClassSet,如果沒有相應的子模式實例或者這兩個子模式實例之間不存在連接類jQassSet,則舍棄;否則,則將這兩個子模式實例組合后添加到該設(shè)計模式實例集合中。
【專利摘要】本發(fā)明公開了一種基于子模式的GoF設(shè)計模式實例挖掘方法。發(fā)明從GoF定義的23種設(shè)計模式的中提取相同的、更易于挖掘的結(jié)構(gòu)——子模式,并使用子模式定義23種設(shè)計模式的結(jié)構(gòu)特征模型;使用類關(guān)系有向圖表示軟件系統(tǒng)和子模式,在此基礎(chǔ)上利用圖同構(gòu)算法從表示軟件系統(tǒng)的類關(guān)系有向圖中挖掘子模式實例,然后按照設(shè)計模式結(jié)構(gòu)特征模型的定義,使用連接類合并特定的子模式實例以生成設(shè)計模式實例。發(fā)明中的子模式由于比較簡單因此其實例更容易被探測到,同時使用連接類組合不同的子模式實例減少了搜索空間。
【IPC分類】G06F17-30
【公開號】CN104573084
【申請?zhí)枴緾N201510044072
【發(fā)明人】俞東進, 張艷艷, 陳真理, 王杰
【申請人】杭州電子科技大學
【公開日】2015年4月29日
【申請日】2015年1月28日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大同市| 夏津县| 肃宁县| 武宁县| 乌兰察布市| 黄山市| 瑞金市| 壤塘县| 武邑县| 成武县| 潮安县| 堆龙德庆县| 平凉市| 三亚市| 磐安县| 平安县| 衡阳市| 盐城市| 永胜县| 云浮市| 海原县| 汾西县| 金湖县| 越西县| 纳雍县| 蒙山县| 白山市| 延吉市| 沈丘县| 兴国县| 黄山市| 汉源县| 南投县| 潞城市| 阜阳市| 临猗县| 镇宁| 洛浦县| 武冈市| 读书| 会昌县|