使用AI进行需求分析的案例研究
生成式 AI 的潜在应用场景似乎无穷无尽。虽然这令人兴奋,但也可能让人不知所措。因此,团队在使用这项技术时需要有明确的目标:关键是要明确生成式 AI 在团队工作中能产生哪些实质性影响。
在软件工程中,一个引人注目的应用场景是需求分析。这是一个常常被忽视但充满挑战的环节,如果处理不当,可能会带来许多负面的后续影响。
本文描述了我们与一位客户进行的试点项目,我们的团队验证了一个假设,即利用生成式 AI 创建高质量的用户故事可以缩短交付周期并提高需求分析的质量。在这个案例研究中,我们验证了这一假设,并解释了我们做了什么以及得出了哪些结论。
方法
确定范围和目标
在选定该团队作为试点后,我们与他们举办了一次研讨会,确定哪些任务可以通过 AI 支持。我们还与他们合作,定义了使用 AI 可能带来的影响。研讨会达成了两个主要目标:
1. 找出适合 AI 支持的任务
团队讨论了他们经常进行且伴随一定难度的任务。随后,他们选择了部分高价值且 AI 可行性较高的任务。其中一个被选中的任务是需求分析,因为团队的工作领域相对复杂,开发过程中常常因需求被误解或遗漏边缘情况而返工。
2. 定义假设和预期结果
在研讨会的第二步,团队定义了使用 AI 期望实现的目标。以下是需求分析的假设:
我们相信,使用生成式 AI 来辅助... | ...将导致... | 我们知道它有价值的标志是... | 需要监控的风险 |
---|---|---|---|
撰写史诗和用户故事 | — 减少后续流程中的返工— 更好地满足“完成定义”中的标准— 缩短交付时间 | — 缩短交付时间(从“分析开始”到“完成”)— 开发人员对故事的反馈更好— 开发人员的问题和澄清减少— 被阻塞的故事减少— 待办事项列表始终保持充足— 测试中发现的遗漏需求减少 | — 范围蔓延(AI 提供过多的想法)— 故事冗长,团队迷失在细节中 |
实施
我们利用服务工具包中的加速器帮助实施 AI 支持。HaivenTM 团队助理 是我们与客户合作时使用的一个加速器,它为软件交付团队提供了一个试点生成式 AI 支持的精简方式。在该项目中,它为用户提供了集成上下文信息和可重用提示词的 AI 功能。
团队的业务分析师(BA)和质量分析师(QA)是主要的工具使用者。他们在各自领域都有丰富经验,并在该团队工作了很长时间。在这次试点中,他们使用该工具将三个新的史诗需求分解为用户故事。每个史诗都是关于为现有功能增加额外能力的。
收获
上下文是关键!
其中一个关键收获是团队需要为 AI 提供多少上下文信息才能让其发挥作用。Haiven 在这方面非常有帮助,因为它允许用户定义可重用的上下文描述,每次与 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 发布!
相关文章:

使用AI进行需求分析的案例研究
生成式 AI 的潜在应用场景似乎无穷无尽。虽然这令人兴奋,但也可能让人不知所措。因此,团队在使用这项技术时需要有明确的目标:关键是要明确生成式 AI 在团队工作中能产生哪些实质性影响。 在软件工程中,一个引人注目的应用场景是…...

Python内置的re库
Python内置的re库是专门用于处理正则表达式的标准库。它提供了一系列函数和类,使得在Python程序中可以使用正则表达式进行字符串的搜索、替换、分割等操作。re库的使用非常广泛,几乎任何需要复杂文本处理的场景都可以用到它。 主要函数 1、complie函数…...

毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...

jQuery 简介⑤属性操作
九、属性操作 jQuery的属性操作方法一览表 $("selector").val(); // 获取第一个匹配元素的value值(一般用于表单控("selector").val("Hello"); // 设置所有匹配元素的value值为"Hello" $("selector").html();// 获取第一个…...

