使用AI进行需求分析的案例研究

news2024/11/15 15:56:31

生成式 AI 的潜在应用场景似乎无穷无尽。虽然这令人兴奋,但也可能让人不知所措。因此,团队在使用这项技术时需要有明确的目标:关键是要明确生成式 AI 在团队工作中能产生哪些实质性影响。

在软件工程中,一个引人注目的应用场景是需求分析。这是一个常常被忽视但充满挑战的环节,如果处理不当,可能会带来许多负面的后续影响。

本文描述了我们与一位客户进行的试点项目,我们的团队验证了一个假设,即利用生成式 AI 创建高质量的用户故事可以缩短交付周期并提高需求分析的质量。在这个案例研究中,我们验证了这一假设,并解释了我们做了什么以及得出了哪些结论。

方法

确定范围和目标

在选定该团队作为试点后,我们与他们举办了一次研讨会,确定哪些任务可以通过 AI 支持。我们还与他们合作,定义了使用 AI 可能带来的影响。研讨会达成了两个主要目标:

1. 找出适合 AI 支持的任务

团队讨论了他们经常进行且伴随一定难度的任务。随后,他们选择了部分高价值且 AI 可行性较高的任务。其中一个被选中的任务是需求分析,因为团队的工作领域相对复杂,开发过程中常常因需求被误解或遗漏边缘情况而返工。

使用生成式 AI 进行需求收集的实验

2. 定义假设和预期结果

在研讨会的第二步,团队定义了使用 AI 期望实现的目标。以下是需求分析的假设:

我们相信,使用生成式 AI 来辅助......将导致...我们知道它有价值的标志是...需要监控的风险
撰写史诗和用户故事— 减少后续流程中的返工— 更好地满足“完成定义”中的标准— 缩短交付时间— 缩短交付时间(从“分析开始”到“完成”)— 开发人员对故事的反馈更好— 开发人员的问题和澄清减少— 被阻塞的故事减少— 待办事项列表始终保持充足— 测试中发现的遗漏需求减少— 范围蔓延(AI 提供过多的想法)— 故事冗长,团队迷失在细节中

实施

我们利用服务工具包中的加速器帮助实施 AI 支持。HaivenTM 团队助理 是我们与客户合作时使用的一个加速器,它为软件交付团队提供了一个试点生成式 AI 支持的精简方式。在该项目中,它为用户提供了集成上下文信息和可重用提示词的 AI 功能。

团队的业务分析师(BA)和质量分析师(QA)是主要的工具使用者。他们在各自领域都有丰富经验,并在该团队工作了很长时间。在这次试点中,他们使用该工具将三个新的史诗需求分解为用户故事。每个史诗都是关于为现有功能增加额外能力的。

收获

上下文是关键!

其中一个关键收获是团队需要为 AI 提供多少上下文信息才能让其发挥作用。Haiven 在这方面非常有帮助,因为它允许用户定义可重用的上下文描述,每次与 AI 交互时都可以调用。这意味着他们不必每次都重复相同的上下文信息。

生成式 AI 如何帮助团队收集需求

正如我们之前提到的,团队的工作领域相对复杂,史诗的目标是扩展现有功能。因此,他们最初花了一些时间向 AI 描述领域和架构,以便每次与 AI 交互时能够重复利用。这些上下文描述既提供了逻辑和领域语言的总体描述,也明确了当前功能的工作原理,帮助 AI 进行功能扩展的支持。

这种方法显著提高了结果质量,但也表明,在他们的情况下,前期投入是必要的。类似编程助手,使用 AI 修改现有需求比从头设计新功能要困难得多。

用户需要时间适应 AI 支持

最初,用户在如何有效地与 AI 互动方面遇到了困难。了解大语言模型(LLM)响应的非确定性并理解其影响需要一个学习过程。随着时间推移,用户调整了对 AI 的期望,逐渐适应了将 AI 作为助手,而不是一个能够提供完美结果的软件。他们还学会了如何在聊天对话中让 AI 纠正方向,当初始输出不准确时进行调整。

开发人员经常报告在使用编程助手时会出现“审查疲劳”,因此我们也询问了 BA 和 QA 对审查 AI 输出的感受。他们表示审查这些场景并不太繁琐,至少在他们的经验水平下是如此。

很难定量衡量影响

