復(fù)雜軟件系統(tǒng)的重構(gòu)技術(shù):現(xiàn)狀、問題與展望
發(fā)布時(shí)間:2021-10-27 07:19
軟件重構(gòu)是改善軟件質(zhì)量的一種重要手段,它在不改變軟件外部行為特性的情況下,通過調(diào)整軟件內(nèi)部結(jié)構(gòu)來提高軟件的可理解性、可維護(hù)性和可擴(kuò)展性。然而,隨著開源軟件的迅猛發(fā)展,軟件的規(guī)模和復(fù)雜程度日益增加,現(xiàn)有的重構(gòu)技術(shù)在應(yīng)對規(guī)模龐大且復(fù)雜的軟件系統(tǒng)時(shí),重構(gòu)效果并不如意。因此,提高重構(gòu)技術(shù)的可擴(kuò)展性一直是軟件工程領(lǐng)域研究的熱點(diǎn)。從技術(shù)負(fù)債角度出發(fā),探究重構(gòu)時(shí)機(jī),思考重構(gòu)技術(shù)對軟件質(zhì)量的深入影響,明確重構(gòu)技術(shù)旨在尋找重構(gòu)代碼的自動(dòng)化方法,從而降低維護(hù)成本,提高代碼質(zhì)量。文中對工程實(shí)例進(jìn)行分析并對文獻(xiàn)進(jìn)行梳理,調(diào)研了自2010年至今國內(nèi)外96篇相關(guān)領(lǐng)域的文獻(xiàn),嘗試以復(fù)雜系統(tǒng)的視角對這些研究工作進(jìn)行歸納、比較,提煉總結(jié)軟件重構(gòu)領(lǐng)域的研究方向與技術(shù)方法,探討重構(gòu)技術(shù)研究中的特點(diǎn)與難點(diǎn),思考重構(gòu)技術(shù)研究中存在的問題及未來的研究方向,對軟件重構(gòu)技術(shù)的研究趨勢進(jìn)行了展望。
【文章來源】:計(jì)算機(jī)科學(xué). 2020,47(12)北大核心CSCD
【文章頁數(shù)】:10 頁
【部分圖文】:
軟件重構(gòu)過程
重構(gòu)序列的組合所形成的解空間十分龐大,因此從龐大的解空間中尋求一個(gè)最優(yōu)的重構(gòu)序列是十分困難的,而這正是搜索算法的優(yōu)勢所在。如圖2所示,首先,針對需要被改進(jìn)的軟件系統(tǒng),將此類系統(tǒng)轉(zhuǎn)換成軟件組件(類或方法)的集合或者抽象表示為圖形的形式并作為算法的輸入;然后,使用重構(gòu)建議、軟件質(zhì)量度量指標(biāo)和其他信息作為算法的指導(dǎo)過程,并且將所有的重構(gòu)操作映射為向量作為解決方案的表現(xiàn)形式;最后,利用適應(yīng)度函數(shù)(Fitness Function)動(dòng)態(tài)評(píng)估解的優(yōu)劣,在搜索收斂至最優(yōu)或局部最優(yōu)時(shí),即可得到一組最優(yōu)的重構(gòu)序列。在這方面的工作中,Amal等提出了一種基于神經(jīng)網(wǎng)絡(luò)的適應(yīng)度函數(shù),通過遺傳算法手動(dòng)評(píng)估重構(gòu)的解決方案以進(jìn)行少量迭代,然后利用人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練以評(píng)估剩余迭代的重構(gòu)解決方案[40]。在某些重構(gòu)問題中,任何兩個(gè)或多個(gè)目標(biāo)之間可能存在冗余。Dea等提出了一種新的軟件重構(gòu)方法,即PCA-NSGA-II多目標(biāo)重構(gòu)方法。該方法是在PCA-NSGA-II演化多目標(biāo)算法的基礎(chǔ)上改進(jìn)而來的,通過去除冗余來保留沖突目標(biāo),從而避免維數(shù)災(zāi)難[41]。為了解決相互沖突的優(yōu)化目標(biāo),Mkaouer等提出了一種新的重構(gòu)問題表示方法,即將每個(gè)需要改進(jìn)的質(zhì)量屬性視為一個(gè)獨(dú)立的優(yōu)化目標(biāo),利用NSGA-III算法,使用8個(gè)不同的目標(biāo)來評(píng)估重構(gòu)解決方案[42]。
【參考文獻(xiàn)】:
期刊論文
[1]一種基于深度學(xué)習(xí)的上帝類檢測方法[J]. 卜依凡,劉輝,李光杰. 軟件學(xué)報(bào). 2019(05)
[2]基于量子搜索的軟件工程[J]. 吳楠,宋方敏,LI XiangDong. 中國科學(xué):信息科學(xué). 2015(05)
本文編號(hào):3461130
【文章來源】:計(jì)算機(jī)科學(xué). 2020,47(12)北大核心CSCD
【文章頁數(shù)】:10 頁
【部分圖文】:
軟件重構(gòu)過程
重構(gòu)序列的組合所形成的解空間十分龐大,因此從龐大的解空間中尋求一個(gè)最優(yōu)的重構(gòu)序列是十分困難的,而這正是搜索算法的優(yōu)勢所在。如圖2所示,首先,針對需要被改進(jìn)的軟件系統(tǒng),將此類系統(tǒng)轉(zhuǎn)換成軟件組件(類或方法)的集合或者抽象表示為圖形的形式并作為算法的輸入;然后,使用重構(gòu)建議、軟件質(zhì)量度量指標(biāo)和其他信息作為算法的指導(dǎo)過程,并且將所有的重構(gòu)操作映射為向量作為解決方案的表現(xiàn)形式;最后,利用適應(yīng)度函數(shù)(Fitness Function)動(dòng)態(tài)評(píng)估解的優(yōu)劣,在搜索收斂至最優(yōu)或局部最優(yōu)時(shí),即可得到一組最優(yōu)的重構(gòu)序列。在這方面的工作中,Amal等提出了一種基于神經(jīng)網(wǎng)絡(luò)的適應(yīng)度函數(shù),通過遺傳算法手動(dòng)評(píng)估重構(gòu)的解決方案以進(jìn)行少量迭代,然后利用人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練以評(píng)估剩余迭代的重構(gòu)解決方案[40]。在某些重構(gòu)問題中,任何兩個(gè)或多個(gè)目標(biāo)之間可能存在冗余。Dea等提出了一種新的軟件重構(gòu)方法,即PCA-NSGA-II多目標(biāo)重構(gòu)方法。該方法是在PCA-NSGA-II演化多目標(biāo)算法的基礎(chǔ)上改進(jìn)而來的,通過去除冗余來保留沖突目標(biāo),從而避免維數(shù)災(zāi)難[41]。為了解決相互沖突的優(yōu)化目標(biāo),Mkaouer等提出了一種新的重構(gòu)問題表示方法,即將每個(gè)需要改進(jìn)的質(zhì)量屬性視為一個(gè)獨(dú)立的優(yōu)化目標(biāo),利用NSGA-III算法,使用8個(gè)不同的目標(biāo)來評(píng)估重構(gòu)解決方案[42]。
【參考文獻(xiàn)】:
期刊論文
[1]一種基于深度學(xué)習(xí)的上帝類檢測方法[J]. 卜依凡,劉輝,李光杰. 軟件學(xué)報(bào). 2019(05)
[2]基于量子搜索的軟件工程[J]. 吳楠,宋方敏,LI XiangDong. 中國科學(xué):信息科學(xué). 2015(05)
本文編號(hào):3461130
本文鏈接:http://sikaile.net/kejilunwen/sousuoyinqinglunwen/3461130.html
最近更新
教材專著