[Linux] Linux操作系统 进程的状态
标题:[Linux] Linux操作系统 进程的状态 个人主页:水墨不写bug (图片来源于网络) 目录 一、前置概念的理解 1.并行和并发 2.时间片 3.进程间具有独立性 4.等待的本质 正文开始: 在校的时候,你一定学过《…...

深入解析Python 中的 sortedcontainers 库:高效的排序数据结构
在日常的 Python 编程中,列表(list)、集合(set)和字典(dict)是常用的数据结构。然而,在某些特定的场景下,我们需要对数据进行排序,并且希望在插入、删除或访问…...

什么是服务器日志,日志有什么作用?
前言 服务器日志是指服务器等电脑设备或软件的运作记录。这些日志记录了服务器接收客户端处理请求的过程以及服务器对这些请求的处理结果。服务器日志对于排查和解决计算机系统和网络应用中的问题至关重要,因为它们包含了用于调试问题的消息、服务器状态以及其他…...

Codeforces Round 971 (Div. 4)A-G1题解
Codeforces Round 971 (Div. 4) A 就是b - a #include <bits/stdc.h> #define int long longusing namespace std;void solve() {int a, b;cin >> a >> b;cout << b - a << endl; }signed main() {ios::sync_with_stdio(false);cin.tie(0);co…...

QT----基于QML的计时器
赶上了实习的末班车,现在在做QML开发,第一天的学习成果,一个计时器.逻辑挺简单的,纯QML实现,代码在仓库,可以对比文档和提交记录学习起来更清晰 QT-Timer 学习使用c的listmodel 学习使用了如何用c的listmodel来存储数据. 新建一个TImeListModel类继承自QAbstractListModel c…...

Stable Diffusion的高分辨率修复(Hires.fix)
Stable Diffusion的高分辨率修复(Hires.fix)是一项重要的功能,它旨在提高生成图像的分辨率和细节,从而使画面变得更加清晰和精细。以下是关于Stable Diffusion高分辨率修复(Hires.fix)的详细解释࿱…...

智慧体育馆可视化:实时监控与智能管理
利用图扑可视化技术实现对体育馆的实时监控和数据分析,提升运营效率、观众体验和安全管理水平,打造智能化场馆环境。...

【NLP】基于“检测器-纠错器”中文文本纠错框架
前言 许多方法将中文拼写纠正(检测和纠正给定中文句子中的错误字符)视为序列标注任务,并在句子对上进行微调。一些方法使用错误检测器作为初步任务,然后将检测结果用于辅助后续的错误纠正过程。然而,现有方法在使用检…...

vue 中加载 Mapbox GL JS Examples
Mapbox GL JS 示例 1. Mapbox GL JS的基础使用2. style 的使用2.1. 切换 style2.2. 配置一个第三方 style (添加一个Layer)2.3. 配置一个带有 slot 的 style2.4. 创建一个自定义 style 的 layer 类实现 WebGL 内容2.5. 添加Marker2.6. 添加 geojson 格式…...

Vue3 中组件传递 + css 变量的组合
文章目录 需求效果如下图所示代码逻辑代码参考 需求 开发一个箭头组件,根据父组件传递的 props 来修改 css 的颜色 效果如下图所示 代码逻辑 代码 父组件: <Arrow color"red" />子组件: <template><div class&…...

秋分之际,又搭建了一款微信记账本小程序
在这个金色的季节里,每一粒粮食都蕴含着生命的奇迹,每一片叶子都在诉说着成长的故事。秋分之际,又搭建了一款微信记账本小程序。 产品概述 微信记账本小程序是一款便捷的个人财务管理工具,旨在帮助用户轻松记录、管理和分析日常…...

聚合函数count 和 group by
count函数: count(列名) SELECT COUNT(sid) FROM grade 统计列中所有的数值个数,会忽略null值。 count(*)和count(1) SELECT COUNT(*) FROM grade SELECT COUNT(1) FROM grade 统…...

Vue的工程化和element快速入门
vue项目的创建: vue项目的启动方式: vue项目开发流程: 代码示例: <!-- <script>//写数据export default{data(){return{msg: 上海}}} </script> --><script setup>import {ref} from vue;//调用ref函数&…...

