探索需求
作者简介:
作者简介: 唐纳德·高斯和杰拉尔德·温伯格是国际知名的演讲家和咨询家,他们在许多个不同的项目中有着多年的合作经验。他们都是美国计算机学会(acm)的教师。他们曾合作出版了著名的关于问题解决的书《你的灯亮着吗?》,给软件开发的目的和方向建立了全新的诠释。另外他们俩还都是徒步登山的爱好者。 唐纳德·高斯(donald c. gause)是纽约州立大学托马斯·沃森工程学院(位于纽约州binghamton镇)的系统科学教授。他主要从事复杂系统的设计和开发以及大型公司的改革。 杰拉尔德·温伯格(gerald m. weinberg)是软件领域最著名的专家之一,美国计算机名人堂代表人物,他是weinberg & weinberg顾问公司(位于美国内布拉斯加州首府林肯市)的负责人。温伯格精力旺盛、思想活跃,从20世纪70年代开始,他总共撰写了30多本书籍和数以百计的论文。在西方国家乃至全球,温伯格拥有大量忠实的读者群,这些"追星族"阅读了温伯格的每本重要著作,他们甚至建设有专门的组织和网站,讨论和交流大师的重要思想。可以说,温伯格近年来的每本新书都是在万众瞩目中推出的。 译者简介: 章柏幸,男,浙江诸暨人,清华大学电子工程硕士,现任北京某软件公司技术总监,主要从事电力系统自动化、专用程序设计语言的设计。 王媛媛,女,吉林通化人,毕业于同济大学电信系,现为中软集团工程师。 谢攀,男,四川资阳人,清华大学电子工程硕士,现为中国网通工程师,主要从事电信支撑系统的研发,以及相关的基础研究工作。
内容简介:
本书将与您一起寻找"什么是客户真正想要的"这一问题的答案。 本书着眼于系统设计之前的需求过程,它是整个开发过程(如何设计人们想要的产品和系统)中最有挑战性的那部分。通过对一些需求分析中的常见误区和问题的分析和讨论,从和客户沟通开始,深入研究一些可能的需求,澄清用户和开发者期望值,最终给出了能够大幅度提高项目成功几率的一些建议方法。 本书由该领域内公认的两位作者合著,搜集了他们在大大小小的公司里加起来超过60年的在工作中发现、提炼和检验之后的观点。在本书中描述的原则并不局限于软件开发,还涉及到所有需要为别人设计和制作产品的领域。这些技巧已经成功的应用于开发所有类型的产品和系统--包括计算机硬件和软件、家具、建筑和书籍等等。 本书认为,开发是把人们的期望转化成一种能够满足其期望的产品的过程。本书的讨论围绕着需求过程--在开发中人们试图发现其期望的产品--的那一部分。通过对五个关键词语"期望"、"产品"、"人们"、"试图"和"发现"的层层分析,给出了大量使用的技巧和观点。 产品开发项目可能失败的原因非常多,最糟糕的莫过于在需求过程带入的缺陷。目前已有了很多书籍来阐述避免那些缺陷的方法,而本书则是集中在需求过程的以下三个危险而又被忽视的人性视角: 1. 在所有参与者中开发一种对需求的可靠的理解。 2. 开发一种项目的团队工作期望。 3. 开发一些必要的技巧和工具以能够有效的像团队一样来定义需求。 由于这些主题或多或少有些被有关系统开发的著作所忽略,《探索需求》可以用作对你当前的任何需求过程的一个补充,而不管其是否正式。本书的很多章节都设计成独立的模块,每一个都介绍了一到几种用于提高需求技术的工具或方法。读者可以逐页阅读本书,也可以在任何时间只读那些你最需要的章节。 全书通俗易懂、层次分明,其中共有上百幅插图,便于读者深入理解,是需求分析人员的入门和提高必备指南。
目录:
目录 6 序言 13 第一部分 为共识而谈判 17 1 方法论是不够的 18 1.1 case,cad和灭蟑仪 18 1.2 方法作用于问题 19 1.3 映射及其符号系统 20 1.4 确保每个人都能读懂映射图 21 1.5 需求的映射图并不是需求 21 1.6 提示和变化 22 1.7 小结 24 2 在陈述需求中的含混性 24 2.1 含混性的例子 24 2.1.1 缺少的需求 25 2.1.2 含混的词语 25 2.1.3 无意中引入的假设 25 2.2 含混性的成本 26 2.3 为消除含混性而探索 27 2.3.1 需求的图片 27 2.3.2 需求的模型 28 .2.4 提示和变化 28 2.5 小结 28 3 含混性的来源 29 3.1 实例:收敛设计过程演讲 29 3.2 注意力的测试 30 3.3 聚类启发 31 3.3.1 观察和回忆错误 31 3.3.2 解释错误 32 3.3.3 错误来源的混合 32 3.3.4 人们交互的作用 32 3.4 问题陈述的含混性 33 3.5 提示和变化 35 3.6 小结 35 4 可靠但不真实的直接问题的用法 36 4.1 决策树 36 4.1.1 问题的次序 37 4.1.2 穿越决策树:一个实例 37 4.2 含混性投票的结果 38 4.3 可能会是什么错了? 39 4.4 现实生活比我们想象的要现实 40 4.5 提示和变化 40 4.6 小结 41 第二部分 开始之路 42 5 切入点 43 5.1 一个通用的切入点 43 5.2 不同切入点的通用化 43 5.2.1 来自解决方案的想法 43 5.2.2 来自技术的想法 44 5.2.3 比喻 45 5.2.4 标准 45 5.2.5 实体模型 46 5.2.6 名称 46 5.3 存在性假设 46 5.4 一个升降机的例子 47 5.4.1 命名我们的项目 47 5.5提示和变化 48 5.6 小结 48 6 自由问题 49 6.1 过程的自由问题 49 6.2 自由提问的潜在影响 50 6.3 产品的自由问题 50 6.4 连环问题 51 6.5 自由提问的好处 52 6.6 提示和变化 53 6.7 小结 54 7 找到正确的相关人员 55 7.1 辨别正确的人员 55 7.1.1 客户和使用者 55 7.1.2 为什么要包括使用者? 56 7.1.3 铁路的矛盾 56 7.1.4 产品能够创造用户群 56 7.1.5 失败者是使用者吗? 57 7.2 启发式包含使用者 57 7.2.1 列出可能的用户群 57 7.2.2 修葺使用者清单 59 7.3 参与者 59 7.3.1 谁参与? 60 7.3.2 他们什么时候参与? 61 7.3.3 我们如何得到他们的判断? 61 7.4 为抓获使用者而计划 61 7.5提示和变化 62 7.6 小结 62 8 为每个人准备会议工作 63 8.1 会议:离不开又无法忍受的工具 63 8.1.1 一个可怕而典型的会议 63 8.1.2 为度量而开会 65 8.2 参与和安全 65 8.2.1 建立一个打断机制 66 8.2.2 设置时间限制 66 8.2.3 反对人身攻击和贬低 66 8.2.4 缓解压力 66 8.2.5 承认结束时间,并且按时结束 66 8.2.6 处理相关问题 67 8.2.7 改进规则 67 8.3 不出席会议也感到安全 67 8.3.1 公布一个议程并且坚持它 68 8.3.2 不插手突发模式 68 8.3.3 处理好不相关的人员 68 8.3.4 包含正确的人员 68 8.4 设计你需要的会议 69 8.5 提示和变化 69 8.6 小结 70 9 自始至终降低含混性 70 9.1 利用记忆启发 70 9.2 延伸含混性投票 71 9.3 "玛丽从前有一只小羔羊"启发 71 9.4 详述"玛丽欺骗商人"启发 73 9.5 在星星问题上应用启发 75 9.6 提示和变化 78 9.7 小结 78 第三部分 探索机会 79 10 产生想法的会议 81 10.1 典型的头脑暴风雪 81 10.2 头脑风暴的第一部分 82 10.2.1 不允许批评和责备 82 10.2.2 让你的想象自由飞翔 83 10.2.3 为数量而努力 83 10.2.4 改变和合成想法 83 10.3 头脑风暴的第二部分 83 10.3.1 门限投票法 83 10.3.2 竞选演讲投票法 84 10.3.3 合成想法 84 10.3.4 应用判据 85 10.3.5 打分或者排名系统 85 10.4 有益的提示和变化 85 10.5 总结 85 11 右脑方法 87 11.1 地图工具 87 11.1.1 草图 87 11.1.2 画曲线图 87 11.2 头脑作图 88 11.3 右脑运动 88 11.4 有益的提示和变化 89 11.5 总结 89 12 项目的名称 91 12.1 工作名称,绰号和正式名称 91 12.2 名称的影响 91 12.2.1 一个命名的证明 92 12.2.2 命名完成了什么? 92 12.3 启发式命名方法 93 12.4 有益的提示和变化 94 12.5 总结 94 13 面临冲突时推动进程 95 13.1 处理无关紧要的冲突 95 13.1.1错误的时间,错误的项目 95 13.1.2 个性冲突 96 13.1.3 必不可少的人 96 13.1.4 组内的偏见 96 13.1.5 级别不一样 97 13.2 注意力完全集中的技巧 97 13.3 处理本质的冲突 98 13.3.1 重塑个性差异 98 13.3.2 协商 99 13.3.3 处理政治冲突 99 13.4 有益的提示和变化 100 13.5 总结 100 第四部分 明确期望 102 14 功能 103 14.1 定义功能 103 14.1.1 存在功能 103 14.1.2 测试功能 103 14.2 记录所有且唯一的功能 104 14.2.1 记录所有潜在的功能 104 14.2.2 理解明显的、隐藏的以及装饰性的功能 105 14.2.3 识别未注意到的功能 106 14.2.4 避免隐含的解决方案 107 14.2.5 "如果你能够就实现它"列表 107 14.3 有益的提示和变化 108 14.4 总结 108 15 属性 110 15.1 属性的愿望列表 110 15.2 改变愿望列表 111 15.2.1 区分属性和属性细节 111 15.2.2 揭示属性的含混性 111 15.2.3 组织列表 112 15.2.4 从改变后的列表揭示内幕 112 15.3 为功能分配属性 113 15.3.1 属性如何修改功能 113 15.3.2 从新格式中获取内幕 113 15.4 去掉属性 113 15.4.1 将属性分类为必须,需要和忽略 113 15.4.2 隐式和显式地排除属性 114 15.5 有益的提示和变化 114 15.6 总结 115 16 约束条件 116 16.1 定义约束 116 16.2 考虑作为边界的约束 116 16.3 测试约束 118 16.3.1 过于严格? 118 16.3.2 不够严格? 118 16.3.3 不清楚吗? 119 16.3.4 产生新的想法 119 16.4 相互关联的约束 119 16.5过度约束 120 16.6 心理约束 120 16.6.1 倾斜观念 121 16.6.2 打破约束 121 16.6.3 自负与糟糕设计的循环 122 16.7 约束产生自由 122 16.7.1 标准 122 16.7.2 语言和其他工具 122 16.8 有益的提示和改变 123 16.9 总结 124 17 优先级 125 17.1定义优先级 125 17.1.1一个例子 126 17.1.2 优先级的来源 126 17.2 让优先级可量化 126 17.2.1 针对度量的合理方法 126 17.2.2让优先级可量化 127 17.3 区别约束和优先级 127 17.3.1 满足进度是约束吗? 127 17.4 受到约束的优先级 128 17.4.1 它值什么图(what's-it-worth?graphs) 129 17.4.2 什么时候你需要它图(when-do-you-need-it?graph) 129 17.5 重新将约束定制为优先级 130 17.5.1 在优先级之间交易 130 17.5.2 产品开发的决定律 131 17.6 有益的提示和变化 132 17.7 总结 132 18 期望 134 18.1 限制期望的原因 134 18.1.1 人们不是完美的 134 18.1.2 人们并不都是有逻辑的 134 18.1.3 人们对事情的感受不一样 135 18.1.4 设计者也是人 135 18.2 采用期望限制过程 136 18.2.1 产生专门的期望列表 136 18.2.2 电梯的例子 136 18.2.3 产生期望列表 137 18.2.4 限制期望 138 18.3 限制条件不必被限制 138 18.3.1 轮椅的例子 138 18.3.2 让可能性保持公开 139 18.3.3 包括限制的来源 139 18.4 有益的提示和变化 139 18.5 总结 140 第四部分 极大地增加成功的可能 141 19 含混性度量 142 19.1 测量含混性 142 19.1.1 使用含混性投票 142 19.1.2 使用投票方法 143 19.1.3 在不同的基础上投票 143 19.2 将度量作为测试 143 19.2.1 度量三类含混性 143 19.2.2 解释结果 144 19.2.3 通过聚类得来信息 144 19.2.4 选择被投票的人群 144 19.3 有益的提示和变化 145 19.4 总结 145 20 技术评论 146 20.1 一个走过场的例子 146 20.2 技术评论的角色 148 20.2.1 正式和非正式的评论 148 20.2.2 技术评论与项目评论 148 20.3 评论报告 149 20.3.1 评论报告所需的东西 149 20.3.2 创造问题列表 150 20.3.3 技术评论总结报告 150 20.4 评论的主要类型 151 20.4.1 香草评论 151 20.4.2 检查 152 20.4.3 预演 152 20.4.4 联名声明评论 152 20.5 真实与理想的评论 152 20.6有益的变化和提示 153 20.7 总结 153 21 衡量满意度 154 21.1 创建用户满意度测试 154 21.1.1 测试属性 154 21.1.2 为每个项目采取的客户测试 154 21.2 使用测试 155 21.2.1 好处 155 21.2.2 绘制改变和趋势 156 21.2.3 解释评论 156 21.2.4 感觉就是事实 156 21.3 测试的其他用处 157 21.3.1 交流工具 157 21.3.2 贯穿项目的持续作用 158 21.3.3 对设计者的用处 158 21.4 其他测试 158 21.4.1 原型作为满意度测试 158 21.5 有益的提示和变化 159 21.6 总结 160 22 测试用例 160 22.1 黑箱测试 160 22.1.1 外部与内部的知识 160 22.1.2 构建黑箱测试用例 161 22.1.3 测试这些测试用例 162 22.2 应用测试用例 162 22.2.1 示例 162 22.2.2 反复测试和回答 163 22.2.3 清晰地指明含混性 164 22.3 以测试用例为证 164 22.4 有益的提示和变化 165 22.5 总结 166 23 学习已存在的产品 166 23.1 把现存产品当作标准来使用 166 23.2 访谈 167 23.2.1 新产品中有什么不见了? 167 23.2.2 为什么不见了? 167 23.2.3 在旧产品中遗漏了什么? 168 23.2.4 在旧需求中遗漏了什么? 168 23.3 用特征代替功能 169 23.4 有用的提示和变化 170 23.5 小结 170 24 达成协议 171 24.1 决策从哪里来 171 24.1.1 选择,假设和强迫接受 171 24.1.2 电梯设计决策的例子 171 24.1.3 撰写可追溯的需求 172 24.2 错误假设从哪里来 173 24.2.1 有效信息的缺乏 173 24.2.2 超时失效 173 24.2.3 收费公路效应 173 24.2.4 需求渗漏 174 24.3 把决策转化为协议 174 24.4 有用的提示和变化 174 24.5 小结 175 25 结束 175 25.1 对结束的害怕 176 25.2 结束一切的勇气 176 25.2.1 自动化设计和开发 176 25.2.2 堆土窑方式 176 25.2.3 冻结需求 177 25.2.4 重新谈判过程 177 25.2.5 对做出清晰假设的害怕 177 25.3 不够格的勇气 178 25.4 有用的提示和变化 178 25.5 小结 179 参考文献 179 索引表 179
评论