談談我對 AIGC 趨勢下軟體工程重塑的理解

阿里云云原生發表於2024-03-21

作者:陳鑫

今天給大家帶來的話題是 AIGC 趨勢下的軟體工程重塑。今天這個話題主要分為以下四大部分。

第一部分是 AI 是否已經成為軟體研發的必選項;第二部分是 AI 對於軟體研發的挑戰及智慧化機會,第三部分是企業落地軟體研發智慧化的策略和路徑,第四部分是我們現有的可採納的、可落地的工具,在這一部分我也會重點介紹通義靈碼整體的產品能力和概況。

AI 已經成為軟體研發的必選項

這張圖是麥肯錫最近釋出的一個研究報告,大家可以看到他把軟體工程列在了整張表格的右上角,也就是影響最大、影響速度最快的一部分。他為什麼會有這樣的觀點?這是因為在大模型時代,我們發現大模型在程式碼生成和整體的邏輯推理方面是特別擅長的,所以湧現出了類似 Github Copilot 這種非常有代表性的智慧編碼工具,可以瞬間提升大量企業開發工程師的研發效率,而且 Copilot 是至今為止在世界範圍內商業化最成功的大模型的領域之一。

這位美國的 KOL,他也有同樣的觀點。他認為在大模型時代,可能有大量的技能會被替代,我們 10% 的技能會被 1000 倍的提升,這個跟我們的觀點是相似的,尤其是在大模型時代,大模型可以大量地替代開發者的日常事務性工作,這部分的佔比很可能超過70%,讓開發者得以聚焦於剩下 30% 的業務和技術的創新。

這張圖給大家展示的是前一段時間 JetBrains 的一個調研報告,他們在 26500 名工程師之間做調研,想看一下今天有多少開發者已經開始熟練地使用生成式 AI 工具,這份調研也出乎很多人的意料,調研顯示,現在 84% 的開發者已經在或多或少地使用生成式人工智慧工具了。

其中有哪些場景是開發者最耗時,也是最想提效的場景?

他們在這裡也做了一個調研,就如左圖所示,首先是編碼場景,然後是理解程式碼,接著是網際網路搜尋,也就是查詢各種各樣的研發問題,以及進行除錯、編碼註釋、寫測試、程式碼評審等等一系列的工作。

這張圖大家可以看到,有哪些場景是 AI 助手輔助頻率最高的?

有以下幾個:第一個是使用自然語言去詢問軟體開發的一些問題,包括生成程式碼、生成程式碼註釋、解釋程式碼、生成測試等等。其實大家可以發現這一個調研的結果跟上一個其實是非常吻合的。也就是說在我們最高頻的場景下,AIGC 其實能起到非常關鍵的作用。 這也是為什麼程式碼智慧生成工具已經逐步成為了每個企業必須採用的一項產品的原因。

這張圖也是微軟針對 Github Copilot 使用者發放的一份調研問卷,瞭解他們使用類似 AIGC 的程式碼助手對整個的研發效率或者說研發體感有多少提升,可以看到有很多指標都是 80% 以上的,或者接近 80%。其實我們也針對通義靈碼的使用者發放過類似的調研問卷。有超過 80% 的使用者都感覺到使用工具以後生產力有了大幅的提升, 跟這個調研報告也非常吻合。

根據前面的調研報告和後面相關的調研資料,大家可以看到,在世界的開發者範圍內,AI 已經成為了開發者的必選項,我們軟體研發的未來一定是 AI 驅動的場景。

軟體研發挑戰及智慧化的機會

在 2023 年 6 月,我們組織過一次大規模的專家研討會,在這個研討會上大家都在討論智慧化未來對軟體研發或者軟體工程領域的深刻影響。在這個會上,我們有位專家提出了一個觀點,他認為軟體工程是人類歷史上第一次大規模的集體智力的協作活動,它本身是有本質的複雜性在的。例如《人月神話》的作者所講的,他認為軟體本質的複雜性是現在軟體系統中無法規避的內在特性,比如複雜度、一致性、可變性和不可見性。

在過去的若干年,為什麼軟體效能或者說研發效率提升非常困難,就是因為這些維度沒有得到非常好的解決。今天在大模型時代,透過 AI 逐步地去替代人類的事務性工作後,它可以起到非常大的改進作用。我們總結下來有以下四大方面。

第一,是對個體效率的提升。 例如我們可以採納類似 AI 的智慧程式碼助手,它可以大幅的代替研發人員的重複性工作、簡單性工作。我們認為它是一種 Copilot 的模式,輔助各個角色去提升自己的工作效率。

