大模型開啟“軟件工程3.0”全新時代
大模型開啟軟件工程3.0的全新的時代,為什么是3.0?軟件工程劃分為三個里程碑進(jìn)展:1968年發(fā)現(xiàn)一個軟件危機(jī),在軟件開發(fā)過程中不斷出現(xiàn),并不能解決軟件工程各種各樣的問題,所以提出了軟件工程學(xué)科和軟件工程的概念。在這后面近三十年左右的時間,軟件工程學(xué)術(shù)界、工業(yè)界主要是規(guī)劃了各種軟件的開發(fā)過程,包括為了更好地促進(jìn)人與人之間的協(xié)作,把軟件整合過程劃分為需求到設(shè)計到編碼、測試到構(gòu)建到運(yùn)維各個過程,以及過程間每個交互件是什么,要怎么配合。但是到2001年之后發(fā)現(xiàn)由傳統(tǒng)的過程解決不了問題,因為開發(fā)人員的體驗比較差,已經(jīng)影響到效率和軟件質(zhì)量。所以那時候提出敏捷宣言,提出來之后有大量的開源軟件、開源社區(qū)火熱起來,到今天為止很多開發(fā)軟件是基于敏捷化思想開發(fā),而且運(yùn)用大量的開源軟件,包括華為很多代碼是復(fù)用很多開源軟件的。
到了2023年,包括ChatGPT和GTP4技術(shù)出來之后,帶來了新的思路。以前寫代碼是一行行寫,即使復(fù)用別人的開源軟件也是一行行復(fù)用,但是如果有個機(jī)制,通過跟大模型的交互就能寫出代碼,從而完成各種各樣的軟件自評開發(fā),是不是就可以更好地把軟件公司往前推一步,所以就產(chǎn)生軟件工程3.0。
但是3.0和其他2.0、1.0時代最大的區(qū)別就是未來代碼很有可能不需要自己寫,只要關(guān)注自己的核心代碼或者大模型解決不了的代碼,包括測試、構(gòu)建也有可能產(chǎn)生重大的變化。圍繞這個,我們認(rèn)為大模型引發(fā)了新的技術(shù)革命,重新定義了一切。首先大模型重新定義了軟件,之前寫代碼和開發(fā)的模式是從原代碼編寫,以后有可能是基于Prompt之間交互來完成軟件的開發(fā)或生成軟件的形態(tài)。
其次,重新定義了工程。這里的工程不僅僅是軟件工程,還包括前面的系統(tǒng)工程和后端測試工程。說到底怎么用大模型使能人和AI幫助大家寫出更高質(zhì)量的代碼,用更小的人力完成給更快的軟件開發(fā)和更高質(zhì)量的軟件,是重新定義軟件工程要突破的技術(shù)。
再者,大模型重新定義了生態(tài)。在過去開源社區(qū)生態(tài)主要是針對一個開源項目展開,但在未來大模型推廣之后有很多模型、數(shù)據(jù),要怎么構(gòu)建大模型的生態(tài),各種各樣的數(shù)據(jù)集生態(tài),以及圍繞生態(tài)怎么保證生態(tài)是可信的過程。
此外,大模型重新定義了安全。比如大模型新的安全問題,就是所有人都可以用大模型,造成平民化的攻擊,產(chǎn)生很多新的大模型安全問題。還有各種AI Agent流行之后會產(chǎn)生新的安全問題,各種安全體系怎么構(gòu)建也是重大挑戰(zhàn)。
最終圍繞四個重新定義之后,發(fā)現(xiàn)模型會重新定義整個系統(tǒng),包括系統(tǒng)的運(yùn)行行為、交互形式、系統(tǒng)架構(gòu)、規(guī)格、運(yùn)維等各種各樣的方式也會產(chǎn)生變化。
未來軟件工程形態(tài)變化
未來企業(yè)的軟件開發(fā)平臺到底會發(fā)生什么變化?初步的想法:真正實現(xiàn)軟件工程3.0需要做的事情,首先認(rèn)為過去幾十年更多是在做簡易工具、IDE、代碼倉、構(gòu)建數(shù)據(jù)、編譯,甚至編程語言,說到底就是幫助人來開發(fā)出所需要的軟件,而且這些工具之間的相互交互和相互影響是比較小的。隨著大模型推出之后,第一步就是怎么把大模型和傳統(tǒng)的簡易工具整合起來,以大模型作為接口,產(chǎn)生人和大模型不同的交互幫助我們寫代碼、測試代碼、做代碼評審和程序分析。
未來希望在五年之內(nèi)真正做到智能伴侶,智能伴侶和智能工具最大的區(qū)別就是智能伴侶可以跟它進(jìn)行反復(fù)地討論。比如需求不明確,給它一個需求,如果覺得做不了可以跟你討論,讓你提供更多信息,幫你生成測試和設(shè)計文檔。再去看設(shè)計文檔,再跟大模型不斷地討論,只有做到這一步,才能真正形成智能伴侶。我個人覺得目前還主要是做到智能工具的時代,到智能伴侶還有比較長的的路要走。
只有到智能伴侶之后,進(jìn)一步暢想若干年之后的軟件開發(fā)形態(tài)進(jìn)一步發(fā)生變化。有了智能伴侶之后人在環(huán)內(nèi),跟機(jī)器的交付流程可以打通,也就是說未來在一段時間存在三重交付模式:一種是人跟機(jī)器的交互,就是人機(jī)交互;還有各種機(jī)器人之間的交互,機(jī)器人跟機(jī)器人的交互;還有傳統(tǒng)人跟人交互。這個環(huán)中會存在兩種求知市場:一種是人的求知市場,對人的能力要求,不僅是人跟人之間的溝通,還有人跟機(jī)器之間溝通能力也會提升;還有機(jī)器人的市場,很有可能各個廠商都不斷開發(fā)自己的AI Agent或機(jī)器人,和機(jī)器人投入到軟件開發(fā)的過程中,不斷地迭代循環(huán),幫助一起協(xié)同成長。但這只是一個暫時的未來十年的形態(tài)。假設(shè)15年之后,很有可能是人從環(huán)里面挪出來,整個軟件開發(fā)和維護(hù)的過程全部交給機(jī)器來完成,只存在一種交互模式,就是各種機(jī)器人或Agent之間的交互。人的作用就變成兩端,一端是作為最終用戶提出各種各樣的需求交給機(jī)器人組織去完成。然后另外一端就是審計功能,最終機(jī)器人完成的軟件,人來審計是不是達(dá)成功能規(guī)格要求和需求,最終形成人到環(huán)外。
當(dāng)前整個實驗室也在構(gòu)建智能化的工具,進(jìn)入到從簡易工具到智能工具的時代,這是目前整體技術(shù)的方案,當(dāng)然這也是此時此刻的技術(shù)方案,因為大模型的技術(shù)不斷往前推進(jìn)。現(xiàn)在有通用大語言模型,會準(zhǔn)備大量的語料和代碼數(shù)據(jù)、測試數(shù)據(jù),放進(jìn)通用大語言模型做增強(qiáng)訓(xùn)練或增強(qiáng)微調(diào),變成軟件工程的大語言模型。在這個基礎(chǔ)之上把華為公司的編程規(guī)范、程序理論和模型規(guī)則以及各種各樣的收集提示詞放進(jìn)來,進(jìn)一步做領(lǐng)域模型的微調(diào)和人類反饋的強(qiáng)化學(xué)習(xí),形成機(jī)器人向上支撐軟件設(shè)計到編碼、測試、檢視,以及度量的情況。
圍繞這個構(gòu)建了六大能力:500T代碼數(shù)據(jù)、高度精確的代碼數(shù)據(jù)提取、零人工參與的UT自動生成、一站式代碼與UT生成能力評估、補(bǔ)全式的AI開發(fā)代碼生成、人工參與的代碼檢視意見生成。
形成機(jī)器人輸出代碼后,我們認(rèn)為這個環(huán)就結(jié)束了。但實際上如果要做到智能伴侶的時候,是需要跟機(jī)器人不斷地交互,不斷地協(xié)同成長,整套流程是要重新設(shè)計的。目前整套技術(shù)方案過多關(guān)注大模型的自身、底層的微調(diào)技術(shù)和各種各樣的能力構(gòu)建,反而忽略了基礎(chǔ)大模型能力隨著時間不斷地增強(qiáng),后端人跟機(jī)器的交互模式到底怎么構(gòu)建,其實是目前更加關(guān)注的問題。
最后用“都江堰工程”來總結(jié),都江堰工程是2000多年之前完成的重大工程,一舉奠定了成都成為開府之國。在現(xiàn)在大模型的時代,也有這么一個機(jī)遇,可以構(gòu)建軟件工程的都江堰工程。目前大模型可能有各種各樣的挑戰(zhàn),但是總的來說是提供很好的明燈。如果要構(gòu)建都江堰工程,整個大壩要怎么設(shè)計藍(lán)圖,至于大壩每一磚每一瓦怎么堆上去,需要大家一起努力,共同構(gòu)建未來智能化的軟件開發(fā)。