亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        設(shè)計模式識別的特征信息分類研究

        2022-07-12 14:03:26肖卓宇徐運標王林春
        計算機應(yīng)用與軟件 2022年6期
        關(guān)鍵詞:結(jié)構(gòu)型設(shè)計模式變體

        肖卓宇 何 锫 徐運標 陳 果 郭 杰 王林春

        1(湖南工業(yè)職業(yè)技術(shù)學(xué)院信息工程學(xué)院 湖南 長沙 410208) 2(廣州大學(xué)計算機科學(xué)與教育軟件學(xué)院 廣東 廣州 510006)

        0 引 言

        設(shè)計模式是一種可復(fù)用的設(shè)計經(jīng)驗總結(jié),在軟件生命周期的設(shè)計階段擔(dān)任重要角色[1],有助于提升面向?qū)ο蟮能浖_發(fā)質(zhì)量[2-3]。設(shè)計模式識別有助于程序的理解,并為軟件系統(tǒng)重構(gòu)[4]與維護[5]降低成本,減少研發(fā)時間[6-7]。由此可見,設(shè)計模式識別對遺產(chǎn)系統(tǒng)重構(gòu)有著積極的意義[8-9]。Zhu等[10]基于符號邏輯,通過謂詞表示設(shè)計模式,為自動識別設(shè)計模式提供了理論基礎(chǔ)。Zanoni等[11]提出將設(shè)計模式特征以向量的形式進行表示,進而通過機器學(xué)習(xí)的形式識別設(shè)計模式。Chihada等[12]通過學(xué)習(xí)問題映射設(shè)計模式檢測,提出了46種特征指標。Fontana等[13-14]提出基于EDP等微結(jié)構(gòu)表示設(shè)計模式參與者特征,并進而實現(xiàn)設(shè)計模式識別。肖卓宇等在之前工作關(guān)注了設(shè)計模式變體識[15-16]、設(shè)計模式參與者角色間的附加關(guān)系[17]、設(shè)計模式實例共享問題[18]。文獻[19]與文獻[20]以圖論為基礎(chǔ),通過子圖同構(gòu),以相似積分來檢測設(shè)計模式。

        綜上所述,現(xiàn)有設(shè)計模式識別相關(guān)工作存在如下主要問題:

        (1) 對設(shè)計模式特征表示不夠完善;

        (2) 較少對設(shè)計模式按結(jié)構(gòu)型、行為型、創(chuàng)建型進行特征分類研究;

        (3) 僅針對Jhotdraw 7、Junit 3.7、Quickuml 2001等基準系統(tǒng)進行了設(shè)計模式識別,而較少針對已上線真實系統(tǒng)的識別研究。

        為此,本文針對設(shè)計模式識別精確性不夠理想的問題,以Erich Gamma提出的設(shè)計模式分類為原則,基于本文先前工作[21],提出一種基于特征分類表示的設(shè)計模式識別方法,分類歸納了設(shè)計模式的特征信息,并以Adapter模式、Command模式、Factory Method模式為例,通過4個經(jīng)典測試案例進行設(shè)計模式識別實驗。

        本研究主要貢獻如下:

        (1) 提出依據(jù)Erich Gamma設(shè)計模式分類對設(shè)計模式特征信息進行表示;

        (2) 進行了深入的設(shè)計模式識別結(jié)果研究,發(fā)現(xiàn)了影響識別結(jié)果精確率的重要原因變體、附加關(guān)系,設(shè)計模式共享,為后續(xù)優(yōu)化工作奠定了基礎(chǔ);

        (3) 提出了基于特征表示的設(shè)計模式識別方法。

        1 設(shè)計模式實例分類研究

        先前工作[21]對設(shè)計模式進行了識別,并基于設(shè)計模式識別工具EA[22],歸納了47條特征信息,見表1。本文工作將基于該條特征信息按照結(jié)構(gòu)型、行為型與創(chuàng)建型3類進行設(shè)計模式分類特征表示,并分別以結(jié)構(gòu)型設(shè)計模式對象Adapter、行為型設(shè)計模式Command、創(chuàng)建型設(shè)計模式Factory Method為例進行具體描述。

        1.1 結(jié)構(gòu)型設(shè)計模式—對象Adapter設(shè)計模式

        圖1描述了對象Adapter設(shè)計模式,包括Target、Adapter、Adaptee三個主要參與者及其之間存在的關(guān)系。具體特征表示見表2。表2中01行表示圖1對象Adapte設(shè)計模式中存在Target、Adapter、Adaptee三個主要參與者,其中Adapter、Adaptee為類,而Target為接口;02行表示Adapter與Target間存在泛化關(guān)系;03行表示Adapter與Adaptee間存在關(guān)聯(lián)關(guān)系;04行表示Adapter類的request方法與Adaptee類的Specific request方法間存在代理關(guān)系;05行表示Adaptee類存在一個SpecificRequest方法,且SpecificRequest是一個具體的方法;06行表示Adapter類的request方法與Adaptee類的Specificrequest方法不存在共同接口;07表示Client不能對Adaptee類進行直接訪問;08行表示Adapte類與Adaptee類間不能存在繼承關(guān)系;09行表示Adapte類與Target類間不能存在繼承關(guān)系。

        圖1 對象Adapter設(shè)計模式

        1.2 行為型設(shè)計模式—Command設(shè)計模式

        圖2描述了Command設(shè)計模式,包括Invoker、Command、ConcreteCommand、Receive四個主要參與者及其之間存在的關(guān)系。具體特征表示見表3。表3中01行表示圖2 Command設(shè)計模式中存在Invoker、Command、ConcreteCommand、Receiver四個主要參與者;02行表示Invoker與Command間存在關(guān)聯(lián)關(guān)系;03行表示ConcreteCommand與Command間存在繼承關(guān)系;04行表示Command類與ConcreteCommand類有共同方法Execute;05行表示ConcreteCommand類與Receiver類間存在關(guān)聯(lián)關(guān)系;06行表示ConcreteCommand類的Execute方法與Receiver類的Action方法不存在代理關(guān)系;07表示Client類可以對Receiver類進行直接訪問。

        圖2 Command設(shè)計模式

        表3 對象Command模式特征表示

        1.3 創(chuàng)建型設(shè)計模式—Factory Method設(shè)計模式

        圖3描述了Factory Method設(shè)計模式,包括Creator、ConcreteCreator、Product、ConcretProduct四個主要參與者及其之間存在的關(guān)系。具體特征表示見表4。表4中01行表示圖3Factory Method設(shè)計模式中存在Creator、ConcreteCreator、Product、ConcretProduct四個主要參與者;02行表示ConcreteCreator類與Creator類間存在泛化關(guān)系;03行表示存在FactoryMethod類,且Factory不是抽象類;04行表示Creator類與ConcreteCreator類有共同方法FactoryMethod;05行表示Factory Method有一個ConcreteProduct返回類型;06行表示Factory Method方法存在一個返回值ConcreteProduct;07表示Factory Method類與ConcreteProduct類存在依賴;08表示Concrete Product類與Product類存在繼承關(guān)系;09行表示Product與ConcreteProduct不能通過FactoryMethod方法形成繼承關(guān)系。

        圖3 Factory Method設(shè)計模式

        表4 Factory Method模式特征表示

        續(xù)表4

        2 設(shè)計模式分類識別步驟

        設(shè)計模式識別的框架見圖4,主要分為5個步驟:

        圖4 設(shè)計模式識別流程

        步驟1用本文先前工作[21]對源碼進行抽??;

        步驟2將抽取源碼結(jié)果進行特征表示;

        步驟3通過EA[22]工具進行設(shè)計模式識別;

        步驟4將設(shè)計模式進行定義及特征表示;

        步驟5將設(shè)計模式識別結(jié)果與P-Mart案例庫[23]進行匹配。

        3 實驗設(shè)計與分析

        實驗采用先前已實現(xiàn)的四個MIS系統(tǒng)進行測試,其具體指標見表5。其中,KLOC表示程序代碼行數(shù),每個測試系統(tǒng)中的Adapter模式、Command模式、Factory Method模式基準已通過人工的形式增加了標簽。如測試系統(tǒng)A中的代碼數(shù)量KLOC為87.73千行,類的數(shù)目為167,其中有Adapter模式5個、Command模式2個、Factory Method模式1個。

        表5 測試系統(tǒng)指標基準

        續(xù)表5

        Erich Gmma[24]將GOF設(shè)計模式分為結(jié)構(gòu)型、行為型、創(chuàng)建型3個大類,共計23種設(shè)計模式。作者在先前工作中對設(shè)計模式進行了初步的識別,但是缺乏對三類設(shè)計模式進行具體的分類歸納與表示[21]。為此,本實驗以先前工作為基礎(chǔ)展開,并獲取了表6所示的結(jié)果。

        表6 設(shè)計模式識別精確率

        由表6可見,在測試系統(tǒng)A中對于Adapter模式、Command模式識別效果較好,識別精確率為100%,而對Factory Method模式識別精確率為0%。在測試系統(tǒng)B中對于Adapter模式、Command模式識別效果較好,分別為100%與66.7%,而對于Factory Method模式識別精確率為50%。在測試系統(tǒng)C中也對于Adapter模式、Command模式識別效果較好,分別為91.7%與83.3%,而對于Factory Method模式識別精確率為50%。在測試系統(tǒng)D中對于Adapter模式、Command模式識別效果較好,分別為95.5%與77.8%,而對于Factory Method模式識別精確率為71.4%。

        探究其原因歸納為如下幾點:

        (1) 創(chuàng)建型設(shè)計模式識別難度高于行為型設(shè)計模式,而行為型設(shè)計模式難于結(jié)構(gòu)型設(shè)計模式。由表7可知,Adapter模式識別的平均精確率最高,為96.8%;Command模式識別的平均精確率次之為81.95%;而Factory Method模式的平均精確率僅為42.85%。究其原因,Adapter模式屬于結(jié)構(gòu)型設(shè)計模式,Command模式屬于行為型模式,F(xiàn)actory Method模式屬于創(chuàng)建型模式。結(jié)構(gòu)性模式?jīng)]有涉及到動態(tài)的時序機制,故識別難度較低,識別效果較好;行為型模式要涉及動態(tài)時序機制,故識別難度要高于結(jié)構(gòu)型模式,故識別效果居中;而Factory Method模式屬于創(chuàng)建型設(shè)計模式,除開動態(tài)時序機制,還需要考慮代理機制等居多問題,故識別難度最大,平均識別精確率最低。

        表7 三個測試系統(tǒng)平均精確率

        (2) 設(shè)計模式變體易導(dǎo)致識別結(jié)果不精確。對實驗結(jié)果進行深入分析之后發(fā)現(xiàn),測試系統(tǒng)中一個標準設(shè)計模式存在多個版本的問題,即設(shè)計模式變體[15-16]。設(shè)計模式變體能夠降低研發(fā)成本,縮短研發(fā)時間,故目前研發(fā)人員通常會在不改變設(shè)計意圖的前提下用設(shè)計模式變體進行程序設(shè)計,而目前設(shè)計模式識別方法或工具對變體的識別效果考慮不夠深入,這可視為設(shè)計模式識別的重要挑戰(zhàn)。

        (3) 設(shè)計模式參與角色間的附加關(guān)系干擾了識別結(jié)果。同樣,設(shè)計模式變體是在不改變設(shè)計意圖的前提下對標準設(shè)計模式進行了演化,但這種演化可能導(dǎo)致嚴重的后果。通過實驗研究,發(fā)現(xiàn)一些設(shè)計模式變體通過增加參與者角色間多余的關(guān)系會改變設(shè)計意圖,即附加關(guān)系[17],從而導(dǎo)致實現(xiàn)程序與目標需求的差異,這部分改變了設(shè)計意圖的變體難以識別。

        (4) 設(shè)計模式實例共享問題。通過研究設(shè)計模式識別結(jié)果,發(fā)現(xiàn)存在部分設(shè)計模式參與者角色同時承擔(dān)兩個或多個設(shè)計模式的參與者問題,而這類問題易導(dǎo)致只能隨機識別一個先檢測到參與者角色的設(shè)計模式,而與其承擔(dān)角色相關(guān)的其余設(shè)計模式卻難以識別成功。

        本文先前工作[2,3,15-18]通過Jhotdraw 7、Junit 3.7、Quickuml 2001等基準系統(tǒng)進行了設(shè)計模式識別,部分效果要優(yōu)于本文工作。分析其原因發(fā)現(xiàn):

        (1) 設(shè)計模式識別在訓(xùn)練階段效果較好,而在驗證階段略不足,說明存在過擬合問題。識別效果在遷移、普適性等方面需要進一步加強。

        (2) 數(shù)據(jù)集不夠大,尤其在測試系統(tǒng)A中Factory Method設(shè)計模式基準數(shù)量為1,由于識別未成功,導(dǎo)致對于Factory Method設(shè)計模式識別精確率為0%,以至于表6的4個測試系統(tǒng)中的Factory Method模式平均識別精確率僅為42.85%。為此,還需要通過更多的設(shè)計模式實例或系統(tǒng)進行大規(guī)模的驗證。

        (3) 通過研究發(fā)現(xiàn),大部分測試系統(tǒng)中創(chuàng)建型設(shè)計模式在軟件設(shè)計中使用頻率少于行為型設(shè)計模式,而行為型設(shè)計模式在軟件設(shè)計中使用頻率少于結(jié)構(gòu)型設(shè)計模式。

        4 結(jié) 語

        依據(jù)Erich Gamma[24]提出的設(shè)計模式分類標準,對結(jié)構(gòu)型、行為型及創(chuàng)建型設(shè)計模式進行了深入研究,歸納了設(shè)計模式的特征信息表示,以Adapter模式、Command模式、Factory Method模式為例,通過本文先前工作[21]對4個經(jīng)典測試系統(tǒng)進行了設(shè)計模式識別實驗,實驗結(jié)果表明對結(jié)構(gòu)型Adapter模式與行為型Command模式取得了較好的識別效果。未來工作將致力于創(chuàng)建型設(shè)計模式的識別,以及對設(shè)計模式變體、設(shè)計模式附加關(guān)系、設(shè)計模式共享等領(lǐng)域前沿問題的追蹤。

        猜你喜歡
        結(jié)構(gòu)型設(shè)計模式變體
        仿生設(shè)計模式的創(chuàng)新應(yīng)用探索
        玩具世界(2023年6期)2024-01-29 12:14:36
        基于DDPG算法的變體飛行器自主變形決策
        “1+1”作業(yè)設(shè)計模式的實踐探索
        自愈合薄膜的研究進展
        西部論叢(2020年8期)2020-08-31 22:44:28
        交通機電工程設(shè)計模式創(chuàng)新探討
        體育社團結(jié)構(gòu)型社會資本的培育研究
        淺議科技論文結(jié)構(gòu)型英文摘要的句型特點和表達方式
        非仿射參數(shù)依賴LPV模型的變體飛行器H∞控制
        新時期計算機程序的設(shè)計模式
        耀變體噴流高能電子譜的形成機制
        亚洲国产精品尤物yw在线观看| 亚洲最好看的中文字幕| 无码熟妇人妻av影音先锋| 精品无码人妻一区二区三区| 国产成人免费高清激情明星| 一区二区亚洲精美视频| 99e99精选视频在线观看| 午夜性无码专区| 香蕉视频在线观看国产| 亚洲av偷拍一区二区三区| 91九色最新国产在线观看| 亚洲av永久无码精品放毛片| 亚洲美腿丝袜综合一区| 久草久热这里只有精品| 亚洲高清中文字幕视频| 在线播放免费播放av片| 久久se精品一区精品二区国产| 美女被搞在线观看一区二区三区| 亚洲国产精品久久久av| 日韩成人大屁股内射喷水| 亚洲色图视频在线观看网站| 亚洲女人天堂成人av在线| 性做久久久久久免费观看| 国内精品无码一区二区三区| 无码中文字幕专区一二三| 精品综合久久88少妇激情| …日韩人妻无码精品一专区 | 免费网站内射红桃视频| 亚洲不卡中文字幕无码| 国产精品自在在线午夜出白浆| 户外精品一区二区三区| 亚洲人成无码网站在线观看| 久久久综合九色合综国产| 麻豆成人久久精品二区三区免费| 欧美日韩精品一区二区视频| 久久精品国产亚洲av电影| 一区二区三区岛国av毛片| 狂猛欧美激情性xxxx大豆行情| 成av人片一区二区三区久久| 狠狠躁夜夜躁人人爽天天不卡| 亚洲一区二区三区偷拍厕所|