天天看點

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

【導讀】2024 年,AI 在軟體工程中的應用迎來全新變革!從輔助開發到全生命周期管理,AI 工具正全面融入軟體開發的每個階段。本文深入探讨了 AI 程式設計工具的演進路徑,從個體到團隊再到組織,展示了如何通過 AI 提升開發效率和軟體品質,深入揭示 AI 究竟如何重塑軟體開發的未來。

作者 | 黃峰達(Phodal)

責編 | 唐小引出品丨新程式員編輯部

在大多數組織中,開發者用于編碼的時間不到總工作時間的 40%,是以編碼提效對整個軟體開發生命周期(SDLC)的效能影響很有限,應嘗試将 AI 應用于軟體全生命周期和整個團隊,而不僅僅是個别成員、個别環節的産出。

從 2024 年的視角回顧,與 2023 年相比,AI 在軟體工程中的應用已經變得更加廣泛和深入。這一趨勢展現在 AI 程式設計工具的進化上,主要展現在以下幾個方面:

  • 全面探索:從輔助開發人員到全生命周期;
  • 演進路徑:個體、團隊、組織;
  • 形态變化:從本地 AI IDE 到領域特定的智能代碼生成。

站在全球來看,在不同的國家、區域人們的關注點是不一樣的,比如在中國,人們更關注于如何提高軟體工程師的工作效率,而在其它一些區域,人們更關心如何提高軟體工程的品質、如何輔助進行遺留系統的遷移。除了各自所處的數字化階段、水準不同,還存在一些技術人才數量、品質、分布等方面的差異。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

全面探索:從輔助開發人員到全生命周期

AI 技術已經從簡單的輔助開發人員發展到涵蓋軟體開發的整個生命周期。在這一過程中,AI 工具的應用範圍不斷擴充,從需求分析到運維管理,每個階段都得到了顯著提升。

單工具 Copilot

如圖 1 所示,是我們在 2023 年初對 AI 輔助軟體工程的流程分析,即在軟體開發的不同階段,AI 可以提供哪些輔助功能:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 1 AI DevOps 流程

從 2022 年 GitHub Copilot 的釋出,我們可以看到越來越多的 AI 工具開始涉足到軟體開發的不同階段。

  • 需求階段的 Jira/Atlassian Intelligence
  • 原型設計的 Vercel V0
  • 編碼階段的 GitHub Copilot
  • 運維階段的 Dynatrace Davis AI
  • ……

就 2023 年的結論而言,基于人工智能的工具與基礎大語言模型可以增強軟體開發在設計、需求、測試、釋出和運維等各個環節中的能力,提高品質和效率。但是,這些工具往往是破碎、割裂的,還可能并不适合我們現有的研發流程。

AI 原生的研發工具

我們也可以看到市面上的主流研發工具,如 JetBrains、GitHub(網站)等,都在逐漸加入 AI 功能(如圖 2 所示),使得 AI 功能逐漸融入到我們的日常工作中。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 2 AI Native 工具

在 IntelliJ IDEA 中,我們可以看到 AI 功能的加入,如:

  • 原生的向量化模型
  • 基于語義化搜尋(Search Everywhere)
  • 結合補全統計的機器學習補全插件:Machine Learning Code Completion
  • 适用于單個代碼行的 Full Line Code Completion
  • 等等

而除了 GitHub Copilot 工具本身,其也開放了其插件能力,使得我們可以定義自己的 AI 智能體,以适應我們自己的工作流程。

多階段協同

在 2024 年,我們可以看到更多的變化,諸如:

  • 在智能運維領域,AI 可以結合判别性 AI 分析日志,生成式 AI 分析原因,再結合智能體根據運作錯誤,自動修複代碼問題等;
  • 在測試領域,AI 除了輔助進行測試用例的生成,還可以生成對應的單元測試代碼,甚至是自動化測試代碼;
  • 在 UI 設計領域,AI 可以直接生成對應的代碼,基于提示詞來修改 UI,所生成的是最終的 UI 代碼,而不是設計稿;
  • ……