第二,是對協作效率的提升。 因為有很多專業的分工,它們之間存在一些效率的豎井,互相溝通協作的一些偏差等等。當 AI 逐步地去替代事務性工作,並且形成了 AI 為主、人為輔的程式設計模式的時候,大家會發現一些角色的分工可能會出現模糊化。比如產品經理寫完了需求,是不是可以馬上交由 AI 去完成大量的編碼工作,然後由工程師進行校驗,測試人員進行簡單的測試迴歸,AI 也可以起到非常重要的測試作用,接下來就可以順利的釋出上線。

如果是這樣的一個以 AI 為主、人為輔的模式,其實人和人之間的溝通協同問題就可以很好地解決。

第三,是研發體驗的提升。 在大模型時代,我們會構建軟體研發的智慧化大腦。這個大腦的表現可能是一個對話方塊,或者是一個對話形式。這個對話方塊會成為我們很多操作工具的入口。比如現在大家會發現,IDE 這種智慧編碼外掛,它也有對話方塊,有 IDE 的編碼,這就會成為我們寫程式碼的一個入口。

同樣在我們原來的 DevOps 工具上,也會有這樣一個對話的入口。在這個入口裡我們可以完成很多工具的操作,解決很多問題。它有效地使現有的工具散亂問題得到了解決,統一了整個操作入口。

第四,是數字資產的提升。 過去企業內部有很多優質的程式碼、框架、規範等等,很難瞬間交給開發者,讓每一個開發者去遵守。接下來我們會將這些數字資產利用檢索增強或者微調訓練的方式跟大模型結合起來,不斷地在大模型上積累這些資產,而不是使現在產生的程式碼成為負債,這些積累的資產可以讓軟體工程師的效能進一步提升。透過這樣的方式形成正迴圈,就可以大幅提升研發效率。

在上圖的右側,大家可以看到每一項的改進,實際上都在解決軟體研發的一些本質複雜性。比如說一致性問題、可變性問題、複雜性問題和一些知識顯性化問題等等。因此我們認為, AI 對於軟體研發的影響是深刻的,尤其是在未來 3 到 5 年,軟體研發的流程和軟體研發正規化會出現顛覆性的變化。

大模型目前已經在深刻的改變智力協作模式,比如說現在常見的程式碼翻譯,從我們的自然語言進行程式設計,像一些簡單的需求,現在可以直接讓大模型完成編碼。但是現在複雜的業務需求還沒有辦法完成。不過隨著大模型技術的發展,解決這個需求其實就是時間問題。

第二個是知識檢索。 在海量的知識裡,透過對話的方式可以快速地找到相關知識,由大模型輸出,變成順滑的自然語言。

第三個是頭腦風暴。 其實這是現在開發者最常用的功能之一。比如使用通義千問時,讓它給我寫個演算法,然後不斷的糾正它,讓它按照我的意圖去修改程式碼,最終就會形成一個可以直接拿來用的程式碼片段,這個大家現在已經用得很熟練了。

第四個是大模型非常擅長的整理歸納。 我們可以用它來整理我們的需求、整理文件和知識,這四種模式實際上已經在改變我們的智力協作模式。

在未來,我們主要有以下三種方式可以和 AI 進行協同。第一種是聊天模式, 可以和 AI 聊我們的需求架構、程式設計思路,讓它給我相應的建議。第二種是實時模式, 在編碼過程中大模型可以在背後給我相應的輔助,它是實時性的,幫我發現錯誤、推薦程式碼。第三種是伴隨模式, 也就是它隨時隨地可以被召喚出來完成一些事務性工作。比如幫我們做程式碼評審、異常排查等等,這三種模式會成為未來的主流。

從技術的角度來看,我們也認為會有以下三大趨勢。

第一個是基礎模型的變化,越來越長的推理上下文以及越來越大的引數量。其實現在 GPT4、GB3.5、GB4 都是非常大的千億級的引數,包括現在的通義千問、通義靈碼也是如此。隨著模型的引數量越來越大以及推理上下文越來越長,模型它能感知的知識以及它能處理的任務會越來越複雜。現在它可能還只是完成一些簡單的程式設計任務,在未來很有可能會完成複雜需求的編寫。

第二個我們認為它在向縱深去擴充,更深度的去接管編碼過程。比如 Github Next 上面的一些專案,我們可以看到未來的一些趨勢。比如讓大模型去預測下一個編輯位置,讓大模型直接完成需求到程式碼的自動編寫以及我們甚至可以透過自然語言描述的方式,讓大模型編寫好一個框架,直接生成整個程式碼,也就是說實現自然語言程式設計。這些在業界都有相應的探索,大家有興趣的話可以去看相關的 Demo,還是非常酷炫的。

