大語言模型對軟體開發的影響

大語言模型對軟體開發的影響

近期閱讀了一份文件,內容是關於大語言模型對軟體開發工作的影響,文件的連結在這:Assessing and Advancing Benchmarks for Evaluating Large Language Models in Software Engineering Tasks

這份文件聚焦於大型語言模型(LLMs)應用於軟體工程(SE)領域的效能評估。這是個有趣的題目,所謂的效能,簡單的說就是能直接在該工作任務中大幅增進效能的比例。

大家都知道現在的 AI 寫 code 已經不是什麼大不了的事,但透過 vibe coding 寫出來的 code 真的可以用嗎?符合需求嗎?品質可以嗎?能被維護嗎?

關於這些問題,我們要如何衡量 AI 的有效性呢?目前的答案是透過 Benchmark(基準)。

舉例來說,之前有的 benchmark 叫 SWE-bench,它使用了真實 GitHub issue 與 PR,測試模型是否能修正程式庫內的 bug。根據能修正多少來為模型評分。

或者是 HumanEval,是由 164 個 Python 程式任務組成,每個任務都附帶測試案例。評估方式以 Pass@k(程式通過測試案例的比例)來衡量模型的解題能力。

簡單說,基準是為了幫助我們判斷這個 LLM 在特定任務上的解題能力或成熟度。而過去大家熟知的研究大多針對程式碼生成或測試,但這份研究報告則覆蓋了需求、程式碼生成、測試、維護與品質管理等面向。

報告中回顧過去幾年發布的 291 個相關基準,算是具有一定程度的代表性。

下圖,是這份研究的架構概覽:

  • Requirements & Design (需求與設計)需求蒐集 (4)、分析 (10)、規格與驗證 (9)、管理 (2)合計 25 個基準。
  • Coding Assistant (程式輔助)代碼生成與推薦 (102)、總結 (11)、翻譯 (13)、推理 (3)合計 124 個基準(這個數字加總似乎有錯),數量最多。
  • Software Testing (軟體測試)測試案例生成 (14)、斷言生成 (1)、GUI 測試 (2)、測試自動化 (4)、測試預測 (2)、測試修復 (2)合計 25 個基準。
  • AIOps (智慧化維運)日誌生成 (4)、日誌解析 (2)僅 6 個基準。
  • Maintenance (維護)程式碼審查 (7)、Clone 偵測 (5)、重構 (1)合計 13 個基準。
  • Quality Management (品質管理)缺陷預測 (5)、錯誤定位 (20)、錯誤修復 (12)、漏洞偵測 (62)、漏洞修復 (18)合計 111 個基準,僅次於程式輔助。

基準的數量,某種程度可以說是該工作任務由 AI 完成的成熟度。所以從上方的數字看來,程式碼撰寫、測試、修 bug是目前 AI 能做得最好的項目。而需求、維護跟維運則做得相對較差。

簡單的說,脫離了程式碼,來到商業需求層面的議題,AI 能參考的數據源較少,較難給出符合需要成品。程式碼可以相對容易在網路上取得,Github、Stackoverflow 上都有許多的程式碼。

但 BRD、PRD、MRD、架構圖、佈署圖等需求文件跟架構文件,通常屬於商業機密,不太可能在網路上直接公開。這部分便是所謂的 domain know-how 跟 business know-how,我相信即便 AI 持續發展,要能完全替代人類去做這方面的任務,還是有很長的一段路要走。

而這也是未來軟體工程師跟 PM 相關職務能直接區別於 AI 的重要路線。


需求收集基準

進一步看看需求收集的基準,發現這些基準的代表性相對薄弱。例如 NFR-Review,主要收集了 iBooks (iOS) 與 WhatsApp (Android) 的使用者評論,隨機挑選 4,000 筆,最後整理出 1,278 筆需求作為基準。

而且重點著重於非功能性需求(Non-Functional Requirements, NFR),如可靠性、可用性、效能、安全性。非功能性需求通常是相對泛用的,跟 domain know-how 的綁定程度相對較低。或許具有一定程度的可參考性。

或者 Habib et al.,它是從 10 個線上需求資料集中篩選出 242 條高品質需求。所謂的高品質指的是泛用的需求,應該也會涵蓋許多非功能性需求,不過我沒找到這 242 條需求的清單,所以不太肯定它的範圍到底涵蓋到哪。

不過它有特別提到所有的需求都要符合 ISO 29148 標準,這是一套軟體工程標準,主要目的是確保需求可理解、可追溯、可驗證,並減少軟體與系統專案中的歧義與錯誤。