如下是 Dynatrace 的 Davis AI 示例:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 3 Hypermodal AI

Dynatrace 的 Hypermodal AI(超模态人工智能),是一種将多種類型的人工智能整合在一起,以增強可觀察性和安全解決方案的進階方法。這個概念結合了三種不同的 AI 模式:

  • 預測 AI:使用曆史資料和觀察到的模式來預測未來的行為和需求。這對于在問題發生之前預見并防止潛在問題至關重要。
  • 因果 AI:專注于實時分析富有上下文的資料,以确定問題的根本原因并自動化緩解風險。這種類型的 AI 通過了解系統内的依賴關系和互動,提供精确的答案。
  • 生成 AI:利用進階算法來建立針對特定問題的建議和解決方案。通過提供上下文相關的建議和使用自然語言處理自動化任務,這種 AI 增強了使用者互動。

通過融合這些 AI 功能,超模态 AI 為管理複雜的軟體環境提供了更全面和有效的解決方案。Dynatrace 的 Davis AI 平台通過整合預測 AI、因果 AI 和生成 AI, 提供實時洞察、自動化和增強的數字服務安全性。

諸如此類的變化,使得 AI 所能輔助的範圍更加廣泛,進而使得 AI 在軟體工程中的應用更加全面。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

演進路徑:個體、團隊、組織

從企業采用 AI 的路徑來看,我們會發現:越來越多的組織開始探索在組織層面使用 AI 輔助整體軟體研發。因而,AI 輔助研發組織的技術藍圖便也逐漸清晰起來:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 4 AI for Org

從形态上可以分為:帶擴充能力的 IDE 插件、團隊 AI 助手、 結合 AI 的内部 IM,以及作為基礎能力的 ChatBot。

個體輔助 IDE 插件示例:AutoDev

AI 程式設計工具應該怎麼設計才能提效?在目前來說,國内的環境下,由于我們的目标是實作可見的效率提升,即要通過可度量的名額。因而,可以看到一些明顯 的變化:

  • 代碼補全與生成是最容易度量的名額,并且市面上也以此類為主。
  • 在不同環節,從時間角度來計算,如代碼審查、代碼測試等。
  • 結合代碼的問答,以減少工具切換、複制粘貼,提高效率。

如下是我們開源的 IDE 插件 AutoDev 的能力全景圖:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 5 AutoDev 能力全景

由于過去的 AI 程式設計工具主要面向的是個體開發者,而随着探索進入一些深入區,以及實踐的不斷推進。是以,在結合組織能力的情況下,我們可以看到:

  • 多樣的 AI 工具正在融入自己的開發流程中
  • AI 工具開始融入内部的一系列規範
  • 不斷結合内部知識庫,提升内容生成的品質
  • 開始建構自己的場景化能力

故而,我們将其總結為,從個體到團隊,再到組織,并開始思考如何擴大 AI 的應用範圍。

團隊 AI 助手示例:Haiven

在設計團隊 AI 助手時,我們需要考慮到團隊的拓撲結構,以及團隊的工作流程。如圖 6 所示:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 6 團隊拓撲

在一個組織中,必然會有大量的不同類型的團隊,每個團隊受限于業務盈利模式等因素,其采用的技術、工作流程等都會有所不同。諸如于,核心的業務部門可以享受自己特有的開發流程,而其它非核心部門則會采用一些标準化的流程。

考慮到盈利水準高的部門,通常是大型團隊,他們不僅可能有自己的 AI IDE 插件,還會有自己的 AI 團隊。是以,我們也建議設計一個可以讓不同團隊共享知識的 AI 團隊助手。

諸如 Haiven™ 團隊助手:

