浅说软件需求分析虫师

通俗的讲,对用户的意图不断揭示和验叛的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述。

假如你是个建筑工程师,有个客户找你建一个鸡窝,这个时候要需要与客户沟通,来确定客户到底想要一个什么样子的鸡窝。我们应该注意三点:

1.准确的理解和描述客户需要的功能。

客户说,我的鸡窝要三层的,带电梯,饮水池,厕所,饮水池要自动判断水位供水,电梯要可以同时乘坐10只鸡....客户滔滔不绝的讲了一大堆,你也都非常忠实的按照自己的理解再一一的向客户描述一遍,以便于确认客户的需求是否正确。

2.帮助客户挖掘需求。

等客户把自己的需求说完了,你发现客户没有说鸡的卧室,于是,你向客户提议说:“你看,这鸡的卧室要什么样子的?”,客户连连的拍着脑门说,我差点给忘记了,鸡们啊喜欢晚上在一起聊天,所以呢,需要一个长而大的卧室,但一定要舒适。

3.分析客户需求的可行性

客户临走时又说,最近了,黄鼠狼很多,我这个鸡窝啊,一楼就不用盖了,直接盖二楼和三楼吧!以免晚上遭遇黄鼠狼的攻击。你这么一分析,客户这要求,按照目前的技术可没法建啊,于是,你向客户提议,一楼采用坚固架子来支撑二三楼的建筑。

--------------------------------------------------------------------------------------------

需求分析困难在哪儿?

有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。

1.客户说不清楚需求

有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。例如全国各地的很多政府机构在搞网络建设,这些单位的领导和办公人员大多不清楚计算机网络有什么用,反而要软件系统分析人员替他们设想需求。这类工程的需求是如此的主观,以致产生很多贪污腐败现象。

有些客户心里非常清楚想要什么,但却说不明白。你可能很不以为然。就举日常生活的事例吧,比如说买鞋子。我们非常了解自已的脚,但没法说清楚脚的大小和形状。只能拿鞋子去试,试穿时感觉到舒服才会买鞋(居然也有神通广大的售货员,看一眼客户的手,就知道应该穿什么样的鞋)。

如果客户本身就懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快。如果客户全不懂软件,但信任软件开发方,这事也好办。分析人员可以引导客户,先阐述常规的需求,再由客户否定不需要的,最终确定客户真正的需求。最怕的就是“不懂装懂”或者“半懂充内行”的客户,他们会提出不切实际的需求。如果这些客户甚至觉得自己是上帝的爸爸,那么沟通和协商都会很困难。

2.需求自身经常变动

唐僧曾说:“妖要是有了仁慈之心,就不再是妖,是人妖。”(《大话西游之大圣娶亲》)

连妖都会变心,别说人了。所以喜新厌旧乃人之常情,世界也因此变得多姿多彩。

软件的需求会变化吗?

答:据历史记载,没有一个软件的需求改动少于三次。唯一只改动需求两次的客户是个死人。这个可怜的家伙还是在运送第三次需求的路上被车子撞死的。[Cline1995]

让我们先接受“需求会变动”这个事实吧,免得在需求变动时惊慌失措。明白“需求会变动”这个道理后,在进行需求分析时就要留点神:

