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

基于設計層次優化的軟件自動化重構思考

2018-01-04 11:06:12張紅華
電腦知識與技術 2018年30期
關鍵詞:自動化

張紅華

摘要:既有軟件重構工具大多數旨在解決局部設計或編碼問題,并未涉獵設計層面。而以搜索為基礎的重構方法雖然把改善代碼度量指標作為重構目標,但是,卻不是針對軟件的層次化設計。對此,本文提出了一種全新的基于搜索的軟件自動化重構方法,其通過利用以設計結構矩陣為載體的軟件模塊層次化度量方法,可以自動生成能夠獲取最優軟件模塊化設計的重構相關策略。

關鍵詞:設計層次優化;軟件重構;自動化

中圖分類號:TP3 文獻標識碼:A 文章編號:1009-3044(2018)30-0276-02

1 軟件自動化重構的意義

1.1 持續糾偏和改進軟件設計

重構與設計之間是相互輔助的關系,兩者之間是互補的。即使已經重構,也依舊需要進行預先設計,但是不需要是最優化設計,只需要制定可行的、合理的解決方案即可。而不進行重構,那么程序設計就會發生質變,導致無法控制。重構實際上就是進行代碼整理,讓帶有發散傾向的代碼及時回歸到本位狀態。軟件的生命周期一般都需要大量的程序員進行維護工作,這就會導致后續被人為忽視。而為了保證代碼容易理解,需要在實現軟件功能的基礎上,進行一系列相關工作,即清晰的排版布局,簡要的注解,有效的命名。而命名是其中非常重要的一個環節,對此,可以采取暗喻命名的方法,也就是以對象實現的功能依據,使用形象化或者擬人手法進行命名。

1.2 有助于發現隱藏的代碼缺陷

在進行代碼重構的時候,需要對既有代碼有深刻的了解。避免在寫下程序之后,依舊對自己的程序邏輯缺乏理解。對此,一般可以進行代碼重構,以此深化對既有設計的深刻了解,一旦發現其中存在的隱患,及時采取措施,構建更加優質代碼。

1.3 有利于進一步提高編程效率

在發現解決問題是一件非常復雜的事情時,一般并非是問題自身所導致的,而是所選擇的方法不正確,太過繁雜的設計會直接造成編碼惡性重復。對此,有效改善設計,提高可讀性,減緩缺陷是非常有必要的。較好的設計是成功的重要基礎,雖然進行重構優化設計會導致速度有所下降,但是,其后續優勢才是最關鍵的。

2 基于搜索的軟件自動化重構

基于搜索的軟件自動化重構是一種軟件自動化重構研究中的普遍思想,其將軟件重構抽象化,促使其成為屬性、方法、類三者之間的組合優化,并通過搜索算法進行求解。Cinnéide通過利用基于搜索的軟件自動化重構方法,實現了重構工具Code-Imp,其能夠重構軟件的設計層面,實現屬性、方法、類之間的多種重構方式,即添加、取消或者代替繼承關系。同時,此工具利用爬山、模擬退火、遺傳等算法做了進一步的優化搜索。Cinnéide工作不僅有效實踐了基于搜索的軟件自動化重構,還對軟件度量值間的彼此聯系做了詳細的對比分析。通過采取部分度量值進行研究,對比重構時度量值的變化,并對度量值間的關系與差異進行了考察。但是,Cinnéide并未深入探究軟件模塊層次化的度量。對此,本文應側重于對具備較好模塊層次化結構的代碼進行適當調整。

3 基于設計層次優化的軟件自動化重構的基本思想

DSM Re factoring主要是利用改變代碼間的依賴關系,改善軟件層次化結構,即輸入某項目源代碼,輸出代碼重構建議。通過源代碼間的依賴關系,獲得程序元素間的依賴關系。通過調整類和成員間的映射關系,提高源代碼的模塊化程度。利用遺傳算法和DSM矩陣下的模塊層次化度量法,計算類成員對類的最優映射關系。對既有類成員與類的映射關系,和遺傳算法計算的最優類成員與類的映射關系進行對比分析,以此生成重構建議。把Java類間的依賴關系作為軟件模塊化和層次結構的重要根據,其主要是通過類屬性與方法的相互依賴所產生,所以,可以適當改變類成員和類的映射關系,以此改變Java類間的依賴關系,進而改變項目層次結構。

4 基于設計層次優化的軟件自動化重構算法過程

基于基本思想,利用遺傳算法改變類成員與類間的映射關系,計算并對比軟件結構所對應的模塊層次化度量值,以此優化軟件結構。重構遺傳算法的搜索空間是類成員和類間映射的所有可能方式,軟件模塊層次化信息利用DSM進行描述,通過值L進行度量。

