[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
如何挖掘可解释性需求?三种方法的深度对比研究
研究背景:当软件变复杂,我们需要“说明书”
想象你买了一台智能家电,却发现它的运行逻辑完全看不懂,按钮按下后毫无反应,故障时也不提示原因——这就是现代软件系统面临的困境。随着AI、大数据技术的普及,软件功能越来越强大,但复杂度也呈指数级增长。用户看不懂系统如何运作,开发者说不清决策逻辑,监管机构更难判断是否合规,这种“黑箱化”问题催生了对可解释性需求的迫切需求
可解释性需求就像软件的“说明书”,它能告诉用户“系统为什么这样做”“出错时如何解决”,甚至帮助开发者优化设计。但问题来了:如何高效收集这些需求?传统的访谈、焦点小组和问卷调查,哪个更适合?就像去医院看病,有的医生喜欢问详细病史(访谈),有的擅长组织病友讨论(焦点小组),还有的习惯用问卷做大规模筛查(调查),但哪种方法能更精准地找到“病因”?这正是本文要解决的核心问题。
主要贡献:给需求工程师的“工具箱”指南
本文就像一份“需求收集方法论地图”,为开发者提供了3大核心价值:
- 方法效率排行榜:告诉你“哪种方法最省时间”“哪种方法能挖到最多需求”,比如访谈是“时间杀手”但精准度高,调查是“海量数据收割机”但重复率高。
- 分类工具的使用时机:发现“先让用户自由表达,再用分类框架引导”(延迟分类法)能收集到更丰富的需求,就像先让孩子自由画画,再教他们色彩理论,反而能激发更多创意。
- 混合方法的黄金组合:提出“调查+访谈”的组合拳,既能覆盖大规模用户,又能深入挖掘细节,好比先用CT做全身扫描,再用显微镜分析病灶。
创新点:打破“分类工具越早用越好”的迷思
以往研究总认为“分类框架能让需求收集更有条理”,但本文却发现:太早给用户分类表,反而会限制他们的想象力!就像你去餐厅点菜,如果服务员一开始就递上固定套餐菜单,你可能想不到尝试隐藏菜品;但如果先让你自由描述想吃的口味,再推荐对应的菜品分类,反而能点到更合心意的菜。
本文提出的**“两阶段需求收集法”**(先开放收集,再分类引导),就像给需求工程师一把“万能钥匙”,既保留了用户的原始创意,又能通过分类框架提升需求的结构化程度,堪称“鱼和熊掌兼得”的典范。
核心方法:一场真实企业里的“需求收集实验”
实验场景
选一家德国大型IT公司的人事管理软件作为研究对象,因为这类软件涉及员工考勤、绩效、薪资等敏感操作,用户对“系统如何运作”的解释需求格外强烈,就像员工每天都在问“为什么我的工资算错了?”“为什么考勤记录消失了?”
实验方法
-
样本选择:
- 焦点小组:2组,每组6人,模拟“头脑风暴式讨论”
- 访谈:18人,一对一深入交流,像“心理咨询式提问”
- 问卷调查:188人,大规模收集数据,类似“全民普查”
-
关键变量:
- 分类工具的使用时机:
- 直接法:一开始就给用户分类表(如“系统行为”“隐私安全”等类别)
- 延迟法:先让用户自由描述需求,再用分类表补充
- 分类工具的使用时机:
-
数据指标:
- 效率:每人每小时收集的独特需求数(避免重复劳动)
- 效果:总需求数和需求多样性(覆盖多少种不同类型的需求)
核心结果:用数据说话的“方法优缺点清单”
1. 效率对比:访谈是“时间管理大师”
- 访谈:每人每小时能收集12.42个独特需求,就像高效的“需求挖掘机”,适合时间有限但需要深度挖掘的场景。
- 调查:虽然总需求数最多(471条),但重复率高达22.7%,相当于10个人里有2个人说了同样的话,需要花大量时间去重。
- 焦点小组:效率最低,因为小组讨论容易“跟风发言”,独特需求数最少。
2. 效果对比:调查是“需求广度王者”
- 调查:覆盖了7个需求类别(如系统行为、用户界面等),尤其在“用户界面”需求上占比18%,说明大规模用户更关注“界面是否易懂”这类直观问题。
- 访谈:在“业务领域知识”需求上占比41%,比如员工更关心“绩效计算规则是否合理”,这类深层需求需要一对一交流才能挖掘。
- 焦点小组:意外发现“功能缺失”需求占比22%,比如用户集体吐槽“缺少假期审批进度提醒”,体现了群体讨论激发共性需求的优势。
3. 分类工具的魔法时刻:延迟使用更有效
- 延迟分类法让访谈的独特需求数提升了26%,就像先让用户“自由联想”再“归类整理”,能同时收获创意和结构。
- 直接分类法会导致需求集中在“系统行为”等常见类别,而延迟法能挖掘出“隐私安全”等容易被忽视的需求,就像先让学生自由写作文,再教他们划分段落,反而能写出更有层次的文章。
论文引文格式
Obaidi M, Droste J, Deters H, et al. How to Elicit Explainability Requirements? A Comparison of Interviews, Focus Groups, and Surveys[J]. arXiv preprint arXiv:2505.23684v1, 2025.
相关文章:
[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
如何挖掘可解释性需求?三种方法的深度对比研究 研究背景:当软件变复杂,我们需要“说明书” 想象你买了一台智能家电,却发现它的运行逻辑完全看不懂,按钮按下后毫无反应,故障时也不提示原因——这就是现代…...

双空间知识蒸馏用于大语言模型
Dual-Space Knowledge Distillation for Large Language Models 发表:EMNLP 2024 机构:Beijing Key Lab of Traffic Data Analysis and Mining 连接:https://aclanthology.org/2024.emnlp-main.1010.pdf 代码:GitHub - songmz…...

OpenCV CUDA模块特征检测------角点检测的接口createMinEigenValCorner()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数创建一个 基于最小特征值(Minimum Eigenvalue)的角点响应计算对象,这是另一种经典的角点检测方法&…...
Git 提交备注应该如何规范
Git 提交备注应该如何规范 在软件开发过程中,Git 作为版本控制系统被广泛使用,而规范的提交备注对于代码的可维护性、团队协作以及项目的长期发展都有着至关重要的意义。良好的提交备注能够清晰地记录代码变更的原因、范围和影响,方便团队成…...
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发 一、C#语言Web和移动项目开发1. Web项目开发2. 移动项目开发 二、ASP.NET Core1. ASP.NET Core 基础架构1.1 请求处理管道1.2 主机模型1.3 服务器选项 2. 核心新特性2.1 NativeAOT 支持2.2 增强的身份验证方案2.…...
Qt OpenGL 实现交互功能(如鼠标、键盘操作)
一、基本概念 1. Qt 事件系统与 OpenGL 渲染的协同 Qt 提供了完善的事件处理机制,而 OpenGL 负责图形渲染。交互的实现本质上是: 事件捕获:通过 Qt 的事件系统(如 mousePressEvent、keyPressEvent)捕获用户输入。 状态更新:根据输入事件更新场景状态(如相机位置、模型…...
【Go语言基础【3】】变量、常量、值类型与引用类型
文章目录 一、值(Value)与字面量(Literal)1. 值2. 字面量 二、变量(Variable)1. 声明方式2. 赋值方式3. 变量默认值4. 类型与值的匹配 三、常量(Constant)1. 声明方式2. 常量的特性3…...

8天Python从入门到精通【itheima】-69~70(字符串的常见定义和操作+案例练习)
目录 69节-字符串的定义和操作 1.学习目标 2.数据容器视角下的字符串 3.字符串的下标索引 4.字符串是一个无法修改的数据容器 5.字符串的常用操作 【1】index方法 【2】replace方法:进过替换,得到一个新的字符串 【3】split方法:将字…...
在 Linux 中查看文件并过滤空行
在 Linux 中查看文件并过滤空行 在 Linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法: 方法 1:使用 grep grep -v ^$ filename-v:反转匹配,只显示不匹配的行^$:表示空行的正则表达式&a…...

GC1809:高性能音频接收与转换芯片
GC1809 是一款高性能音频接收与转换芯片,适用于多种音频设备,如 A/V 接收器、多媒体音响设备、机顶盒等。本文将简要介绍该芯片的主要特性、性能参数及应用。 主要特性 多协议兼容:兼容 IEC60958、S/PDIF、EIAJ CP1201 和 AES3 协议。 多种…...

项目实战——C语言扫雷游戏
这是一款9*9的扫雷游戏 扫雷游戏 1.需求分析2.程序框架设计3.分函数实现打印游戏菜单界面游戏主逻辑函数程序主入口初始化游戏棋盘随机布置地雷显示当前棋盘状态计算指定位置周围的地雷数量玩家排雷主逻辑 4.分文件实现(1)test.c(2࿰…...

【Java】CopyOnWriteArrayList
一,概述 CopyOnWriteArrayList作为List接口的实现之一,它区分于ArrayList在于它是线程安全的。如它名字一样,所有的写操作均复制了原数组的值,虽说代价较大,但读多写少的环境下,是可接受的。笔者在此简单看…...
【JS进阶】ES6 实现继承的方式
ES6 实现继承的方式 基本语法 class Parent {constructor(name) {this.name name;this.colors [red, blue];}sayName() {console.log(this.name);} }class Child extends Parent {constructor(name, age) {super(name); // 必须调用super(),且在使用this之前thi…...
mac 电脑Pycharm ImportError: No module named pip
这个错误表明 PyCharm 在尝试使用 pip 时找不到该模块,通常是由于 Python 环境中的 pip 未正确安装或损坏引起的。以下是针对 Mac 系统的完整解决方案: 解决方案步骤: 检查终端中的 pip 状态 打开终端(Terminal),执行以下命令: bash python3 -m ensurepip --upgrade pi…...

C#入门学习笔记 #8(委托)
欢迎进入这篇文章,文章内容为学习C#过程中做的笔记,可能有些内容的逻辑衔接不是很连贯,但还是决定分享出来,由衷的希望可以帮助到你。 笔记内容会持续更新~~ 本章介绍C#中的委托,本章难度较大... 委托 C#中的委托是C语言、C++中函数指针的升级版。接下来介绍一个概念—…...

CSS 3D 变换中z-index失效问题
CSS 3D 变换中 z-index 失效问题 1. z-index 失效了 在 CSS 中,z-index 通常用于控制元素的层叠顺序,数值越大,元素越靠前显示。在 3D 变换(如 rotateX、translateZ) 中使用 z-index 时,可能会发现z-inde…...
Vue3 中使用 i18n
Vue3 中使用i18n 在 Vue 3 中使用国际化(i18n)可以通过官方的 vue-i18n 库来实现。vue-i18n 是专门为 Vue 应用设计的国际化解决方案,支持多语言切换、动态内容插值等功能。 以下是如何在 Vue 3 中使用 vue-i18n 的详细步骤: 1.…...
vue:当前对象添加对应值
this.$set(this.dynamicValidateForm.domains[index], // 目标对象item.roundProperty, // 要添加的属性名row[item.roundProperty] ? row[item.roundProperty].split(",") : [] // 属性值 ); 说明: 第一个参数:th…...

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
Tailwind CSS 实战,基于Kooboo构建AI对话框页面(一) Tailwind CSS 实战,基于Kooboo构建AI对话框页面(二):实现交互功能 Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面&#x…...
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
一、解释 JavaScript 作为当今最流行的编程语言之一,广泛应用于 Web 开发、移动端开发、后端开发等多个领域。然而,许多开发者在使用 JavaScript 时,往往只关注其表面的语法和 API,而对其底层原理和核心机制了解甚少。深入理解 J…...

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、 &…...

基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离&a…...

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
摘要:本文聚焦于生态农庄运营中的游客留存问题,以村长与乡亲们吸引游客进村为背景,深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势,…...

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)
Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…...

【Linux】Git原理与使用
编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。 前言 这是我自己学习Linux系统编程的第三篇笔记。后期我会继续把Linux系统编程笔记开源至博客上。 上一期笔记是关于Vim文本编辑器知识: 【Linux】Vim文本编辑器-CSDN博客https://blog.csdn…...
Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束前言项目简介技术栈…...

A*算法实现原理以及实现步骤(C++)
算法原理: A*算法是一种启发式搜索算法,用于在图中寻找最短路径。它结合了Dijkstra算法的确保最短路径的优点和贪心最佳优先搜索的高效性。其核心在于使用一个评估函数: f(n) g(n) h(n) 其中: - g(n) 表示从起点到节点n的实际代…...

Devops自动化运维---py基础篇一
python基础篇 1、基本数据类型 2、算术运算符 3、变量 变量:编程语言中能储存结果或能表示值的抽象概念 用途:用一段数据赋予一个简短、易于记忆的名字,方便重复使用3.1 格式转化变量 操作符号描述%s字符串%d整数%f浮点数 实例࿱…...

平安养老险蚌埠中心支公司开展金融宣教活动
近日,平安养老保险股份有限公司(以下简称“平安养老险”)蚌埠中心支公司,走进某合作企业开展金融教育宣传活动。 活动现场,平安养老险蚌埠中心支公司工作人员通过发放宣传手册和小礼品等方式,向企业员工普…...