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