程序合成研究進展
發(fā)布時間:2021-06-07 16:36
在軟件工程領(lǐng)域中,程序自動合成是一個非常核心的研究方向,并且在軟件開發(fā)活動如此普及的社會中有望成為未來軟件工程變革的核心技術(shù)。隨著多年該領(lǐng)域的研究發(fā)展,已經(jīng)衍生出了很多種不同的流派與技術(shù)路線。本文針對程序合成領(lǐng)域的發(fā)展現(xiàn)狀與技術(shù)研究進展做了綜合敘述,并探究目前程序合成領(lǐng)域所面臨的挑著與未來一段時間內(nèi)需要解決的問題。
【文章來源】:軟件. 2019,40(04)
【文章頁數(shù)】:6 頁
【部分圖文】:
程序合成方法分類Fig.1Classificationofprogramsynthesis
第40卷第4期軟件《軟件》雜志歡迎推薦投稿:cosoft@vip.163.com26更多的挑戰(zhàn),包括需要克服自然語言與程序需求之間的差距和程序需求與實際程序代碼之間的鴻溝。2程序合成的關(guān)鍵要素程序合成有三個關(guān)鍵要素[1],用戶意圖表述,搜索空間描述以及設(shè)計合適的搜索技術(shù)。用戶意圖表述有多種方式,邏輯規(guī)約,輸入輸出數(shù)據(jù)對,程序路徑以及自然語言等。該如何選擇不同的需求描述取決于具體的任務(wù)背景。邏輯規(guī)約用來描述程序輸入輸出間的邏輯關(guān)系,可以精確又簡明的描述程序所遵循的規(guī)范,但是對于用戶來說很難寫出完整的程序邏輯規(guī)約。終端用戶通常不如專家的編碼水平,因此更傾向于提供自然性的需求描述如自然語言等。搜索空間通常需要在需求符合性和程序合成效率間做一個平衡。一方面程序搜索空間需要足夠大到能夠囊括用戶需求所有可能的程序,另一方面為了提升程序合成的效率,需要采取更有效的搜索方法將搜索空間限定在小的范圍內(nèi)。例如搜索空間可以被限定為所有操作組成空間的一個子集,或者在一個領(lǐng)域特定語言的范圍內(nèi)。搜索技術(shù)與排序技術(shù)類似,目的是如何更有效的搜索出與需求接近的結(jié)果程序等。常見的搜索技術(shù)有枚舉搜索、基于約束求解的搜索或者兩者的結(jié)合等等。枚舉搜索將所有可能的程序按照某個順序一一列舉,通常效率較低,因此更常見的發(fā)方法是在傳統(tǒng)的枚舉搜索的基礎(chǔ)上加上啟發(fā)式的剪枝方法來提升搜索效率;诩s束求解的搜索通常分為兩個過程,約束生成過程和具體求解過程。約束生成過程是將需求解程序搜索空間用邏輯描述其規(guī)范并轉(zhuǎn)換成約束的過程,生成約束通常需要對程序可能的控制流以及控制流下行為進行編碼。求解約束的過程是在約束創(chuàng)建完成后,在約束所描述的搜索空間內(nèi)按照某種方式列舉可?
本文編號:3216926
【文章來源】:軟件. 2019,40(04)
【文章頁數(shù)】:6 頁
【部分圖文】:
程序合成方法分類Fig.1Classificationofprogramsynthesis
第40卷第4期軟件《軟件》雜志歡迎推薦投稿:cosoft@vip.163.com26更多的挑戰(zhàn),包括需要克服自然語言與程序需求之間的差距和程序需求與實際程序代碼之間的鴻溝。2程序合成的關(guān)鍵要素程序合成有三個關(guān)鍵要素[1],用戶意圖表述,搜索空間描述以及設(shè)計合適的搜索技術(shù)。用戶意圖表述有多種方式,邏輯規(guī)約,輸入輸出數(shù)據(jù)對,程序路徑以及自然語言等。該如何選擇不同的需求描述取決于具體的任務(wù)背景。邏輯規(guī)約用來描述程序輸入輸出間的邏輯關(guān)系,可以精確又簡明的描述程序所遵循的規(guī)范,但是對于用戶來說很難寫出完整的程序邏輯規(guī)約。終端用戶通常不如專家的編碼水平,因此更傾向于提供自然性的需求描述如自然語言等。搜索空間通常需要在需求符合性和程序合成效率間做一個平衡。一方面程序搜索空間需要足夠大到能夠囊括用戶需求所有可能的程序,另一方面為了提升程序合成的效率,需要采取更有效的搜索方法將搜索空間限定在小的范圍內(nèi)。例如搜索空間可以被限定為所有操作組成空間的一個子集,或者在一個領(lǐng)域特定語言的范圍內(nèi)。搜索技術(shù)與排序技術(shù)類似,目的是如何更有效的搜索出與需求接近的結(jié)果程序等。常見的搜索技術(shù)有枚舉搜索、基于約束求解的搜索或者兩者的結(jié)合等等。枚舉搜索將所有可能的程序按照某個順序一一列舉,通常效率較低,因此更常見的發(fā)方法是在傳統(tǒng)的枚舉搜索的基礎(chǔ)上加上啟發(fā)式的剪枝方法來提升搜索效率;诩s束求解的搜索通常分為兩個過程,約束生成過程和具體求解過程。約束生成過程是將需求解程序搜索空間用邏輯描述其規(guī)范并轉(zhuǎn)換成約束的過程,生成約束通常需要對程序可能的控制流以及控制流下行為進行編碼。求解約束的過程是在約束創(chuàng)建完成后,在約束所描述的搜索空間內(nèi)按照某種方式列舉可?
本文編號:3216926
本文鏈接:http://sikaile.net/kejilunwen/sousuoyinqinglunwen/3216926.html
最近更新
教材專著