演講嘉賓 | 彭 鑫
回顧整理 | 廖 濤
排版校對 | 李萍萍
嘉賓簡介
彭鑫,復旦大學計算機科學技術學院副院長、軟件學院副院長、教授、博士生導師,中國計算機學會軟件工程專委會副主任,主要研究方向包括軟件智能化開發與運維、泛在計算軟件系統、智能網聯汽車等。獲得2016年NASAC青年軟件創新獎,多次獲得IEEE Transactions on Software Engineering年度最佳論文獎、ACM SIGSOFT杰出論文獎、IEEE TCSE杰出論文獎等論文獎項。
內容來源
第一屆開放原子開源基金會OpenHarmony技術峰會——開發者工具分論壇
視頻回顧
打開 嗶哩嗶哩APP 搜索 OpenHarmony-TSC 視頻更清晰
正 文 內 容
軟件開發是一個知識密集型活動,涉及API、算法、業務知識、樣例代碼以及可復用庫等開發資源。然而,這些軟件開發知識和資源缺乏統一的規范化描述,難以被方便地獲取和復用。ChatGPT問世之前,學術界與工業界在智能輔助開發領域有哪些研究成果?ChatGPT爆火以后,我們又有哪些認識和思考呢?復旦大學計算機科學技術學院副院長、軟件學院副院長,中國計算機學會軟件工程專委會副主任彭鑫在第一屆OpenHarmony技術峰會上分享了精彩觀點。
智能輔助開發的一個典型場景是基于深度學習的代碼智能化推薦。以代碼大數據作為輸入,通過深度大模型訓練,再基于訓練結果進行微調或提示,最終在端側實現代碼搜索、代碼推薦、代碼生成、注釋生成、缺陷預測和修復等能力。在ChatGPT火出圈之前,主要的代碼智能化推薦產品有Copilot和AlphaCode。其中,Copilot已經實現了整函數和整方法的代碼推薦,AlphaCode在編程競賽中能夠達到人類能力的普遍水平。盡管ChatGPT的強大推薦和人機交互能力讓我們對AI和大數據深度學習產生了很多聯想,但目前大數據深度學習的思路仍存在一定的局限性。
Copilot
目前,大數據深度學習的主要思路是追求更多的數據、更大的模型、更強的算力、更好的代碼表示方法、更多元的學習范式,以此獲得更好的學習效果。而針對軟件開發的本質性困難(如:需求與設計的開放性和創造性問題、領域的多樣性和差異性問題等本質困難),以及開發人員的理解和決策問題(如:開發人員如何針對推薦內容進行選擇、判斷、理解和消化,如何開展長期維護)等方面,大數據深度學習可能并不是萬能的。大數據深度學習思路探討的根本問題,源于不同路線的選擇:(1)AI領域的端到端思路:根據輸入(功能描述)直接產生推薦結果(代碼片段或線性的代碼補全);(2)軟件工程領域的人機協作思路:適應程序員的思考過程,從需求澄清到解決方案逐步精化,以交互的方式融入人的需求理解和經驗判斷。
軟件開發最大的浪費是知識的浪費、重復思考的浪費。在實際的軟件開發過程中,我們經常遇到如下場景:重復編寫的代碼、反復揣摩的設計意圖、重復犯過的錯誤;它們(代碼)曾經在腦海中浮現過、在交談討論和聊天記錄中出現過,甚至曾經被記錄過,但是無法在需要的時候出現;文檔基本不可靠,要么過時要么從來沒有存在過等。從長期來看,如何深層次、系統性地解決智能化軟件開發問題呢?建立共建、共享,與代碼持續協同演化的軟件開發知識平臺,能夠大幅提升軟件開發效率,保障代碼質量,促進軟件開發項目成員間的相互協作。例如,工業界“活文檔”的實踐上,實現了文檔知識和項目始終保持同步、文檔內容簡短可理解以及文檔知識集體所有等功能;在學術界,也提出了按需生成文檔的思考,即基于各種結構化和非結構化軟件制品,通過知識抽取按需生成高質量文檔。
軟件開發知識共享平臺實踐與思考
在ChatGPT問世之前,彭鑫教授所在團隊基于知識思路的智能軟件開發已經有相關嘗試和產品:
(1)API/軟件知識圖譜構建:通過API文檔中的API功能、特性、使用指南與約束等,并輸入軟件代碼庫的API樣例、軟件開發問答網站的API討論等資源,結合通用知識圖譜的概念關系進行語義標注,形成API知識圖譜或軟件開發知識圖譜,開發端側軟件開發問答機器人等,以此輔助軟件開發,提高開發效率;
API知識以及API知識圖譜
(2)基于知識圖譜的代碼概念鏈接:通過將代碼段中的關鍵內容建立概念鏈接,使開發者在軟件開發過程中,能夠便捷地了解到相關代碼的背景知識;此外,基于概念鏈接,對搜索出的代碼列表提供多方面解釋,如概念解釋、概念關聯路徑以及補充建議等,還能夠幫助開發者理解和篩選所需的代碼片段;
代碼概念鏈接
(3)基于事理圖譜的代碼異常修復:通常代碼異常可能由多種原因造成,基于開發者在開源社區上求助的代碼異常案例,抽取其求助目的、環境、代碼片段、異常癥狀以及報錯棧等內容,基于預訓練語言模型進行提示學習,構建事理圖譜,進而實現通過交互式問答獲取異常報錯相關信息,給出推薦的異常解決方案。
事理知識圖譜
在智能軟件開發領域,ChatGPT具備代碼解釋、代碼生成以及代碼修復等能力,以人機對話的形式實現了多種智能化開發輔助功能,效果已經超過了現有手段。ChatGPT的強大能力背后,是否存在一些問題和可能的改進方向呢?彭鑫教授認為有以下幾點:
通過提供相關真實項目代碼、技術文檔、人類問答等論據,增強推薦內容的可信性
結合一些專用模型或“小數據”方法改進,提高長尾及冷啟動問題回答的準確性
將大模型與搜索引擎、知識圖譜等傳統信息和知識獲取方法相結合,緩解知識更新問題
在大模型的基礎上有機融入特定領域的軟件知識和代碼,從而支持特定領域軟件開發問題
在大模型的基礎上實現智能化的開發工具集成和反饋融合,讓工具具有面向軟件開發任務現場的“具身智能”
其中,特點領域/項目軟件開發知識平臺的開發是目前學術界和工業界的研究熱點。如何協同機器智能、代碼知識和專家知識呢?需要基于專家知識和代碼規范管理,建立與代碼雙向追蹤并同步演進的代碼知識平臺,探索以代碼為核心、適應軟件開發特點的知識眾包模式。通過覆蓋實現、設計、需求等不同層面的代碼知識平臺實現系統性開發知識復用。此外,在軟件研發階段,通過建立基于DevOps流水線的軟件研發知識圖譜,能夠實現特性、缺陷、測試用例等開發制品與代碼及其變更過程的全程追溯和基于知識的描述。
特定領域 / 項目軟件開發知識平臺
得益于軟件代碼及開發數據的大量積累和人工智能技術的發展,以及近期大模型和預訓練模型方面取得的進展,使智能化軟件工程研究與實踐成為熱點。但同時,智能化軟件工程實踐落地需要充分考慮軟件工程實踐以及特定領域的特點。未來,大模型將成為智能化軟件開發的重要基礎設施,改變現有的知識獲取、抽取和利用方式;智能化輔助開發的主要問題變為如何在開發任務現場與大模型之間建立高效的雙向交互管道;下一代IDE將成為融合軟件開發項目和任務上下文及開發工具的智能化軟件開發統一門戶。期待與大家一起關注人工智能和軟件工程領域相關進展,共同貢獻國產化力量。
E N D
點擊下方閱讀原文獲取演講PPT。
關注我們,獲取更多精彩。
審核編輯 黃宇
-
OpenHarmony
+關注
關注
25文章
3747瀏覽量
16588
發布評論請先 登錄
相關推薦
評論