Haiven™ 團隊助手是由 Thoughtworks 開發的一款 AI 驅動工具,旨在增強軟體開發流程。它與現有的 AI 編碼助手內建,并提供可插拔的知識包,幫助團隊完成開發任務、加速回報循環,并推動創新。支援多種雲和身份提供商,便于采用并內建到現有工作流程中。它支援研究、使用者旅程分析、 架構開發和團隊知識編碼,進而提升生産力、品質和團隊能力,同時保持對 AI 環境的控制。

  • 提高軟體開發的生産力和品質。可複用提示詞(Prompt)可以将最佳實踐和即時知識融入團隊的工作流程,以減少浪費,提升開發者滿意度,并保持軟體品質始終如一。
  • 動态增強團隊成員能力。Haiven 增強了團隊的自然人類創造力,使他們能夠輕松研究使用者需求,探索創新功能并傳遞卓越的使用者體驗。
  • 易于采用。支援多雲和身份提供商,以及可根據團隊工作流程定制的可插拔知識包,Haiven 極易被采用和內建。
  • 了解今天的 AI 的潛力。AI 市場是動态且迅速發展的,許多工具并未專門針對軟體開發任務設計,或者隻關注有限的功能範圍。Haiven 提供了一個簡單的沙盒,用于今日試驗新功能。

通過基礎的 AI 賦能,讓不同團隊在有能力的情況下,可以根據自己的需求,定制自己的 AI 助手。

組織級 IM/ChatBot 示例

回到整體組織層面,我們也會看到内部的 IM 工具也在融合 AI 功能,以提升協作體驗。諸如:

  • 尋找負責人/專家:通過 AI 助手,可以快速找到組織内的專家,以解決問題。
  • 運維 ChatBot,輔助分析部署失敗問題,可以自動化運維任務,如自動化部署、自動化監控等。
  • CI/CD 問題分析:通過 AI 助手,在嘗試修複問題時,還可以告知問題的可能根因。
  • AI 會議建立與管理。通過 AI 助手,可以自動建立會議,自動邀請參會人員,自動記錄會議内容,自動提醒會議時間等。

如下是 Teams Copilot 的示例:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 7 Teams Copilot

在另外一方面,我們也會有大量的其它 ChatBot 在不同的研發團隊中使用,比如輔助平台的使用、文檔查找等等。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

形态變化:從本地 AI IDE 到領域特定的智能代碼生成

與通用性的 AI 輔助相比,領域特定的 AI 輔助效果更好,因為它更了解領域的特點,更容易生成符合領域規範的代碼。從智能代碼生成的角度來看,由于過去包含大量的語料知識,生成的代碼品質更高,更符合領域規範。

IDE 即 AI 輔助研發中心

在前面,我們已經看到了 AI 輔助研發中心的概念,即在一個組織中,AI 輔助研發中心可以為不同團隊提供 AI 能力,以提升整體的研發效率。

還需要注意的是,AI 在快速生成大量代碼的同時,也會帶來一些問題,如代碼品質、安全性等。我們需要考慮如何在 AI 生成代碼的同時,保證代碼的品質。如圖 8 所示:

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 8 從代碼生成到代碼品質

我們需要考慮建構類似于 SonarLint 的體系化品質檢查 工具,以保證 AI 生成的代碼品質。

AI 增強的低代碼平台

諸如低代碼應用程式平台 Appian 的分析,生成式 AI 與低代碼平台結合,可以在多個方面實作增強的生産力和創新:

  • 文本生成與聊天機器人:結合生成式 AI 和低代碼平台,能夠快速部署聊天機器人,處理基本的客服請求或生成待人審閱的電子郵件草稿,進而簡化溝通流程。
  • 從 PDF 建構界面:生成式 AI 能夠解析 PDF 設計并将其轉換為功能性界面或表單。結合低代碼平台,確定設計到代碼的準确轉換,無需額外校對。
  • 工作流程自動生成:通過生成式 AI 增強的低代碼平台,可以快速生成複雜的工作流程,包括視覺圖表和可執行代碼。這對于例如賬單管理等任務至關重要,使用者回報後能快速進行疊代改進。
  • 自助式分析:利用自然語言處理的 AI 驅動平台,團隊能夠快速從資料源生成報告和洞察。AI 與低代碼的結合,使得能夠靈活調整流程和操作,提升業務效率和決策能力。

