[論文閱讀] 人工智能+軟件工程 | 軟件工程中非代碼工作的LLM能力評估

軟件工程中非代碼工作的LLM能力評估

論文信息

@misc{2506.10833v1,title={Evaluating Large Language Models on Non-Code Software Engineering Tasks},author={Fabian C. Pe?a and Steffen Herbold},year={2025},eprint={2506.10833},archivePrefix={arXiv},primaryClass={cs.SE}
}

在這里插入圖片描述

研究背景:被忽視的"軟件工程冰山"

想象一下:一位建筑師花了85%的時間繪制藍圖、協調團隊、檢查結構安全,卻只能用一把生銹的尺子完成這些工作。這或許就是當前軟件工程(SE)領域的真實寫照——大型語言模型(LLMs)如GitHub Copilot在代碼生成領域大放異彩(就像精準的3D建模軟件),但在需求分析、質量保證、項目管理等非代碼任務中卻近乎"裸奔"。

領域痛點直擊

  • 時間分配失衡:開發者僅用15%時間寫代碼,其余時間被需求文檔審查、bug分類、團隊溝通等非代碼任務占據。
  • 工具鏈斷層:現有LLM工具(如Cursor)能自動生成函數,卻無法判斷"用戶登錄超時"屬于功能性需求還是非功能性需求。
  • 基準缺失之困:主流評估如HumanEval僅關注代碼生成,就像只測試汽車的引擎性能,卻不檢查剎車和方向盤。

生動類比

如果把軟件工程比作一座冰山,代碼編寫只是露出水面的20%,而非代碼任務則是水下的80%。當LLM在水面部分乘風破浪時,水下的暗礁(如需求歧義、質量風險)卻缺乏探測工具——這正是SELU基準誕生的初衷。

創新點:首個非代碼SE任務"度量衡"

1. 構建跨維度任務矩陣

  • 17項任務全覆蓋:從"判斷issue是否為bug"的二分類,到"估算故事點"的回歸任務,甚至包括API文檔"氣味"檢測這樣的多標簽分類。
  • 數據來源大雜燴:混合代碼倉庫、開發者論壇、需求規格說明書等多源數據,就像用不同食材熬制一鍋SE"濃湯"。

2. 方法論突破

  • 貝葉斯統計加持:用貝葉斯符號秩檢驗替代傳統顯著性測試,就像從"非黑即白"的二元判斷升級為"概率化"的精準比較。
  • 模型混戰實驗:讓22個開源LLM(含BERT、Llama 3.2)與2個 proprietary模型(GPT-4o、Claude 3.5)同臺競技,甚至拉來傳統機器學習模型當"陪練"。

3. 反常識發現

  • “小而美"勝過"大而全”:70億參數的CodeLlama未必贏過10億參數的Llama 3.2,中等規模解碼器模型反而跨任務表現更穩。
  • 代碼預訓練"水土不服":專為代碼優化的模型(如CodeBERT)在非代碼任務中優勢微弱,就像讓專業賽車手參加馬拉松。

研究方法和思路:像拼樂高一樣搭基準

第一步:任務篩選"淘寶砍價"

  • 從395篇文獻中"淘"出17項非代碼任務,剔除重復和數據不可用的,就像在電商平臺篩選性價比最高的商品。
  • 典型任務示例:
    • bug issue分類:判斷"登錄界面卡頓"是否為bug(數據集38,219條)
    • 故事點估算:預測"用戶認證模塊"的開發工作量(1-96分制)

第二步:數據處理"洗照片"

  • 標準化處理:統一格式、去除Markdown標記,就像給照片調色修圖。
  • 敏感信息掩碼:將URL、代碼塊替換為占位符,避免"隱私泄露"。
  • 特殊處理:NER任務直接使用已標注數據,MLM任務通過POS動詞掩碼構建訓練樣本。