4.1 目標函數

4.1.1 度量

目標函數主要是以DSM模型與DRH理論為基礎的,給定類成員與類的映射關系為個體,通過類成員的依賴關系,獲得其在類間的依賴關系。利用DSM,行與列代表的設計變量都是Java類,變量間的依賴關系就是Java類間的依賴關系,主要是通過類的屬性與方法間的調用關系進一步決定。每個Java類與其自身的依賴關系不需考慮,就DRH理論為基礎,DSM的行與列可以重新排序,以此展示層次化結構,其中上下層之間是依賴關系。而軟件層次結構的好壞是由度量值L決定的,DSM的L值是通過公式加以定義:

L=4×l2-4×n-m

其中,l代表行數,即Java類個數,n代表右上角1的數量,m代表左下角與層次化約束不相符的1的數量。在確定Java類個數的前提下,L值越大,表示軟件層次化結構越好。

1)反向依賴

4×n主要針對DRJ的首個特征,DSM沿對角線形成的右上角為空。在DSM中,模塊依賴是偏序的,所以,右上角出現依賴關系,代表著軟件出現了反向依賴模塊,不符合軟件層次化要求,會造成L有所下降。因為DRH的偏序要求非常有必要,違反此要求的軟件層次化結構很容易被腐化,因此,可以對此依賴關系應賦予更高的權重,其會對L值造成直接性影響。

2)跨層依賴

m針對的是另一層次化約束,其是針對DRH另一特征的,也就是在設計時,n層單純依賴于1到n-1層。模塊進行層次劃分,依賴關系則只存在于相鄰層次之間。在具備較好層次結構的軟件設計劃分成若干層次后,設計的n層只能單純依賴于n-1層。

4.1.2 DSM矩陣L值計算

利用迭代方式計算代碼結構DSM的度量值,首先聚類DSM的設計變量,將相互依賴的變量劃分成同一模塊。其次對模塊進行層次劃分,將相鄰的獨立模塊劃分到同一層次,并計算度量值,在此計算中,采取的方式是對所有可能的模塊排列順序進行一次性層次劃分,并對度量值進行計算,以此保證度量值的精確性。作為DSM最終的度量值,最大值和設計變量的排列順序都需要詳細記錄,而且度量值處于最大時,重構算法則直接結束。在聚類后,需要根據模塊排列順序對此進行層次劃分,連續的兩兩獨立模塊都歸屬于相同層次。在計算度量值的時候,實際算法利用的DSM的每行所代表的都是劃分后的層次。每個層次都利用大括號表示,而數字則代表層次中涵蓋的Java類文件,數字表示一層次中依賴于另一次層次的Java類文件數量。

4.2 選擇算子

在遺傳算法中,選擇算子主要是為了從同代個體中選擇合適的個體產生下代,目標是將優勝個體遺傳到下代,或者讓優勝個體利用產生后代的方法遺傳。選擇算子就是為了從同代軟件結構中,選擇對應的最大度量值產生下代。在DSM Re factoring中,選擇算子是最基礎的比例選擇算子,同代個體被選中的概率與所對應的度量值的比例,L值越大,被選中的概率越大。

4.3 交叉算子

交叉算子在遺傳算法中的作用,就是提高算法的搜索水平與能力。通過重組選擇算子的兩個父代個體部分結構,產生下代新個體。交叉算子的作用主要就是交叉重組選擇算子的父代軟件結構,以生成新軟件結構,在空間內搜索最優解。DSM Re factoring利用均勻交叉法,其實踐概率為0.5,就此可知,在兩個父代個體產生的下代個體軟件結構內部,來自父代個體的軟件結構各占50%。兩個父代個體代表兩種軟件結構,分別以類成員列表加以表示,其中每個成員都詳細記錄了所在的Java類,在執行交叉前,克隆父代個體,并對其列表中的相關成員進行操作,其一,對兩個克隆個體的成員所在類的一致性進行比較分析,如果一致,則結束操作;其二,在兩個克隆個體中,成員所在類不一致,隨機生產布爾值,值如果是真實的,則把克隆個體的成員所在Java類進行調換,相反則結束操作。據此,兩個克隆個體轉換成了新個體,經過變異算子操作之后,則會成為下代個體。

4.4 變異算子

變異算子主要是通過改動個體結構,提高遺傳算法種群的多元性,從而防止出現遺傳算法朝向局部最優解靠攏的現象。交叉算子的作用是改變需變異軟件結構的部分結構,以此產生新的軟件結構。DSM Re factoring中所使用的變異算子設計流程為:依據變異概率判斷個體變異的必要性,從個體類成員列表中,隨機選擇屬性或方法,將其依據既定概率移動到另一類中去。