【Kubernetes】常见面试题汇总(三十一)
目录 83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 …...

在 Windows 上安装和配置 NVIDIA 驱动程序、CUDA、cuDNN 和 TensorRT
在 Windows 上安装和配置 NVIDIA 驱动程序、CUDA、cuDNN 和 TensorRT 1. 安装 NVIDIA 图形驱动程序2. 安装 CUDA Toolkit3. 安装 cuDNN4.安装 TensorRT5. 常见问题1. 安装 NVIDIA 图形驱动程序 首先需要安装兼容 CUDA 的 NVIDIA 驱动程序。 下载最新驱动: 访问 NVIDIA 官网,…...

京准电钟:NTP网络校时服务器助力校园体育场馆
京准电钟:NTP网络校时服务器助力校园体育场馆 京准电钟:NTP网络校时服务器助力校园体育场馆 体育场馆数字时钟系统可为观众及工作人员提供标准时间信息,为计算机及其他系统提供标准时间源,为协调场馆各业务系统与各部门的工作提供…...

9.25度小满一面
1.map的底层 2.unorder_map哈希表有自己实现过吗?哈希冲突 3.poll和epoll和select的优缺点、 4.线程同步机制是用来做什么的? 5.五子棋项目问题-- 算法题: 6.LeetCode.重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0…...

mysql批量修改表前缀
现有表前缀xh,批量修改为fax_需要怎么做 SELECTCONCAT(ALTER TABLE ,table_name, RENAME TO fax_,substring(table_name, 3),;) FROMinformation_schema. TABLES WHEREtable_name LIKE xh_%; 运行之后可以但是生成了一批修改表明的命令 此时批量复制执行就可实现批量修改表前…...

算法复杂度
1. 数据结构前⾔ 1.1数据结构 数据结构是计算机存储数据,组织数据的方式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。常见的数据结构有线性表,树,图,哈希等。 1.2 算法 算法是一种计算过程,输…...

vue到出excel
安装 npm install exceljs npm install file-saver<template><button click"dade66">导出 66</button> </template><script> import ExcelJS from exceljs; import { saveAs } from file-saver;export default {data() {return {data…...

【延时队列的实现方式】
文章目录 延时队列JDK自带的延时队列实现Redis实现延迟队列RabbitMQ 延时队列 延时队列 延时队列是一种特殊类型的队列,它允许元素在特定时间间隔后才能被处理。这种队列在处理具有延迟需求的任务时非常有用,例如定时任务、事件驱动系统等 延时队列在项…...

Fyne ( go跨平台GUI )中文文档- 扩展Fyne (七)
本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…...

Qt (19)【Qt 线程安全 | 互斥锁QMutex QMutexLocker | 条件变量 | 信号量】
阅读导航 引言一、互斥锁1. QMutex(1)基本概念(2)使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker(1)基本概念(2)使用示例 3. QReadWriteLocker、QR…...

Java语法-类和对象(上)
1. 面向对象的初步认识 1.1 什么是面向对象 概念: Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 1.2 面向对象VS面向过程 如:洗衣服 面向过程: 注重的是洗衣服的过程,少了一个环节也不…...

Presto如何配置资源队列或资源组
Presto的任务队列配置主要涉及到查询队列和资源组的配置,这些配置通常用于管理Presto集群中的查询执行和资源分配。但是注意这两个东西是共存,互补的关系,并不需要纠结那种配置方式更加出色 一、查询队列配置 Presto的查询队列配置主要通过…...

828华为云征文|使用Flexus X实例集成ES搜索引擎
目录 一、应用场景 1.1 Flexus X实例概述 1.2 ES搜索引擎 二、安装相关服务 2.1 安装Elasticsearch7.17.0 2.2 安装kibana7.17.0 三、开通安全组规则 四、整体感受 4.1 Flexus X实例 4.2 使用感觉 一、应用场景 1.1 Flexus X实例概述 Flexus X实例是华为云推出的一款…...