第三步:模型測試"武林大會"

  1. 分組對決
    • 編碼器組:BERT、RoBERTa
    • 解碼器組:GPT-2、Llama 3.2
    • 編解碼器組:T5、CodeT5+
  2. 評估指標"評分標準"
    • 分類任務:F1-macro(避免類別不平衡誤導)
    • 回歸任務:SMAPE(對稱誤差百分比,抗極值干擾)
  3. 統計分析"裁判打分"
    • 先用Shapiro-Wilk檢驗看數據是否正態分布
    • 再用貝葉斯符號秩檢驗計算模型A優于B的概率

SELU基準包含的17項非代碼任務構成表

任務類型具體任務名稱實例數量目標數量/范圍數據來源
二分類bug issue38,2192[23]
incivility1,5462[24], [25]
requirement type6252[26]
tone bearing6,5972[24], [25]
多分類closed question140,2725[27]
commit intent2,5333[28]
issue type803,4173[29]
question quality60,0003[30]
sentiment13,1443[31]
多標簽分類comment type java9,3397[32]
comment type pharo2,2907[32]
comment type python1,5875[32]
review aspect4,52211[33]
smell doc1,0005[34]
回歸story points23,313[1-96][35]
命名實體識別(NER)se entities2,71820[36]
掩碼語言模型(MLM)requirement completion40**[37]

表格說明:

  1. 任務類型劃分:涵蓋分類(二分類、多分類、多標簽)、回歸、NER、MLM四大類,全面覆蓋自然語言理解(NLU)任務。
  2. 數據規模:實例數量從40到80萬+不等,其中“issue type”任務數據量最大(803,417條),“requirement completion”因數據特性實例數最少(40條)。
  3. 目標范圍:多標簽任務(如“review aspect”)目標數最多達11類,回歸任務“story points”需預測1-96的連續值。
  4. 數據來源:標注文獻編號對應論文,數據源自代碼倉庫、issue跟蹤系統、開發者論壇等多場景。

主要貢獻:給SE領域遞上"精準地圖"

1. 基準建設:填補領域空白

  • 提供首個非代碼SE任務評估框架SELU,包含17項任務的完整數據集與評估流程,就像為未知海域繪制航海圖。
  • 開源所有代碼、模型和結果,方便研究者"抄作業"。

2. 模型選型:給出"避坑指南"

  • 首選模型:中等規模解碼器模型(如Llama 3.2 3b),平均性能0.754且跨任務方差低。
  • 避雷提示:不要盲目追求"代碼優化"模型,其在非代碼任務中可能"水土不服"。

3. 研究方向:點亮"未來燈塔"

  • 生成式任務擴展:從"理解需求"到"生成設計文檔",如自動生成UML圖。
  • 領域適配優化:基于開發者論壇、會議記錄等自然文本進行預訓練。

關鍵問題

  1. SELU基準與現有SE基準的核心差異是什么?
    • 答案:SELU是首個聚焦非代碼SE任務的綜合基準,涵蓋17項任務(分類、回歸、NER、MLM),數據源自代碼倉庫、開發者論壇等多源,而現有基準(如HumanEval、MBPP)主要評估代碼生成能力,任務類型與數據源單一。
  2. 哪種類型的LLM在非代碼任務中表現最優?影響其性能的關鍵因素是什么?
    • 答案:中等規模純解碼器模型(如Llama 3.2 3b)表現最優,其平均性能達0.754且跨任務方差低。關鍵因素包括模型架構(解碼器優于編碼器)、參數規模(十億級在多標簽分類中優勢顯著),而聚焦代碼的領域適應僅帶來 modest改進。
  3. 該研究為SE領域LLM應用指出了哪些未來發展方向?
    • 答案:未來需擴展SELU至生成式任務(如設計模式推薦、UML圖生成),探索基于SE自然文本(如需求規格、會議記錄)的預訓練,系統研究模型穩定性與超參數影響。

討論與未來方向

  1. 實踐啟示:非代碼任務優先選中等規模解碼器模型,多標簽任務需大模型,領域適應性價比低。
  2. 未來工作:擴展至生成式任務(如UML圖生成)、基于SE自然文本的預訓練、穩定性研究。