第三個是我們認為現在已經在逐步的向橫向擴充套件,也就是說會貫穿到 DevOps 的整個鏈路。比如可以用大模型進行輔助的文件查閱、生成評審、輔助編寫,大模型已經開始逐步滲透到軟體工程的各個領域。

企業落地研發智慧的策略

對於企業而言,在這個 AIGC 或者說大模型爆發的時代,應該如何去落地研發智慧化,它的路徑和策略是什麼?

看到這張圖,我們可以跟過去十年的軟體工程模式說再見了。因為在過去,我們一直追求的是整體的 DevOps 全鏈路一站式體驗以及構建效能洞察資料體系,去找到效能改進點,不斷推進研發效能提升。

在未來十年,我們認為是以大模型為驅動的智慧化軟體研發體系,也就是有智慧化的軟體研發工具鏈,及大語言模型和相關的數字資產,再配合智慧的決策輔助,去幫助企業大幅提升軟體研發效率以及突破現有的效能瓶頸。

在這裡我們推薦企業採用三個階段來逐步構建研發的智慧化。

階段一,可以先引入 DevOps 基礎大模型去構建研發智慧大腦。 如我們透過編碼場景,在 IDE 的編碼助手的場景中進行落地。為什麼我們會選取這個場景?是因為我們發現大模型目前的技術瓶頸,還沒有辦法實現一些非常複雜的大面積的編碼。

但是在跟人類 pair 的場景下,它就可以起到非常好的作用。比如說程式碼續寫,圈選一段程式碼去進行單元測試生成、程式碼註釋生成,這些都非常擅長,而且它的效果也非常好。所以說我們認為可以在這個場景先進行切入,先去落地,取得最大的效能紅利,我們把這個過程叫做 Landing。

階段二,我們建議是以長期效率為核心,持續的治理和構建個性化資料。 也就是說要實現企業的模型個性化,提供全量、全要素的資料,比如優質的程式碼資料,優質的業務文件資料,將這些資料收集起來,構建企業個性化的資料集。再透過檢索增強或微調訓練技術跟大模型結合起來,構建一個企業私有的研發大腦。我們把這一步叫做 Growth。

階段三,要以大模型為中心,完成整個研發工具鏈的智慧化升級。 比如將研發領域的各種工具都接入大模型,進行智慧化的整體改造,實現端到端的智慧化,進一步的代替各種研發工程師的事務性工作,我們把這一步叫做 Expanding。

從階段一、階段二到階段三,循序漸進的這種模式是我們比較推薦的。現在一般企業都有整體的軟體研發的全生命週期管理的工具鏈,也有沉澱出來的企業非常好的一些數字資產。將數字資產跟大模型結合,進一步去賦能工具鏈,然後工具鏈又可以正向地產生更多的資產,因此形成一個迴圈,讓效能越來越高,這就是我們期待的一個模式。

在需求階段、編碼階段、整合測試階段、釋出部署階段、諮詢學習階段、效能管理階段等各個階段實現智慧化升級。

首先可以在編碼階段進行切入,逐步向測試階段、釋出部署階段進行擴充套件。像一些和需求與業務連線的複雜場景,可以放到最後去進行提升,透過這種方式逐步落地,最終實現端到端的智慧化改造。

接下來我講一些簡單的場景,給大家參考。例如我們可以實現智慧的專案管理,可以實現細化需求,拆分子需求,智慧的指派負責人,拆分任務等等,這些工作都可以交給 AI 來做。

比如在程式碼評審場景,可以實現智慧化的推薦評審人、描述和標題生成、摘要生成、大評審拆分、程式碼檢測、修復方案的生成以及衝突的自動修復。相當於有一個 AI 評審員,幫助完成了很多複雜的授信工作,而人類進行最終的確認就可以了。

也可以進行智慧的分層測試,基於需求自動生成手工用例,自動的生成介面測試,生成單元測試,做程式碼評審,這些都可以做。然後像圖上藍色部分,我們也有一些技術方案可以在現階段大模型的技術基礎上落地。

我們也可以做智慧化的平臺工程。比如說我們有一些場景:K8s yaml 的輔助編寫,CICD 的編排輔助,構建錯誤排查,部署過程排錯,異常程式碼定位和運維知識問答。最終去實現配置編排→CICD→部署過程觀測→異常排查,整個 CICD 主鏈路的智慧化改造,我們把它叫做智慧的平臺工程,這些點我們都可以在現階段進行落地了。