我们发现,衡量 AI 在需求分析中的影响比在编程中的影响更难。

  • 这些任务不像编程那样频繁,因此对它们的改进难以单独量化。
  • 史诗比用户故事或技术任务更难比较,因此难以与历史数据直接对比。
  • 需求分析质量的一个指标是故事在流程中被阻塞或反复返回的次数,因为不完整或不清晰。这类数据通常不会非常细致地跟踪,因为那样会让流程和任务看板过于复杂。

尽管如此,无法定量衡量并不意味着它没有价值!以下关于质量和速度的观察基于 AI 用户在该案例中的估计。

对质量和团队流程的影响

重申一下,假设的一部分是使用 AI 进行需求分析会缩短交付周期,减少返工,并减少因进一步澄清而被阻塞的故事。

业务分析师报告说,由于他们的准备更加高效和全面,AI 助手使他们在与开发人员讨论时更加自信。他们能够回答开发人员在估算会议中提出的问题,不必再进行需求填补。

质量分析师发现,一旦上下文明确,AI 生成的验收标准和测试场景比他们自己生成的要好。当他们开始测试开发人员的工作时,发现的 bug 和返工原因减少了大约 10%,因为用户故事定义更好地涵盖了边缘场景。

对分析速度的影响

虽然三个史诗的样本量不足以得出明确结论,但团队估计分析时间减少了约 20%,尽管创建上下文花费了一定时间。随着上下文创建的优化和上下文的重复

使用,未来的时间节省预计会更为显著。

结论与展望

总之,这项案例研究表明,AI 能够在质量、速度和整体团队流程上带来好处。在该组织中,下一步是将这种方法应用于其他团队,这些团队的经验水平和流程有所不同,以验证是否能重复这些收获,并进一步提高效率。

这项经验以及其他 AI 在软件团队中的使用经验再次证实了上下文编排的重要性。

  • 上述团队工作在相对复杂的领域,他们发现,只有在为 AI 提供了详细的领域上下文描述后,AI 才真正有用。对于那些在电子商务或客户数据管理等常见领域工作的团队,这一障碍要低得多,因为这些领域的模型训练数据通常能广泛适用于相关用例,而无需额外的引导。

  • Haiven 支持半手动的上下文编排,并允许重复使用上下文描述:团队将领域描述作为提示词的一部分,并为助理应用程序编制了相关维基文档的索引。虽然这需要一些设置工作,但它仍然是探索 AI 潜力的精简方式。然而,我们密切关注软件工具市场的创新,以实现更加自动化和智能化的上下文编排,从而为客户提供最佳建议,帮助他们充分利用 AI。

  • 代码库是应用程序工作原理的最终真实信息。它始终比可能过时或不准确的文档或描述更可靠。在本案例研究之外,我们已经与客户一起探索了为 AI 提供代码库上下文的有趣而强大的方式,这使得用户能够在不需要理解或浏览代码的情况下提出问题。尽管该团队在此次试点中未使用此类工具,但其潜力显而易见,尤其是在指定现有功能的更改时。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM Agent应用开发

  • 区块链应用开发

  • 大数据开发挖掘经验

  • 推荐系统项目

    目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QMT如何获取股票基本信息?如上市时间、退市时间、代码、名称、是否是ST等。QMT量化软件支持!

获取股票概况 包含股票的上市时间、退市时间、代码、名称、是否是ST等。 #获取合约基础信息数据 该信息每交易日9点更新 #内置Python 提示 旧版本客户端中,函数名为ContextInfo.get_instrumentdetail 调用方法 内置python ContextInfo.get_instrument_detai…

全连接神经网络

这里写目录标题 全连接神经网络vs前馈神经网络基于全连接神经网络的手写数字识别使用Pytorch实现纯Python实现 全连接神经网络的局限 端到端学习 深度学习有时也称为端到端机器学习(end-to-end machine learning)。这里所说的端到端是指从一端到另一端的…

西门子因为TC在与PTC及达索的混战中占据优势,西门子与SAP的合作价值几何?(2)

今天这篇文章是通过腾讯会议先录了一个视频然后转录的,看看效果怎么样。 主要是我昨天写了一篇公众号的文章,这篇文章是转自国外的一个记者。写的是他对这个工业软件三巨头西门子、达索和PTC之间的竞争做的一个访谈性质的文章,谈了他的一些看…

1.1.5 计算机网络的性能指标(上)

信道: 表示向某一方向传送信息的通道(信道!通信线路)一条通信线路在逻辑上往往对应一条发送信道和一条接收信道。 速率: 指连接到网络上的节点在信道上传输数据的速率。也称数据率或比特率、数据传输速率。 速率单…

python常见的魔术方法

