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

作者:陳鑫

今天給大家帶來的話題是 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% 以上。歡迎大家體驗通義靈碼,提升編碼效率。

點擊此處參與活動體驗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章