最後一個是智慧的研發問答,我們可以實現統一的問答入口,將企業的知識跟大模型結合在一起,以後所有的工程師首先會想到在這個入口去問各種各樣的知識,然後獲得實時的答案。以及可以做程式碼的文件搜尋,不管是文件還是程式碼都可以問,甚至可以讓它在這裡幫我生成業務程式碼,包括自然語言的操作、個人的智慧助理,這些都是馬上可以落地的一些場景。

最終,我們就在企業內部形成了這三重結構。最上層就是應用層,也就是研發工具應用和服務,它其實是一個以大模型為核心的工具和服務。中間層是模型層,我們要構建一個核心的企業個性化的大腦。最後還要有技術和算力,現在阿里雲在公共雲上提供了非常強大的 GPU 算力,未來我們可以直接上雲來享受這一部分的 AI 給大家帶來的技術紅利。

最後我們認為在大模型時代,要堅守以下這四個原則。

第一是要以資料為先, 高質量的資料輸入會讓大模型越來越聰明。所以對企業而言,未來非常大的工作量就是梳理研發資產。比如程式碼資產、文件資產等,首先要對它們進行梳理,識別出哪些是優質的,哪些是不優質的。然後將最優質的部分過濾出來,輸入給大模型進行相關的知識沉澱,這些知識它就不會消失了,也不會形成負載,而是順利地去賦能新員工或者其他的角色,實現相關的效能提升。

第二要堅持以人為本, AI 並不是來替代人的,而是讓人更加專注於自身擅長的業務和技術創新。所以企業應用了 AI 工具以後,企業的創造力會越來越強,跑得越來越快,這是我們認為最重要的。而且現階段 AI 是沒辦法替代人類的,它只能解決人類目前的一些事務性工作。

第三是安全合規, 這個是我們非常重視的。尤其是通義靈碼構建的時候,特別注重程式碼的隱私安全。對企業來講,應用大模型的時候也要充分考慮這一點。

第四我們希望是持續收益。 大家不要希望今天引入大模型的智慧化軟體開發工具鏈後,就可以實現質的提升,現在的產品還沒有發展到這個程度,而且技術還有相應的瓶頸。所以我們可以採用 Landing、Growth、Expanding 三步走的方式,持續的對接大模型相關的效能紅利。

軟體研發智慧化工具的落地

前面給大家介紹了企業落地 AI 智慧研發的相關路徑。現在我們再進一步來看,當下有哪些事情可以做。在這裡推薦每個企業都應該去應用智慧編碼工具,通義靈碼就是其中非常優秀的代表。

現在給大家介紹一下通義靈碼。通義靈碼是我們去年在雲棲大會上重磅釋出的一款基於程式碼大模型的新一代智慧編碼助手,這個工具主要有以下兩大部分的能力。

我們可以在左側的這個框裡進行隨意的問答。比如讓大模型幫我生成一個演算法,解答各種各樣的智慧的問題,研發的一些問題它可以瞬間找出相關的答案,再透過多輪會話的方式去糾正它。右側就是編輯框,可以在裡面輸入中文的一些註釋,或者輸入程式碼,這時候由大模型去預測我即將寫什麼程式碼,並且給我相關的答案,如果我覺得 OK 就可以採納。透過這樣的方式我們可以和大模型進行配合,相當於它是一個助手,不斷地猜我想要什麼,從而提升寫程式碼的效率。

通義靈碼主要包含三大核心功能:

  • 第一個是程式碼智慧生成。 可以進行行級、函式級的自動續寫、單元測試生成、自然語言生成程式碼、程式碼註釋生成等。
  • 第二個功能是研發智慧問答。 研發領域的自由問答、異常報錯智慧排查、程式碼的最佳化建議等等,這些都是可以做的。
  • 第三個功能是企業個性化能力。 剛剛講了 Growth 階段其實就是需要構建一個企業私有的研發大模型,我們可以在這裡面實現程式碼和文件的檢索增強以及專屬模型的微調訓練,透過這樣的方式去構建企業的個性化能力。

在通義靈碼上線的這幾個月中,已經有超過 100 萬的使用者下載了我們的外掛並用於日常的程式碼開發,現在線上上每天都有數十萬的使用者,在使用我們的程式碼生成工具去寫程式碼。通義靈碼每天的被採納的程式碼已經上百萬,推理次數上千萬。 在過去一段時間,我們也向使用者發放了 850 份調研問卷,透過回收的問卷顯示,整體的滿意率超過了 80%。

大量的使用者反饋,使用通義靈碼以後有非常大的效能提升。並且 AI程式碼 在開發者程式碼總量的佔比達到 30% 以上。歡迎大家體驗通義靈碼,提升編碼效率。

點選此處參與活動體驗

相關文章