以下請 AI 幫忙整理 ISO 29148 標準。

這套標準主要規範「什麼是好需求」以及「如何撰寫需求文件」,核心分成三大區塊:

1. 需求的特性(Characteristics of good requirements)

一個需求應該是:

  • 正確 (Correct):符合系統/用戶需求。
  • 無歧義 (Unambiguous):單一解讀,不容誤會。
  • 完整 (Complete):涵蓋必要條件。
  • 一致 (Consistent):不與其他需求衝突。
  • 可驗證 (Verifiable):能透過測試、檢查或分析來確認。
  • 可行 (Feasible):能在技術、時間、成本內實現。
  • 必要 (Necessary):每個需求都應支援業務目標。
  • 有追溯性 (Traceable):能追溯到來源(如用戶需求或設計決策)。

2. 需求種類

  • 功能性需求 (Functional Requirements, FRs)
    描述系統必須做什麼,例如「系統應允許使用者登入並查詢餘額」。
  • 非功能性需求 (Non-Functional Requirements, NFRs)
    描述系統品質或限制,例如「系統應在 2 秒內回應查詢」、「系統必須符合 GDPR」。

3. 需求規格文件(SRS, Software Requirements Specification)

ISO 29148 提供 需求文件的範本結構,包含:

  1. 簡介與背景
  2. 系統總覽與目標
  3. 功能需求
  4. 非功能需求(效能、安全性、可靠性、可維護性等)
  5. 限制與假設
  6. 驗證與驗收準則

而為了確保每一個需求都能符合這樣的標準,Habib et al. 的作者還撰寫了另外一份研究報告 ReqBrain: Task-Specific Instruction Tuning of LLMs for AI-Assisted Requirements Generation。

在這研究中,它採用了 AI 負責撰寫符合 ISO 29148 標準的文件,並由人類進行分析與驗證的方式來進行。

而 AI 生成的文件是否符合 ISO 29148 的標準,則由三個關鍵任務來判讀:如何

  • How-to? INST教模型如何用 ISO 29148 語法撰寫完整需求。例如:指令:寫一條符合 ISO 29148 的需求,功能是讓員工能列印會員卡。完成:系統應允許員工透過 POS 系統列印姓名與會員編號(含條碼)。
  • RE-types INST教模型辨識與生成不同類型需求(功能性 vs 非功能性,如可用性、安全性)。例如:指令:給我一條關於「可用性」的需求。完成:顧客應能在 3 分鐘內完成電影購買與播放。
  • Missing INST模擬「需求清單不完整」的情境,讓模型補充缺失需求。例如:指令:已有部分需求(瀏覽功能、儲存功能),請補齊其他需求。完成:補充「顯示功能」、「儲存追蹤功能」等缺失項目。

從這份報告的架構,我大致上能理解大語言模型在需求收集這個任務上的基準的表現。現階段大致只能處理通用性需求,但無法深入處理具備特殊商業判斷的需求。


具備商業思維(business know-how)與領域知識(domain know-how),且能從架構設計上思考的軟體工程師或 PM。即便面對 AI 的浪潮,可被取代性還是相對低的。

如果你覺得我內容寫得還不錯,歡迎訂閱我的電子報,我每雙週會發送一封電子報到你的信箱。訂閱連結在這,過往的電子報也在這:Gipi電子報

也鼓勵你可以將我的電子報分享給你認為有需要的朋友們,也許你的舉手之勞,將會改變另一個人的思維與習慣。

Read more

西雅圖的夜晚

第二人生的再思考

在從達拉斯飛往西雅圖的飛機上,因為有四個小時的時間,所以我花了些時間思考自己的人生。 起因於我打開了帆書 App,想說要來聽一本書時,剛好看到克里斯汀生多年前的著作《你要如何衡量你的人生?》 我馬上跟同事聊起這本書,聊完後我靜下心來好好思考當下的自己。 以下是我在 2022 年生病期間,跟 Yuki 聚會聊完第二人生後我寫下來的內容,也是當下我對第二人生的體悟。 我覺得第二人生的追求跟第一人生不同,或許不用像人生上半段那樣兢兢業業,也不用那麼目標導向,而是可以有更多的時間留給自己。 需要有份工作,但不要讓工作佔滿生活全部的時間, 需要有收入,但賺錢不該是生活的主要重心, 需要有挑戰,但不再追逐更多的名、利與成就, 需要有目標,但不必逼自己有很精確的時間軸, 需要有朋友,但不是為達成目的而去建立的人脈關係。 第一人生與第二人生不是一種立即性的切換,有時是一種漸進式的調整,甚至是同時發生。 有人說,第二人生有時是彌補第一人生中失去的東西,或者體會第一人生沒有足夠時間去體會的東西。但我想這是屬於 60-70 歲才開始展開第二人生的人的思考邏輯。趁早規劃的人可以不需要用這麼極端的

