[發明專利]一種基于API使用概率模型的程序合成方法有效
| 申請號: | 202011180092.8 | 申請日: | 2020-10-29 |
| 公開(公告)號: | CN112162745B | 公開(公告)日: | 2022-06-21 |
| 發明(設計)人: | 董威;劉斌斌;尹良澤;陳立前;陳振邦;王戟 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F8/35 | 分類號: | G06F8/35;G06F40/284;G06F40/216;G06F11/36;G06F16/901;G06K9/62;G06N5/02;G06N7/00 |
| 代理公司: | 湖南兆弘專利事務所(普通合伙) 43008 | 代理人: | 劉暢舟 |
| 地址: | 410073 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 api 使用 概率 模型 程序 合成 方法 | ||
本發明公開了一種基于API使用概率模型的程序合成方法,包括:計算任務描述與指定的范圍庫中每個API在網絡資源中對應文本的相似度后求得API與任務相關度的概率信息,根據API與任務相關度的概率信息為可達圖模型的每條邊添加概率得到概率的可達圖模型;從每個節點概率最大的邊開始在概率的可達圖模型上搜索可達路徑,根據可達路徑的API調用序列構造程序框架,對程序框架進行填充得到候選程序,對候選程序的正確性進行驗證,直到通過所有測試用例后將候選程序作為結果返回。本發明通過在可達圖模型的每條邊添加概率為搜索最佳的可達路徑提供依據,使得API調用序列任務相關性的概率較高,從而提高程序合成的效率。
技術領域
本發明涉及軟件工程領域,尤其涉及一種基于API使用概率模型的程序合成方法。
背景技術
計算機軟件目前廣泛應用于各行各業,軟件的規模和復雜性也越來越高?;ヂ摼W技術的快速發展給軟件工程領域帶來了新的機遇和挑戰。一方面,互聯網技術的發展將軟件的生態環境變得更加開放、動態、復雜并且持續演化,使得軟件系統的規模和復雜性在急劇增長,對傳統的軟件開發方法提出了嚴峻的挑戰;另一方面,互聯網技術的發展催生了以Linux等開源軟件、GitHub等開源社區、TopCoder等眾包軟件開發以及Stack Overflow等編程問答網站為代表的新型群體化軟件開發實踐平臺,為人類個體之間的交互和協作提供了更好的機會。因此,研究如何充分利用互聯網中群體的智慧和能力,以有效提高軟件開發的效率和質量具有非常重要的意義。
近年來,隨著大量開源軟件項目與開源社區的發展,目前在互聯網上已經存在著數十億行的各類程序代碼,甚至在很多大型企業內,積累的代碼量也已經非常巨大。人們認識到這些大量代碼中存在著各種知識,尤其是眾多已被廣泛使用、高質量的軟件代碼。這些成果都是前人智慧的結晶,如果能夠充分加以利用,將為軟件開發工作提供很大幫助。正如互聯網中海量的數據使得大數據的應用成為熱點,如今互聯網中大量的代碼和資源催生了利用大規模代碼資源庫中已有的知識來進行智能化軟件開發的新思路。
程序自動構造也常稱為代碼自動生成,一直以來被認為是提高軟件開發自動化程度和最終質量的重要方法,得到了學術界和工業界的廣泛關注。程序自動構造是指利用某些機制或方法自動地為計算機軟件產生源代碼以達到機器編程的目的。該方法使得程序員能夠在更高的抽象層次上進行程序的設計工作,極大地提高程序開發的效率。另外,自動生成的程序代碼具有良好的編程規范,不容易出現錯誤,有助于提高軟件開發的質量,同時也能夠降低軟件后期維護的成本。
傳統的程序自動構造技術多是采用以形式化方法為基礎的技術,主要有模型驅動的軟件開發以及基于邏輯規約的程序綜合等等。模型驅動的軟件開發能夠降低軟件開發的復雜性,利用領域特定模型語言(Domain-Specific Modeling Languages)描述系統,然后利用轉換引擎和生成器自動生成各種類型的軟件制品(主要指程序代碼)?;谶壿嬕幖s的程序綜合利用用戶提供的規約,通過定理證明等形式化方法來產生程序代碼。這些傳統的方法要求開發人員專注于抽象層次更高的模型設計以及規約的書寫,將編寫代碼的工作交由機器完成,能夠給軟件開發帶來極大便利,提高工作效率。但同時我們也看到傳統的程序自動構造方法存在著一些局限:第一是依然依賴開發人員設計復雜的模型架構或者邏輯規約,對開發人員要求較高;第二是特定模型面向的需求空間有限,通用性差,當需求發生改變時,復用率很低,需要重新進行開發工作;第三是對于大規模復雜軟件,傳統的程序自動構造方法能力不足,難以有效處理。
程序合成是程序自動構造方法中的一種,它一直以來被認為是提高軟件開發自動化程度和最終質量的重要方法,得到了學術界和工業界的廣泛關注。程序合成是指利用某些機制或方法自動地為計算機軟件產生源代碼以達到機器編程的目的。該方法使得程序員能夠在更高的抽象層次上進行程序的設計工作,極大地提高程序開發的效率。另外,自動合成得到的程序代碼具有良好的編程規范,不容易出現錯誤,有助于提高軟件開發的質量,同時也能夠降低軟件后期維護的成本。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011180092.8/2.html,轉載請聲明來源鉆瓜專利網。