5 結語

綜上所述,目前我國在軟件自動化重構方面的研究各式各樣,但是既有重構工具大多注重局部代碼重構,或者度量值重構,幾乎不會對提升代碼模塊化質量的全方位重構進行考慮。因此,本文實現了基于設計層次優化的軟件自動化重構,此方法是以遺傳算法和DSM矩陣度量作為基礎,對類成員與類的映射關系進行適當調整,并提出相關重構建議,其具有明顯的優勢,值得大力推廣與應用。

參考文獻:

[1] 劉嘉玥.基于啟發式搜索的軟件測試數據的自動生成[D].天津大學,2012.

[2] 王贊,樊向宇,鄒雨果等.一種基于遺傳算法的多缺陷定位方法[J].軟件學報,2016,27(4):879-900.

[3] 陶彬賢.CODEREBUILDER:一種自動化Java并發程序重構工具的研究與實現[D].南京航空航天大學,2014.

[4] 高東靜,林云,彭鑫等.面向設計層次優化的軟件自動化重構[J].計算機應用與軟件,2017,34(10):7-13.

【通聯編輯:張薇】

猜你喜歡
自動化
國內焊接設備市場現狀及發展趨勢研究
經營者(2016年12期)2016-10-21 07:39:01
供電企業電力自動化主站系統研究
錦界煤礦連采膠帶機集控系統的介紹
供熱站自動控制系統中PLC的應用
AGV小車在白酒行業自動化立體倉庫中的應用
中國市場(2016年36期)2016-10-19 03:40:15
電氣工程及其自動化問題與對策
我國機械設計制造及其自動化的現狀及發展趨勢
淺論節能設計理念在機械制造與自動化中的應用
簡析火力發電廠熱工自動化儀表應用及故障排除方法
配網自動化實用化模式建設及系統運行
主站蜘蛛池模板: 日韩成人在线网站| 99精品久久精品| 久久青草免费91线频观看不卡| 国产毛片基地| 亚洲v日韩v欧美在线观看| 国产成人欧美| 亚洲日韩精品伊甸| 国产亚洲视频免费播放| 国产人人射| 四虎成人精品在永久免费| 国产精品视频系列专区| 婷婷丁香在线观看| 久996视频精品免费观看| 国内精品一区二区在线观看| 免费国产黄线在线观看| 在线观看免费国产| 成人福利在线视频| 免费人成又黄又爽的视频网站| 亚洲第一成网站| 在线播放国产一区| 国产午夜人做人免费视频中文 | 91精品啪在线观看国产| 久久久久久午夜精品| 久久国产精品麻豆系列| 中日无码在线观看| 国内精品免费| 国内黄色精品| 欧美激情二区三区| 国产高清色视频免费看的网址| 五月综合色婷婷| 久草视频中文| 国产亚洲精品无码专| 免费无码又爽又刺激高| 在线免费不卡视频| 国产爽爽视频| 国产一二三区在线| 免费观看男人免费桶女人视频| 亚洲水蜜桃久久综合网站| 亚洲欧美h| 麻豆精品国产自产在线| 久青草国产高清在线视频| 欧美区一区| 亚洲精品波多野结衣| 亚洲最新网址| 狠狠做深爱婷婷综合一区| 色网站在线免费观看| 亚洲伊人电影| 国产色图在线观看| 国产伦片中文免费观看| 中文字幕伦视频| 五月婷婷中文字幕| 日本三级欧美三级| 日本午夜视频在线观看| 欧美三级不卡在线观看视频| 中文无码影院| 内射人妻无套中出无码| 精品人妻无码中字系列| 国产91全国探花系列在线播放| 噜噜噜综合亚洲| 在线国产三级| 日韩精品专区免费无码aⅴ| 国产肉感大码AV无码| 91精品啪在线观看国产| 精品一区二区三区自慰喷水| 无码aⅴ精品一区二区三区| 亚洲国内精品自在自线官| 精品无码日韩国产不卡av | 日韩精品欧美国产在线| 国产又粗又猛又爽| 欧美午夜在线播放| 19国产精品麻豆免费观看| 无码久看视频| 91视频日本| 免费福利视频网站| 国产无遮挡裸体免费视频| 伊人蕉久影院| 亚洲天堂成人在线观看| 国产欧美日韩一区二区视频在线| 中文字幕人成乱码熟女免费| 亚洲精品第一在线观看视频| 国产成人亚洲精品无码电影| 国产永久在线观看|