什么是魔术方法 Python类的内置方法,各自有各自的特殊功能,被称之为魔术方法 常见的魔术方法有以下: __init__:构造方法 __str__:字符串方法 __lt__:小于、大于符号比较 __le__:小于等于、大于等于符合比较 __eq__:等于符合比较__init__ c…

【论文速看】DL最新进展20240925-医学图像分割、目标跟踪、图像超分

目录 【医学图像分割】【目标跟踪】【图像超分】 【医学图像分割】 [2024] UU-Mamba: Uncertainty-aware U-Mamba for Cardiovascular Segmentation 论文链接:https://arxiv.org/pdf/2409.14305 代码链接:https://github.com/tiffany9056/UU-Mamba 在深…

【NLP】循环神经网络--RNN学习.day3

一.初步认识RNN 循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的深度学习模型。与传统的静态神经网络相比,RNN 可以有效处理输入数据的时间序列特性。这使得 RNN 在处理自然语言处理(NLP)、时间…

【Python报错已解决】TypeError: forward() got an unexpected keyword argument ‘labels‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

使用API有效率地管理Dynadot域名,注册域名服务器(NS)信息

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…

【9.模块化开发和代码重用之——头文件、动静态库】

目录 前言软件工程的基本原则程序的模块化开发和代码重用技术开发自己的头文件定义实现自己的头文件编写实现文件(源文件)编译代码链接目标文件到可执行文件 实现类似标准库效果的几种方法实际使用的开发方法头文件库 尝试自动链接静态库(好像…

替换jar包中class文件

虽然.jar文件是一种Java归档文件,可以使用压缩软件打开,但是并不能通过压缩软件来修改其内容,只能通过jar命令来更新文件。 一、背景 在使用血氧仪SDK时出现了问题,经过分析是在申请权限时版本不兼容导致的闪退异常,…

大数据新视界 --大数据大厂之 Kylin 多维分析引擎实战:构建数据立方体

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

全国信息学奥赛泄题事件:一场对公平与公正的严峻考验

在科技与教育日益融合的今天,信息学奥林匹克竞赛作为选拔计算机科学领域未来人才的重要平台,始终承载着培养青少年逻辑思维、编程能力和创新潜力的重任。然而,2024年9月发生的一起全国CSP-J/S认证考试泄题事件,却如同一枚重磅炸弹…

SpringBoot教程(三十) | SpringBoot集成Shiro权限框架

SpringBoot教程(三十) | SpringBoot集成Shiro权限框架 一、 什么是Shiro二、Shiro 组件核心组件其他组件 三、流程说明shiro的运行流程 四、SpringBoot 集成 Shiro (shiro-spring-boot-web-starter方式)1. 添加 Shiro 相关 maven2…

领导让部署一个系统服务,我该怎么弄?

文章目录 Dockerdocker基础通过Dockerfile构建镜像打包镜像,离线使用docker修改代理内容 Nginxubuntu安装nginxnginx基本操作 问题Sqlalchemy可以反射一些表,另外一些反射为None查看服务器的架构和版本,查看本机外网IPPG数据库创建角色创建库…

CentOS7 离线部署docker和docker-compose环境

一、Docker 离线安装 1. 下载docker tar.gz包 下载地址: Index of linux/static/stable/x86_64/ 本文选择版本:23.0.6 2.创建docker.service文件 vi docker.service文件内容如下: [Unit] DescriptionDocker Application Container Engi…

SpringBoot中XXL-JOB实现灵活控制的分片处理方案

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

9.25盒马鲜生一面

1.自我介绍 2.css两种盒子模型 ​3.rem和em 4.px概念 5.transition和animation的区别 6.移动端适配方案 7.vh、vw、% 8.js基本数据类型 9.call、apply、bind的区别 10.js实现继承的方法 11.get和post的区别 12.web安全&#xff08;XSS&#xff0c;CSRF&#xff09; …

甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?

在工作中、团队协作时&#xff0c;可能遇到的问题&#xff0c;如集成测试等场景。但是作为偏前端的全栈&#xff0c;锅从天上来&#xff0c;不是你想甩就能甩&#xff0c;尤其面对测试等比较强势的团体&#xff08;bug创造者&#xff09;&#xff0c;你必须有强大的心理承受能力…

Vscode Run Code Py中文乱码问题

F1打开命令行界面&#xff0c;找到settings.json文件&#xff1b;选Workspace这个 找/直接输"code-runner.executorMap" python值改为"$pythonPath $fullFileName"