除了上述的經典場景之後,我們也可以看到多模态 AI 代碼的生成,諸如 Google 的 ScreenAI。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 9 ScreenAI

它可以将圖像和文本結合起來,生成對應的 DSL,進而轉換成不同的代碼。

You only speak JSON. Do not write text that isn’t JSON.
You are given the following mobile screenshot, described in words. Can you generate 5 questions regarding the content of
the screenshot as well as the corresponding short answers to them?

The answer should be as short as possible, containing only the necessary information. Your answer should be structured
as follows:
questions: [
{{question: the question,
answer: the answer
}},
...
]

{THE SCREEN SCHEMA}           

當然了,為建構這樣的語料,你還需要生成大量的頁面與低代碼資料。

從雲 IDE 到智能雲開發環境

在雲 ☁️ 時代,大型組織建構了大量的雲 IDE 和雲基礎設施,以嘗試賣出更多的雲服務以及解決最後一公裡的部署問題。盡管,受限于雲 IDE 能力、網絡與計算能力,雲 IDE 采用并不高,但是随着 AI 的發展,我們可以看到更多的智能雲開發環境的出現。

雖然..但是..,我們非常看好諸如 v0.dev 這一類針對于領域特定的開發工具。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 10 v0.dev

它可以:

  • 高效 UI 生成:通過輸入提示詞快速建立前端元件和頁面。
  • 一鍵定制化元件:少量的提示詞即可建立優雅複雜的元件,一鍵導出并應用于項目。
  • 快速原型設計:提供即用生産代碼,适用于新舊項目,項目較大時需整理代碼結構。
  • 圖生成代碼:通過圖形化界面生成代碼,适用于新手,不熟悉代碼的人員。

它可以快速幫助我們建構出一個原型,然後再進行。再結合其它 AI 工具,如代碼審查、代碼測試等,可以大大提高我們的開發效率。

還有諸如 Google Project IDX 這一類 AI 輔助型工作區。IDX 支援衆多架構、語言和服務,還與 Google 産品內建,可簡化您的開發工作流程,讓您可以快速、輕松、高效地跨平台建構和釋出應用。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

圖 11 IDX Demo

盡管 IDX 還非常早期,但是我們可以看到,未來的雲 IDE 将會更加智能化,更加适應我們的工作流程。

在國内,我們也可以看到 Babel Cloud、MarsCode 等一系列雲 IDE 工具,也在不斷的發展中。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員

結語

AI 在軟體工程中的應用已經從輔助開發人員擴充到整個開發生命周期,逐漸演進為團隊群組織層面的協作工具,并在工具形态上實作了從本地 AI IDE 到領域特定智能代碼生成的轉變。這些變化不僅提高了開發效率和品質,還推動了整個軟體工程領域的發展。

  • 全面探索:AI 從輔助開發人員擴充到覆寫軟體開發的整個生命周期,從需求分析到運維管理,每個階段都顯著提升了效率和品質。
  • 演進路徑:AI 工具從個體使用擴充到團隊群組織層面,以及組織層面的 AI 內建到内部 IM 和 ChatBot 系統中,全面增強了協作和效率。
  • 形态變化:從本地 AI IDE 發展到領域特定的智能代碼生成工具。智能雲開發環境如 Google 的 Project IDX 等工具,使得未來的開發流程更加智能化和高效。

這些變化不僅提高了開發效率和品質,還推動了整個軟體工程領域的發展。

作者簡介:

黃峰達(Phodal),Thoughtworks 中國區開源負責人、技術專家,CSDN 部落格專家,是一個極客和創作者。著有《前端架構:從入門到微前端》《自己動手設計物聯網》《全棧應用開發:精益實踐》等書。主要專注于 AI + 工程效能,還有架構設計、IDE 和編譯器相關的領域。

程式員程式設計總時間不到 40%,AI 究竟怎麼輔助軟體工程?| 新程式員