By gipi
2026 第三次復盤

2026 第三次復盤

原先要在中秋假期時完成今年的第三次復盤,可因故延誤了,但想想這季還是有許多深刻的心得值得跟大家聊聊。 青色組織夢的復興 我當年創辦學院社群時,我心裡有個很濃厚的情懷,我認為最有效的學習就是創造一個環境,讓所有人在這個環境中彼此學習,互相協助。就像一個大同社會一般,你幫我學習,我幫你成長,你貢獻一點,我也貢獻一點,這個環境肯定就會更好,而我們每個人也能獲得更多。 我當年是真心相信這件事,所以學院的第一年,我們在只有兩個正職員工的狀況下,靠著學員擔任志工,我們前前後後舉辦了將近 60 場講座,以及數十場聚會,跟數百場的小組學習活動。 只要你願意成為志工,組織一場講座,而其他的 99 個人也都做了一樣的事,我們每個人投入的是一分力氣,但最終我們會獲得一百分的回報。 這是我心目中理想的社群樣貌,而我到目前仍然相信環境對一個人的影響遠大於一個老師或是一堂課程。 可以當年,我們跌了很大一跤,那次的挫敗甚至讓我有些懷疑我是不是過度理想化了。我忽略了很多現實面的問題,也忽略了自己的身分角色,還忘了很多事,並不是那麼理所當然。那年我也在 MOPCON 分享了這個經驗,有興趣的朋友可以自行觀

By gipi
[徵才]方圓國際誠徵四個新職務

[徵才]方圓國際誠徵四個新職務

我又要來招募了,這次要招募的職缺有四個,工作地點都在台中。 6 月份的時候我啟動了一波招募,那波中我招募了工程師、門市體驗設計師、萃茶系統負責人、小舖成長主管。後來我們也引入了品茶師、珍珠學院培訓師與院長,以及一群儲備幹部們。 目前這些人都已經在職,且一起進行了許多有趣的任務。 我們相信,品牌是由內而外的,需要讓員工先感受到,客戶才會感受到, 我們相信,品牌不只是一種形象,而是一種持續兌現承諾的能力, 我們相信,餐飲不是門苦生意,而是能帶給自己與他人幸福的事業。 這是我在方圓工作這段時間,我堅定不移的信念,也是我們團隊一起前進時重要的信條。 現在,我又要招募幾位夥伴加入我們團隊,如果你對以下職務感興趣,歡迎將你的履歷寄送到我的信箱:gipi@teashop168.com.tw AI-native senior full-stack product engineer 之前已經有招募過工程師,但因為要推進的事項很多,所以想再多找一位開發夥伴加入我們。 AI-native,我希望你現在已經是將大量的工作交給 AI,不論是

By gipi
讓生活變成你喜歡的樣子

讓生活變成你喜歡的樣子

一個人一早在無人的 Stanford 校園散步,在教堂牆上看到 Faith、Hope、Charity、Love 四個詞彙,有點感觸,坐在門口的椅子上,想想這陣子做的一些決策。 管理,是管事理人 這是很多年前古哥跟我說過的一個概念,核心思路是「你得在事情上參與,理解問題的本質,並把時間花在梳理人會卡關的議題,讓人可以朝好的方向前行」。 過往專業經理人時期,我理解這概念,但因為我會有短期的戰功需求,所以我會想盡快把事情解決,對人的耐性也相對有限。當 team member 的調整速度太慢時,我可能會插手處理。這樣的好處是事情會很快有進度,壞處則是對方的學習空間減少,潛力難以激發,工作動機也會在我一次次參與後逐漸減少。 現在我比較沒有短期成果壓力,所以在找出問題根因後會願意花時間去陪一個人成長。因為我相信,只要這人是對的,最終都是先苦後甘,前面慢一點,但後面就會快很多。 就像我以前分享過的培訓概念一樣,早期人的成長不明顯,因為培訓發揮效用要時間。可當培訓的效果開始發酵,他的績效就會逐步展現。而且這人因為被信任,備栽培,所以他的工作心態也會截然不同。長期能帶來的效益是難以估計的。

By gipi