時間:2017-08-15 來源:互聯網 瀏覽量:
來自微軟,北京大學,中國電子科技大學的研究人員已經開發出一種可以自動修複軟件係統缺陷而無需人為幹預的係統。
這項研究始於微軟和劍橋大學的研究,他們宣布了一個從問題輸入/輸出產生程序的DeepCoder算法。
DeepCoder仍然非常有限,但新的研究要求計算機程序是否可能識別和修複現有程序中的錯誤。
由精確狀態係統(ACS)發明的係統旨在自動修複軟件係統中的缺陷,而無需人為幹預。
然而現有的自動化程序修複工具,他們生產的補丁的“精度”低。大多數情況下,主流程序修複方法的精確度小於10%,甚至改進方法的準確度也不到40%。問題是用於將更改標記為“正確”的測試,並不意味著通過測試意味著程序實際上是正確的。而這種最新的方法在Defects4J基準測試中達到80%的“正確性”評級。
ACS通過使用多個信息源,特別是互聯網上存在的“大量代碼”,實現了改進的結果。研究人員側重於條件綜合。在以前的工具中添加了三種新的信息源。首先,通過了解在“if”條件下應該使用本地上下文中的哪些變量給出的信息,以及使用基於變量之間的依賴關係的排序方法。
第二個變化依賴於可以使用API文檔來指導修複過程的觀察。基於此,使用文檔分析技術進一步過濾變量。自然語言分析技術用於分析Javadoc,然後應用程序使用Javadoc中的信息來過濾不正確的補丁。
最後,最重要的是,ACS對互聯網上的開源程序進行統計分析,發現對變量進行操作的條件概率,並進一步生成正確的補丁。
描述ACS係統的文件“程序修複的精確條件綜合”已發表於ICSE 2017。作者包括北京大學、中國電子科技大學和微軟研究院的研究人員。