總結:從"代碼崇拜"到"全周期賦能"

這篇論文撕開了LLM在SE領域的"偏科"真相——當我們沉迷于代碼生成的"華麗表演"時,非代碼任務的"實用戰場"卻缺乏有效的評估工具和模型。SELU基準的價值不僅在于發現解碼器模型更適合非代碼場景,更重要的是推動LLM研究從"單點突破"轉向"全周期賦能"。

就像汽車工業不能只優化發動機,還需精進剎車、懸架和導航系統,SE領域的LLM發展也需要在需求分析、質量保證等"非代碼底盤"上持續發力。未來的LLM或許能像全能工程師一樣,不僅寫出漂亮代碼,還能精準評審需求、預測項目風險,真正實現軟件工程全生命周期的智能化。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85273.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Data URI Scheme 詳解:將數據嵌入 URL 的技術方案

一、Data URI Scheme 是什么? Data URI 是一種特殊的URL格式,允許將數據(如圖像、文本、音頻等)直接嵌入到URL中,而無需引用外部資源。它由RFC 2397標準定義,常用于前端開發中減少HTTP請求次數&#xff0c…

基于Redis方案的分布式鎖的Java實現

前期, 我們介紹了什么是分布式鎖及分布式鎖應用場景, 今天我們基于Redis方案來實現分布式鎖的應用。 1. 基于Redis分布式鎖方案介紹 基于Redis實現的分布式鎖是分布式系統中控制資源訪問的常用方案,利用Redis的原子操作和高性能特性實現跨進…

Kafka源碼P2-生產者緩沖區

歡迎來到啾啾的博客🐱。 記錄學習點滴。分享工作思考和實用技巧,偶爾也分享一些雜談💬。 有很多很多不足的地方,歡迎評論交流,感謝您的閱讀和評論😄。 目錄 1 引言2 緩沖區2.1 消息在Partition內有序2.2 批…

力扣網C語言編程題:三數之和

一. 簡介 本文記錄力扣網上的邏輯編程題,涉及數組方面的,這里記錄一下 C語言實現和Python實現。 二. 力扣網C語言編程題:三數之和 題目:三數之和 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nu…

2.2 Windows MSYS2編譯FFmpeg 4.4.1

一、安裝編譯工具 # 更換pacman源 sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* pacman -Sy# 安裝依賴 pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-ya…

驅動開發,隊列,環形緩沖區:以GD32 CAN 消息處理為例

對環形緩沖區進行進一步的優化和功能擴展,以應對更復雜的實際應用場景,特別是針對 CAN 總線消息處理的場景。 一、優化點 1:動態配置環形緩沖區大小在原始實現中,我們固定了緩沖區大小為 RINGBUFF_LEN 64。這種方式雖然簡單&am…

SQL基礎知識,MySQL學習(長期更新)

1、基本操作,增刪查改 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); DELETE FROM 表名 WHERE 條件 SELECT * FROM 表名 WHERE 條件 UPDATE 表名 SET 字段1 值, 字段2 值, ... WHERE 條件; SELECT * INTO 新表 FROM 舊表 WHERE… INSERT INTO 語…

Git(一):初識Git

文章目錄 Git(一):初識GitGit簡介核心功能分布式特性結構與操作優勢與適用場景 創建本地倉庫git init配置name與email--global 工作區、暫存區與版本庫git addgit commitcommit后.git的變化 Git(一):初識Git Git簡介 Git 是一個分布式版本控制系統&…

第19天:初級數據庫學習筆記3

分組函數(多行處理函數) 即多個輸入對應一個輸出。前面講的數據處理函數是單行處理函數。(在公司中常說單,多行處理函數) 分組函數包括五個: max:最大值min:最小值avg&#xff1a…

Windows11下搭建Raspberry Pi Pico編譯環境

