当前位置: 首页 > news >正文

[论文阅读] 人工智能 + 软件工程 | 从模糊到精准:模块化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“按步骤写”,既快又准。

创新点

  1. 模块化任务拆解:将复杂的SRS生成拆分为“总结”“需求提取”“需求分类”三个子任务,让LLM专注于单一目标,避免“一步到位”的混乱。
  2. 定制化提示模板:每个子任务都有专属模板,比如提取任务要求用固定格式(“The <主体> shall <动作> when <条件>”),分类任务提供11种非功能需求的定义和关键词,减少幻觉并保证一致性。
  3. 高可扩展性:支持用户自定义SRS模板(只需修改提示模板),非功能需求的分类也可根据项目调整,适应不同场景。

研究方法和思路

REQINONE的工作流程分三步,像流水线一样生成SRS:

  1. 总结任务

    • 目标:生成SRS中的“引言”“利益相关者”“用例”“术语表”等概括性内容。
    • 方法:通过提示模板让LLM扮演“需求助手”,基于输入文本回答预设问题(如“文档面向谁?”),并要求标注内容来源(避免幻觉)。
  2. 需求提取任务

    • 目标:从输入文本中提取结构化需求。
    • 方法:用模板定义“需求”为“产品必须满足的物理或功能需求”,并强制按固定格式输出(如“系统在用户登录时应验证密码”),同时附带来源和提取理由。
  3. 需求分类任务

    • 目标:将提取的需求分为“功能需求(FR)”和“非功能需求(NFR)”,并细化NFR为可用性、性能等11个子类。
    • 方法:模板提供FR/NFR定义、NFR子类关键词(如“可用性”关联“uptime”),并附示例(如“系统应24小时可用”属于可用性需求)。

在这里插入图片描述

主要贡献

核心贡献具体说明
生成高质量SRSREQINONE(GPT-4o)在一致性、完整性等指标上超越基线方法和初级工程师。
提升需求质量生成的需求更明确、正确(LLaMA3驱动时表现最优),因结构化模板减少了模糊性。
优异的分类性能在PROMISE数据集上与NoRBERT相当,在新数据集ReqFromSRS上表现更优(泛化性强)。
开源资源支持研究提供代码、提示模板、数据集(ReqFromSRS)和实验结果:https://github.com/TaohongZ/ReqInOne。

关键问题(问答形式)

  1. REQINONE如何解决LLM生成SRS时的“幻觉”问题?
    答:通过要求所有内容附带来源(如总结内容标注来自输入文本哪部分,提取的需求附提取理由),强制LLM基于输入生成,减少无依据内容。

  2. 为什么要把SRS生成拆分为三个子任务?
    答:复杂任务一步完成时,LLM易出错;拆解后每个任务更简单,LLM可专注提升单一环节质量,整体效果更优。

  3. REQINONE支持自定义SRS模板吗?
    答:支持。用户只需修改总结任务的提示模板,定义新模板中的概括性 sections 即可。

  4. 与直接用GPT-4生成SRS相比,REQINONE的优势是什么?
    答:REQINONE生成的SRS在可追溯性等指标上更优,且GPT-4o成本仅为GPT-4的1/12,更划算。

总结

REQINONE通过模块化设计和定制提示模板,让LLM生成SRS的过程更可控、结果更优质,既解决了手动撰写的低效问题,又克服了现有LLM方法的缺陷。实验证明其在SRS质量、需求分类上的优势,且开源资源为后续研究提供了便利。未来若加入自动化验证机制,有望进一步提升SRS的可靠性。

http://www.lryc.cn/news/621177.html

相关文章:

  • OpenCV图像处理2:边界填充与平滑滤波实战
  • 数据结构之顺序表相关算法题
  • latex 中破折号的输入
  • 【PCB设计经验】3D模型在线预览!效率便捷!
  • 【浅学】tflite-micro + ESP32S3 + VScode + ESP-IDF 基于例程快速实现自己的图像分类模型训练部署全流程
  • Python学习-----3.基础语法(2)
  • 异步同步,阻塞非阻塞,reactor/proactor
  • spring boot配置es
  • CPP模板编程
  • Redis7学习--持久化机制 RDB与AOF
  • 汽车生产线白皮书:稳联技术Profinet转Ethernet IP网关通信高效性
  • StarRocks优化统计分析
  • Redis入门到实战教程,深度透析redis
  • 零信任架构(Zero Trust Architecture, ZTA)(通过动态验证和最小权限控制,实现对所有访问请求的严格授权和持续监控)
  • Java应用架构实战指南:主流模式解析与Spring落地实践
  • diffusers库学习--pipeline,模型,调度器的基础使用
  • Docker exec进入容器命令的入门教程
  • 使用正则表达式 \s+ 作为分隔符处理字符串
  • 【cmake】编译cpp文件,安装MinGW
  • Python 进阶详解:正则表达式与 JSON —— 文本处理与数据交换的核心技能
  • K8s-持久化存储
  • 第1节:多模态大模型入门(多模态大模型基础教程)
  • 安装 Nginx
  • Spring Boot + Redis + 布隆过滤器防止缓存穿透
  • UML函数原型中constraint的含义,有啥用?
  • 读《精益数据分析》:移情(Empathy)—— 验证真实需求,避免伪需求陷阱
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?
  • 7、C 语言数组进阶知识点总结
  • 分布式事务、锁、链路追踪
  • Mybatis学习笔记(九)