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