1. 系統與工具要求 PC平臺: Windows 11 專業版 Windows GCC: gcc-15.1.0-64.exe GNU Make: 4.3 Git: 2.49.0 cmake: 4.0.2 python:3.12.11 Arm GNU Toolchain Downloads – Arm Developer 2. 工具安裝與驗證 2.1 工具安裝 winget安裝依賴工具(Windows …

【C語言極簡自學筆記】重講運算符

一、算術操作符 算術操作符描述把兩個操作數相加-第一個操作數減去第二個操作數*把兩個操作數相乘/分子除以分母%取模運算符,整除后的余數 注意:1.除號的兩端都是整數的時候執行的是整數的除法,兩端只要有一個浮點數,就執行浮點…

持續集成 CI/CD-Jenkins持續集成GitLab項目打包docker鏡像推送k8s集群并部署至rancher

Jenkins持續集成GitLab項目 GitLab提交分支后觸發Jenkis任務 之前是通過jar包在shell服務器上進行手動部署,麻煩且耗時。現通過Jenkins進行持續集成實現CI/CD。以test分支為例 提交即部署。 由于是根據自己實際使用過程 具體使用到了 gitlabjenkinsdockerharborra…

Apache Iceberg與Hive集成:非分區表篇

引言 在大數據處理領域,Apache Iceberg憑借其先進的表格式設計,為大規模數據分析帶來了新的可能。當Iceberg與Hive集成時,這種強強聯合為數據管理與分析流程提供了更高的靈活性和效率。本文將聚焦于Iceberg與Hive集成中的非分區表場景&#…

webpack 如何區分開發環境和生產環境

第一種方法: 方法出處:命令行接口(CLI) | webpack 中文文檔 1.利用webpack.config.js 返回的是個函數,利用函數的參數,來區分環境 具體步驟 1) package.json文件:在npm scripts 命令后面追加 …

React組件通信——context(提供者/消費者)

Context 是 React 提供的一種組件間通信方式,主要用于解決跨層級組件 props 傳遞的問題。它允許數據在組件樹中"跨級"傳遞,無需顯式地通過每一層 props 向下傳遞。 一、Context 核心概念 1. 基本組成 React.createContext:創建 C…

“微信短劇小程序開發指南:從架構設計到上線“

1. 引言:短劇市場的機遇與挑戰 近年來,短視頻和微短劇市場呈現爆發式增長,用戶碎片化娛樂需求激增。短劇小程序憑借輕量化、社交傳播快、變現能力強等特點,成為內容創業的新風口。然而,開發一個穩定、流暢且具備商業價…

RPC與RESTful對比:兩種API設計風格的核心差異與實踐選擇

# RPC與RESTful對比:兩種API設計風格的核心差異與實踐選擇 ## 一、架構哲學與設計目標差異 1. **RPC(Remote Procedure Call)** - **核心思想**:將遠程服務調用偽裝成本地方法調用(方法導向) - 典型行為…

【pytest進階】pytest之鉤子函數

什么是 hook (鉤子)函數 經常會聽到鉤子函數(hook function)這個概念,最近在看目標檢測開源框架mmdetection,里面也出現大量Hook的編程方式,那到底什么是hook?hook的作用是什么? what is hook ?鉤子hook,顧名思義,可以理解是一個掛鉤,作用是有需要的時候掛一個東西…

深度學習計算——動手學深度學習5

環境:PyCharm python3.8 1. 層和塊 塊(block)可以描述 單個層、由多個層組成的組件或整個模型本身。 使用塊進行抽象的好處: 可將塊組合成更大的組件(這一過程通常是遞歸) 如 圖5.1.1所示。通過定義代碼來按需生成任意復雜度…

NodeJS的fs模塊的readFile和createReadStream區別以及常見方法

Node.js 本身沒有像 Java 那樣嚴格區分字符流和字節流,區別主要靠編碼(encoding)來控制數據是以 Buffer(二進制字節)形式還是字符串(字符)形式處理。 詳細解釋: 方面JavaNode.js字節…