(1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。

(2)在合同中一定要说清楚“做什么”和“不做什么”。如果合同含含糊糊,日后扯皮的事情就多。要防止象韩复渠那样,在别人请他喝酒吃饭时他什么都点头(人家就更加献殷勤),吃完了他就宣布刚才答应的事都不算数,便扬长而去。

3.分析人员和顾客理解有误

有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:“主宰地球的是车。它们喝汽油,靠四个轮子滚动前进。嗓门极大,在夜里双眼能射出强光。……有趣的是,车里住着一种叫作‘人’的寄生虫,这些寄生虫完全控制了车。”

软件系统分析人员不可能都是全才。客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。我读中学时候最怕写作文逃题,如果逃题了,不管作文写得多长,总是零分。所以分析人员写好需求说明书后,要请客户方的各个代表验证。如果问题很复杂,双方都不太明白,就有必要请开发人员快速构造软件的原型,双方再次论证需求说明书是否正确。

由于客户大多不懂软件,他们可能觉得软件是万能的,会提出一些无法实现的需求。有时客户还会把软件系统分析人员的建议或答复给想歪了。

----------------------------------------------------------------------------------------------

需求分析的分类

需求分析一般可分为功能需求、非功能需求和领域需求

1.功能需求:

2.非功能需求:

3.领域需求:

-----------------------------------------------------------------------------------------------

如何进行需求分析

进行需求分析不象情人之间的浪漫做法——“让我摸摸你的头发,感觉它是什么颜色。”我们需要了解需求分析的渠道和过程。

需求分析的过程

(1)可行性研究

它指明现有的软件、硬件技术能否实现用户对系统的要求,从业务角度来决定系统开发是否可行以及在预算范围内能否开发出来。可行性研究的结果是清楚的回答:该系统是否值得开发

(2)需求导出和分析

这是一个通过对现有系统分析、与潜在客户讨论、进行任务分析等导出系统需求的过程,也可能需要开发一个或多个不同的系统原型,以帮助分析员了解所要描述的系统。

(3)需求描述

需求描述就是把在分析活动中收集的信息通过分析整理之后以文档的形式确定下来。该文档中有两类需求:用户需求是从客户和最终用户角度对系统需求的抽象描述;系统需求是对系统要提供的功能的详尽描述。

(4)需求有效性验证

主要是通过评审、验证等一系列活动来找出需求文档中的错漏并加以改正。

(5)需求管理

需求管理需求管理是一种系统化方法,可用于获取、组织和记录系统需求并使用户和开发方在系统变更需求上始终保持一致

-------------------------------------------------------------------------------------------------------------------

需求分析的方法

1.功能分析方法

那怕是天下最无能的市长或书记,都知道在作报告时要先从宏观上讲一、二、三、四、五,再从细节上讲A、B、C、D、E;需求分析不象侦探推理那样从蛛丝马迹着手。应该先了解宏观的问题,再了解细节的问题。

功能分析法功能分解法以系统提供的功能为中心来组织系统。首先定义各种功能,然后把功能分解为子功能,同时定义功能之间的接口。数据结构是根据功能/子功能的需要设计的。其基本策略是以分析员的经验为依据,确定新系统所期望的处理步骤或子步骤,然后,将问题空间映射到功能和子功能上。

2.数据流方法

周末,小明一觉醒来突然想吃红烧肉,那想得口水直流,于起床,穿好衣服,打开钱包一看空的,好吧,先去银行取钱,然后去菜那买了一肉、各种配料,然后回家,开火,各种材料往锅里一放,开始小火慢炖,半个小时后,小明终于吃上了美味可口的红烧肉。这是一个典型的流程,如果把它看成一个系统功能的话,那么小明吃到红烧肉是这个功能的目的,那么中间要经历许多环节,起床穿衣---取钱---习材料----制作完成。而且各个功能(步骤)之间是相互联系的,小明总不能不穿衣服直接去取钱吧。

数据流法也叫结构化分析,其基本策略是研究问题域中数据如何流动以及在各个环节上进行何种处理,从而发现数据流和加工。问题域被映射为由数据流、加工以及文件、端点等成份构成的数据流图(DFD),并用数据字典对数据流和加工进行详细说明。这种方法的关键是动态跟踪数据流动。

3.信息建模方法

一个贵妇去报案,我丢了一个辆车,小明是警察,然后问贵妇,你丢的什么样的车子?贵妇噼里啪啦的给小明描述车子样子:我的车子有四个轮子,前面两个小,后面两个大,车身是流线型的,后面带尾翼,里面只一排坐位的那种,车坐上都用的真皮做套子,后面…..你听着听头大了,然后对贵妇说:等等,我给你画下来。于是,贵妇边说,你边画,然后贵妇指出画的不对的地方由你来修改。当然了这只是实体的样子。我们还需要知道汽车各个部件的功能以及各部件之间的关系。

信息建模法的核心概念是实体和关系,主要工具是语义数据模型(实体关系图),其基本策略是找出现实世界的对象,然后用属性来描述对象,增添对象与对象之间的关系,定义父类与子类,用父类型/子类型提炼属性的共性,用关联对象关系作细化的描述,最后进行规范化处理。其实质是将问题空间直接映射成模型中的对象。

----下面三种方法,我还不能理解-----

4.面向对象方法

我想你如果学习过面向对象编程的话,会很容易理解。

面向对象分析OOA(Object-OrientedAnalysis)的基本策略是通过信息隐藏将比较容易变化的元素隐藏起来,分析员基于比较稳定的元素建立其思想和规格说明的总体结构。

面向对象分析的主要特性是加强了对问题域(ProblemDomain)和系统责任(SystemResponsibili-ties)的理解;改进与分析有关的各类人员之间的交流;对需求的变化具有较强的适应性;支持软件复用

5.面向本体方法

6.形式化方法

形式化方法,广义上讲,是应用数学的手段来设计、模拟和分析,得到像数学公式那样精确的表示。从狭义上讲,就是使用一种形式语言进行语言公式的形式推理,用于检查语法的良构

性并证明某些属性。在需求分析阶段,利用形式化方法得到需求规格说明书,可以规范软件开发过程,为获得更好的系统性能提供重要保证。

=============================粗俗的方法=====================

可能你对上面的方法看不懂,起码后三种我是看不懂的,怪我知识太少的缘故。

我们来看下面了解需求的方式:

(2)有些需求客户讲不清楚,分析人员又猜不透,这时就要请教行家。有些高手真的很厉害,你还没有开始问,他就能讲出前因后果。让你感到“听君一席言,胜读十年书。”

(3)有很多需求可能客户与分析人员想都没有想过,或者想得太幼稚。要经常分析优秀的和蹩脚的同类软件,看到了优点就尽量吸取,看到了缺点就引以为戒。前人既然付了学费,后人就不要拒绝坐享其成。

------------------------------------------------------------------------------------------------------------

THE END
1.系统分析与需求分析:概念解析与区别系统分析不完全是需求分析;需求分析属于系统分析。 在我印象中,系统分析和需求分析是同一件事,说法不同而已,平时也是混合使用,不加区分。但事实上,二者还是有所区别。教程里,系统分析和需求分析分别位于不同的章节,其中系统分析自成一章,而需求分析则放在需求工程章节里。 从书本表述看,系统分析与需求分析用的技术https://blog.csdn.net/leftfist/article/details/122469280
2.系统需求分析和软件需求分析在软件开发过程中,系统需求分析和软件需求分析是两个至关重要的环节。它们不仅为项目的顺利实施提供了明确的方向,而且是项目成功的基石。本文将深入探讨这两个分析过程及其在软件开发中的重要性。 一、系统需求分析 系统需求分析是软件开发前期的关键活动,它涉及对整个系统的功能、性能、安全性等方面的全面考量。这一阶https://blog.51cto.com/u_15273385/11470018
3.系统需求分析工程师(互联网软件项目)是什么职位高级需求工程师 岗位要求: 1、根据产品规划或者项目要求,开展需求调研,完成调研报告和需求规格说明书; 2、向开发工程师提供咨询、指导、解释业务需求,向用户汇报系统功能; 3、整理和分析客户需求,对其分类汇总和实现预估,提出需求分析报告和实现计划要求; https://www.zhipin.com/job_detail/773a30eaecbaedfd0HRy29u_GA~~.html
4.如何系统性分析需求?(方法论+案例+清单)人人都是产品经理编辑导语:你有没有遇到过这样的情况:当你与他人沟通需求时,常常被他人所带歪,又或者是在分析需求时,需求分析不够系统以及透彻。作者梳理了一套系统性分析需求的方法,希望对你有所帮助。 不知你是否有过这样的困惑? 当你跟需求方沟通需求时,容易被对方的思路带偏,导致需求沟通不完整,反复多次沟通才弄清楚,感觉自https://www.woshipm.com/zhichang/5551466.html
5.需求分析报告(通用12篇)本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本学校排课系统的软件开发过程,便于程序员与客户之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用,同时它也是进行项目策划、概要设计和详细设https://www.ruiwen.com/word/xuqiufenxibaogao.html
6.什么是需求分析?应该怎么做需求分析需求分析阶段的核心可以总结为两句话:“这个需求能不能做?做成什么样?”。据此可以将需求分析分为两个阶段:前半段的核心是分析需求的真实性和验证需求解决方案(产品)的可行性,包含需求收集、需求分析、方案验证三个阶段;后半段核心则是系统思考产品过程中可能遇到的问题并提出解决方案,包含构建商业模式、规划https://baijiahao.baidu.com/s?id=1792569477949532584&wfr=spider&for=pc
7.如何进行产品需求分析?产品专家带你系统性实操做好需求分析对于产品经理来说十分重要,也是应对各种产品需求的解决方法。作为产品经理,基础的需求分析技能是不够的,高级产品经理需要具有专业而系统的产品需求分析能力。当产品需求采集之后,产品经理面对一堆杂乱无章的、各式各样、不同目的的需求,到底该如何做呢? https://boardmix.cn/article/productdemandanalysis/
8.一文详解软件测试需求分析是什么其它综合测试需求:系统应该做什么、系统不应该做什么、发现系统设计中存在的问题。例如取款金额可选在100-2000之间且为100倍数可取;小于100或者大于2000不可取;在100-2000之间但不是100倍数不可取;当日取款总额必须小于等于20000;取款金额必须小于等于账户余额等等,这是测试需求。 如何开展测试需求分析 5.1、概述 开展测试需求分析https://www.jb51.net/article/9449.htm
9.费控篇:第一次对接财务系统,产品该如何做?02 对接费控前该做些什么 作为一个产品人,对接费控系统需要人力物力时间成本,也会对业务产生影响,所以在对接费控前需要反复思考。 1. 自身业务系统需求分析 本次对接费控系统的是集团内部B端图书采购系统,想要通过结算线上化的形式来实现采购全流程闭环监控。 https://maimai.cn/article/detail?fid=1607820065&efid=mQdqjsPYWEvhWKi7cKoeuA
10.系统的的业务需求分析7篇1.什么是系统的业务需求分析? 系统的业务需求分析是指对客户需求进行深入分析、研究,找出客户的需求,从而帮助企业(或机构)更准确地了解客户需求,进而制定出更好的产品计划。 以机票预订系统为例,需求分析就包括核心需求、必要的功能、用户需求及流程设计等方面。如果我们在业务需求分析过程中没有足够的了解和分析,就会https://hsy.chanjet.com/wenku/wk180bf9b1d4cd.html
11.华为身上学到的需求管理经验腾讯云开发者社区不同的角色、产出不同 简单来说就是:需求分析原始需求、需求拆分为系统需求、需求实现为功能需求**需求分析将客户需求 输出成 需求描述。 需求经理需要把 用户需求(User Story) 转换成 客户能够接受的 初始需求 IR(Initial Requirement) 对于用户来说,我只管提 我的原始需求是什么 需求经理要记录 用户的IR 并在https://cloud.tencent.com/developer/article/2231830
12.系统分析师教程知识点精讲之系统分析与需求分析区别摘要:软考系统分析师在2017上半年开考,希赛小编为大家整理了一些系统分析师教程知识点精讲,以下是有关需求分析的讲解,希望对准备参加考试的你有所帮助。 >>>点击了解系统分析师网络班 >>>点击了解系统分析师面授班 软考系统分析师在2017上半年开考,希赛小编为大家整理了一些系统分析师教程知识点精讲,以下是有关https://www.educity.cn/rk/1783727.html
13.内部系统开发怎么做需求分析?内部系统开发是为了满足组织或企业内部需求而创建的软件应用程序。在内部系统开发中,需求分析是关键的一步,因为它有助于明确项目的范围、功能和目标,确保开发团队和利益相关者在同一页面上。以下是关于如何进行内部系统开发的需求分析的一些建议: 明确项目背景和目标: http://www.apppark.cn/t-48988.html
14.企业员工培训八大关键技法如何发现培训需求呢?作为有经验的培训经理,正确的做法应该是放弃“寻找培训需求”,而要转换思路去“探究企业的问题”。培训需求分析最终要回答“为什么要培训”、“采用什么方法培训”、“培训什么”以及“培训的效果是什么”的问题。 找到差距,发现问题,用培训的手段解决问题,这是培训管理工作的基本原理。 http://zdpx.zju.edu.cn/news1_3680_305.html