[论文阅读] 人工智能 + 软件工程 | 从模糊到精准:模块化LLM agents(REQINONE)如何重塑SRS生成
从模糊到精准:模块化LLM agents(REQINONE)如何重塑SRS生成
论文信息
- 原标题:REQINONE: A Large Language Model-Based Agent for Software Requirements Specification Generation
- 主要作者及机构:
Taohong Zhu, Lucas C. Cordeiro(Department of Computer Science, The University of Manchester, UK);Youcheng Sun(Mohamed bin Zayed University of Artificial Intelligence, Abu Dhabi, UAE) - APA引文格式:
Zhu, T., Cordeiro, L. C., & Sun, Y. (2025). REQINONE: A Large Language Model-Based Agent for Software Requirements Specification Generation. arXiv preprint arXiv:2508.09648v1 [cs.SE]. https://arxiv.org/abs/2508.09648v1
一段话总结
本文提出了基于大语言模型(LLM)的智能体REQINONE,通过将软件需求规格说明书(SRS)生成任务拆解为“总结”“需求提取”“需求分类”三个子任务,并为每个任务设计定制化提示模板,解决了传统手动撰写SRS耗时、模糊,以及现有LLM方法易产生幻觉、可控性差的问题。实验表明,REQINONE生成的SRS在准确性、结构性上优于现有自动化方法和初级需求工程师的产出,且其需求分类性能与当前最优模型相当甚至更优,相关代码、数据集已开源。
研究背景
软件需求规格说明书(SRS)是软件项目的“蓝图”,定义了系统功能、约束和运行环境,直接影响设计、开发和测试环节。但写好一份SRS并不容易:
- 手动撰写的痛点:用自然语言描述易导致模糊、矛盾(比如“系统应快速响应”中的“快速”没有量化标准),且需反复沟通,耗时费力。
- 现有工具的局限:像Visual Paradigm、ReqView等工具虽提供模板,但仍需大量手动输入,无法自动生成内容;部分自动化方法(如NLSSRE)仅能提取需求,无法生成完整SRS(如用例、术语表)。
- LLM方法的问题:近年LLM(如GPT、LLaMA)被用于SRS生成,但直接让模型“一步到位”写完整SRS,容易出现“幻觉”(生成不存在的需求),且难以保证各部分结构一致。
打个比方:手动写SRS像用手写信,慢且易出错;传统工具像给了信纸模板,但内容还得自己填;直接用LLM生成像让AI代笔,可能写得流畅但偏离原意。REQINONE的目标就是让AI“按步骤写”,既快又准。
创新点
- 模块化任务拆解:将复杂的SRS生成拆分为“总结”“需求提取”“需求分类”三个子任务,让LLM专注于单一目标,避免“一步到位”的混乱。
- 定制化提示模板:每个子任务都有专属模板,比如提取任务要求用固定格式(“The <主体> shall <动作> when <条件>”),分类任务提供11种非功能需求的定义和关键词,减少幻觉并保证一致性。
- 高可扩展性:支持用户自定义SRS模板(只需修改提示模板),非功能需求的分类也可根据项目调整,适应不同场景。
研究方法和思路
REQINONE的工作流程分三步,像流水线一样生成SRS:
-
总结任务
- 目标:生成SRS中的“引言”“利益相关者”“用例”“术语表”等概括性内容。
- 方法:通过提示模板让LLM扮演“需求助手”,基于输入文本回答预设问题(如“文档面向谁?”),并要求标注内容来源(避免幻觉)。
-
需求提取任务
- 目标:从输入文本中提取结构化需求。
- 方法:用模板定义“需求”为“产品必须满足的物理或功能需求”,并强制按固定格式输出(如“系统在用户登录时应验证密码”),同时附带来源和提取理由。
-
需求分类任务
- 目标:将提取的需求分为“功能需求(FR)”和“非功能需求(NFR)”,并细化NFR为可用性、性能等11个子类。
- 方法:模板提供FR/NFR定义、NFR子类关键词(如“可用性”关联“uptime”),并附示例(如“系统应24小时可用”属于可用性需求)。
主要贡献
核心贡献 | 具体说明 |
---|---|
生成高质量SRS | REQINONE(GPT-4o)在一致性、完整性等指标上超越基线方法和初级工程师。 |
提升需求质量 | 生成的需求更明确、正确(LLaMA3驱动时表现最优),因结构化模板减少了模糊性。 |
优异的分类性能 | 在PROMISE数据集上与NoRBERT相当,在新数据集ReqFromSRS上表现更优(泛化性强)。 |
开源资源支持研究 | 提供代码、提示模板、数据集(ReqFromSRS)和实验结果:https://github.com/TaohongZ/ReqInOne。 |
关键问题(问答形式)
-
REQINONE如何解决LLM生成SRS时的“幻觉”问题?
答:通过要求所有内容附带来源(如总结内容标注来自输入文本哪部分,提取的需求附提取理由),强制LLM基于输入生成,减少无依据内容。 -
为什么要把SRS生成拆分为三个子任务?
答:复杂任务一步完成时,LLM易出错;拆解后每个任务更简单,LLM可专注提升单一环节质量,整体效果更优。 -
REQINONE支持自定义SRS模板吗?
答:支持。用户只需修改总结任务的提示模板,定义新模板中的概括性 sections 即可。 -
与直接用GPT-4生成SRS相比,REQINONE的优势是什么?
答:REQINONE生成的SRS在可追溯性等指标上更优,且GPT-4o成本仅为GPT-4的1/12,更划算。
总结
REQINONE通过模块化设计和定制提示模板,让LLM生成SRS的过程更可控、结果更优质,既解决了手动撰写的低效问题,又克服了现有LLM方法的缺陷。实验证明其在SRS质量、需求分类上的优势,且开源资源为后续研究提供了便利。未来若加入自动化验证机制,有望进一步提升SRS的可靠性。