先看看什么是需求,人要吃饭,要喝水,要娱乐。同样,软件也是因为人的某种需求而产生的。
再来看看如何表达需求,人如果饿了,就会去做饭。这个过程,是不需要表达的,需求产生动机,动机支配他的手脚,最后需求得到满足。
换一种方式,如果他不想做饭,或不会做饭,他可能会去外面的餐馆。这时候,他的需求是他的协作方来满足的。比如说他来到了一家兰州拉面馆,说“一碗牛肉刀削面”,很少有做兰州拉面不知道“牛肉刀削面”是什么的。这里准确表达依赖于客户方与供应方对概念有一致的理解。也就是说,对“牛肉刀削面”这个概念,客户方和供应方理解是一致的。在软件需求中,对核心概念的理解可能是以术语表来体现的,这是双方达成共识的基础。
继续这个场景,看看还有哪些情况:
1. 要了一碗牛肉刀削面,结果来了一碗牛肉拉面。可能客户普通话不标准,或者场所太嘈杂,服务员没听清楚,导致出现偏差。沟通不畅。
2. 面做好了,来了。一吃,怎么这么淡阿,店家根本不知道客户的口味。需求遗漏。
3. 来,给我加点香菜。来,给我加点蒜。需求变更。
4. 正吃着呢,抬头一看,邻桌有人在吃羊肉串,其实他已经吃饱了,说,给我也来一串。典型的客户心态,别人有的我也要有。Feature envy.
5. 服务员过来,你这面里怎么有虫子阿? 软件有bug,迟迟不付钱,吃霸王餐,很多软件公司就是这么被拖死的。
6. 要了一碗牛肉刀削面,结果来了一碗拉面。结果:“我发现这拉面比刀削面还好吃阿”。用户说出的需求并不是真正的需求。
客户的需求是很难琢磨的,软件不是像刀削面这样,是标准的产品,每一个软件,在未开发完成前,用户是是不知道实际的体验的。不像刀削面,用户早就体验过了。
使用明细的需求规格来定义需求。
“你要拉面还是削面阿?” 削面
“要不要加鸡蛋阿?”不要
“牛肉还是羊肉阿?” 牛肉
“有汤还是没汤阿?” 有汤
“要不要加香菜阿?” 不要
“口味重还是淡阿?” 咸点
“大碗还是小碗阿?” 大碗
“打包还是这里吃阿?” 这里吃
使用严格的需求规格来定义需求,有几个前提:
第一:就是需求调查者/分析师对领域/产品有非常完整的理解,不能遗漏。
第二,对规格的定义无歧义。比如:上面的每一条,双方理解都是一致的,是明确的。
第三,依赖客户对自己的需求有相对比较准确的理解。如果用户从来没吃过什么牛肉面,不知其为何物,他表达的东西不具备准确性。
第四,时间允许,这种描述方式,耗时肯定是相当长的。用这种方式问客户,可能客户早就跑到旁边的那家快餐店去了。
第五, 用户没有体验。在整个调研过程中,用户根本就没尝到过面是什么滋味。
使用迭代和紧密交流获取需求。
第一次来,用户觉得有点淡,下次就加点盐。第二次,用户觉得应该加点醋,下次就加点醋。第三次,店里建议他加个鸡蛋,味道果然不错。
。。。。。。
经过几次迭代以后,用户来到店里,基本上小二已经知道这个客户喜欢吃什么样的面了。这里面有几点:
第一. 用户尽早的获取到了真实的体验,无论是不好吃还是好吃。这也是敏捷软件开发方法所推从的尽早的发布可用的软件。
第二. 用户补充了他想要的需求。在经过体验的基础上,用户表达了他的需求,需求更具备针对性。
第三. 需求是一个交流的过程。完全可以引导用户的需求。
总的来说,软件需求的本质是用户同服务供应者理解一致的过程。
写具的需求规格说明书文档只不过是一个媒介,它并不一定能使双方达成一致的理解。将真实需求转换成语言描述,本来就可能有失真。即使写了文档,也要和最终用户作频繁的沟通,才能确保双方一致理解。要想真正用户满足需求,必须让用户及早参与,多次迭代。
腾讯产品的策略就是“用户体验,快速迭代
”, 看它现在的发展就知道了,它找到了发展的本质。
PS:很久没写博客了,思路不是很清晰,大家对付看吧,不妨谈谈你对需求本质的理解。
分享到:
相关推荐
《软件需求》这本书详细阐述了在软件开发过程中需求分析的重要性,以及如何有效地管理和设计软件需求。作者Karl E. Wiegers通过深入浅出的方式,帮助读者理解需求的本质,旨在提高项目需求分析的质量,减少不必要的...
在软件工程领域,"软件需求的本质"是项目成功的关键所在。需求是软件开发过程的起点,它们定义了系统应该做什么,如何做,以及为什么要做。需求可以分为多个维度,包括时间纬度和空间纬度,同时涵盖不同类型的需要。...
软件需求本质上是一种陈述,例如,“单个词汇或短语不足以构成一个完整的软件需求”。因此,在表述需求时必须确保其完整性与明确性。 #### 软件需求的重要性 确定软件系统具体构建内容是软件开发中最困难的部分之...
本文件是一份针对软件需求工程的习题集及知识要点,涵盖了从需求理解的困难性到具体的需求捕获、分析、管理等多个方面。 1. **为什么软件需求这么难?** 软件需求难以明确是因为它们通常涉及复杂的业务逻辑、用户...
《软件需求(第2版)》是一本深受系统分析师和软件开发人员喜爱的经典教材,由Carl E. Wiegers撰写。本书深入探讨了软件需求工程...通过阅读本书,你可以深入理解软件需求的本质,掌握在实际工作中有效管理需求的策略。
### 软件需求分析:构建高质量软件的基石 #### 软件需求分析的重要性 软件需求分析,作为软件生命期中的关键环节,扮演着承上启下的角色,其重要性不可小觑。这一阶段旨在深入理解用户需求,明确软件系统应当具备...
软件需求工程是软件开发过程中的核心环节,它涵盖了对系统预期功能和服务的理解、分析、文档化和验证。这个过程在软件生命周期中占据了至关重要的位置,因为软件的成功与否往往取决于需求是否明确、完整且准确。自20...
基于需求的测试是一种系统化的测试策略,它要求测试人员根据软件需求规格说明书(SRS)中的规定,设计和执行测试案例。这种方法的优势在于: - **全面覆盖**:通过对需求文档的细致审查,可以确保所有重要的功能点都...
### 软件需求说明书的编写提示:关键知识点解析 #### 引言 软件需求说明书是软件开发项目中至关重要的文档之一,它详细记录了软件的功能、性能、接口、约束等需求,为软件的设计、编码、测试提供了明确的指导。...
### 软件需求评审的关键知识点 #### 一、需求评审的重要性及常见问题 软件需求评审是确保软件项目成功的关键步骤之一。它旨在减少需求层面的风险,并提高项目的成功率。然而,在实践中,需求评审往往面临着诸多挑战...
### 软件需求分析过程详解 #### 一、引言 软件需求分析是软件生命周期中的一个重要阶段,它直接影响到软件项目的成功与否。本文将详细阐述软件需求分析过程中的核心概念、步骤及其重要性。 #### 二、软件需求分析...
本文将深入探讨“软件需求变更单”的重要性、内容构成以及如何有效地处理需求变更。 首先,我们要明白,需求是软件开发的起点,它定义了软件的功能、性能和用户体验等方面。然而,在实际项目中,由于市场变化、用户...
【软件需求】是软件开发过程中的核心环节,它关乎到产品的成功与否。需求的变化是常态,而非异常。正如亨利·福特和大卫张所指出的,用户往往只能描述他们现有的需求,即“更快的马”,而不是未来可能的创新,如汽车...
软件需求分析(Software Requirement Analysis)是需求工程的一个关键环节,主要目标是从各个利益相关者那里收集和整理需求,然后转化为明确、一致且可实现的规格说明。在这个过程中,通常会采用以下方法: 1. 需求...
文中的内容属于软件需求工程的习题集,涵盖了软件需求分析和管理的多个核心知识点。以下是对这些知识点的详细说明: 1. **需求问题的原因**:软件生产中产生需求问题的最大原因在于对应用软件的**目的性**理解不...
本文将围绕“软件需求分析题目1”的主题,深入探讨软件需求的本质、特征、层次分类以及需求工程的相关概念。 首先,我们要理解什么是软件需求。根据IEEE软件工程标准词汇表(1997年)的定义,需求涵盖了用户解决...
软件需求分析的任务主要包括:获取用户的需求、去除非本质因素、确定系统的真正需求、描述需求、建立系统的逻辑模型和书写需求说明书等。软件开发人员需要遵循基本原则,包括能够表达和理解问题的数据域和功能域、...
结构化分析(Structured Analysis,简称 SA)方法是软件开发中的一种关键需求分析技术,尤其适用于大型数据处理系统,如企事业单位管理系统。SA 方法的核心理念源于70年代,由Yourdon, Constaintine 和 DeMarco等人...
在软件行业中,人才是至关重要的资源,他们构成了企业价值链的核心,因为软件过程本质上是一个高度依赖知识与智慧的过程。软件企业通常由多个角色组成,包括企业管理人员、需求开发人员、产品服务人员以及软件研发...
《软件需求与需求工程课程讲义》是一份深入探讨软件开发中需求工程的教程,旨在帮助学生和专业人士掌握如何有效地理解和处理软件项目的需求。需求工程是软件开发过程的关键环节,其质量直接影响到项目的成功率。 ...