⑴ 需求分析有哪两种主要分析方法
从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。
(1)功能分解方法。
将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。
(2)结构化分析方法。
结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。
(3)信息建模方法。
它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。
信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。
⑵ 需求分析的主要方法是
目前,软件需求的分析与设计方法较多,一些大同小异,而有的则基本思路相差很大。从开发过程及特点出发,软件开发一般采用软件生存周期的开发方法,有时采用开发原型以帮助了解用户需求。在软件分析与设计时,自上而下由全局出发全面规划分析,然后逐步设计实现。
从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。
(1)功能分解方法。
将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。
(2)结构化分析方法。
结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。
(3)信息建模方法。
它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。
信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。
(4)面向对象的分析方法。
面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)
传统需求分析方法:结构化分析方法。
主要特点:结构化的分析方法是传统的分析法,它的好处是在需求阶段可以不需要精确地定义系统,只需要根据业务框架确定系统的功能范围,以及每个功能的处理逻辑和业务规则,功能需求规格书等。
因为不需要精确描述,因此描述系统的方式比较灵活多样,可以采用图表、示例图、文字等等方式来描述系统。在系统开发以前,一般还可以采用更为直观的原型系统方式和最终用户进行交流和确认,因此对业务需求的要求会低一些,业务需求阶段的周期相对容易控制。
通过业务全景图,最终用户也能了解系统的功能;通过功能活动图和业务规则的描述,也可以相对精确地描述业务系统;因为没有严格的标记语言,可以采用适当的篇幅描述适当的系统。
当然,这种方法的缺点也是明显的,分析人员和业务人员之间可能缺乏共同语言,机器不能识别业务需求书,在设计阶段还需要继续和用户确认一部分功能。
需求分析原则
为了促进软件研发工作的规范化、科学化,软件领域提出了许多软件开发与说明的方法,如结构化方法、原型化法、面向对象方法等。这些方法有的很相似。在实际需求分析工作中.每一种需求分析方法都有独特的思路和表示法,基本都适用下面的需求分析的基本原则。
1、侧重表达理解问题的数据域和功能域。对新系统程序处理的数据,其数据域包括数据流、数据内容和数据结构。而功能域则反映它们关系的控制处理信息。
2、需求问题应分解细化,建立问题层次结构。可将复杂问题按具体功能、性能等分解并逐层细化、逐一分析。
3、建立分析模型。模型包括各种图表,是对研究对象特征的一种重要表达形式。通过逻辑视图可给出目标功能和信息处理间关系,而非实现细节。由系统运行及处理环境确定物理视图,通过它确定处理功能和数据结构的实际表现形式。
⑷ 需求分析方法主要包括哪些
结构化的分析方法是传统的分析法,它的好处是在需求阶段可以不需要精确地定义系统,只需要根据业务框架确定系统的功能范围,以及每个功能的处理逻辑和业务规则,功能需求规格书等。因为不需要精确描述,因此描述系统的方式比较灵活多样,可以采用图表、示例图、文字等等方式来描述系统。在系统开发以前,一般还可以采用更为直观的原型系统方式和最终用户进行交流和确认,因此对业务需求的要求会低一些,业务需求阶段的周期相对容易控制;通过业务全景图,最终用户也能了解系统的功能;通过功能活动图和业务规则的描述,也可以相对精确地描述业务系统;因为没有严格的标记语言,可以采用适当的篇幅描述适当的系统。当然,这种方法的缺点也是明显的,分析人员和业务人员之间可能缺乏共同语言,机器不能识别业务需求书,在设计阶段还需要继续和用户确认一部分功能。
面向对象的分析方法的最大好处是在需求阶段,就能够非常精确地描述一个系统,采用程序语言的方式和最终用户交流(最终用户必须要熟悉这种语言),能够在项目一开始就发现很多问题,避免在开发的过程中出现需求的反复,而且在系统设计和开发阶段不需要最终用户参与。在实施上,一般可以采用场景、业务功能等方式来描述,比较适合于业务流程环节多的系统,或者软件产品的开发。但是,我们也要看到,在现实中,绝大多数的应用系统都很难在需求阶段就可以被精确地抽象化定义,所以这种方法的缺点和困难也是显而易见的:首先,用户要非常清楚地知道最终的业务系统应该是什么样,或者采用一种抽象的方式能够确定最终的应用系统;其次,因为最终用户不需要参与设计和开发阶段的工作,所以双方确定业务需求的过程也会比较长;同时,因为是精确描述,因此描述系统的语言是非常逻辑化的,一般通过某种方式可以使机器识别业务需求,采用这种方式写的业务需求是非常格式化的,一方面描述一个系统需要的信息非常多,可能使需求说明的篇幅非常长,不便于理解和阅读;另外由于通过抽象的方式来推演最终系统的运行方式,对业务人员的要求非常高。
⑸ 需求分析的主要方法是什么
1.1 需求的背景
需求的背景指的是动机,这一项实质上是换位思考,它能够帮助我们从业务方的角度,从使用场景、用户心理去理解需求。
在实际工作中,我们所接收到的“需求”常常是表述不清晰的、不完整的,甚至是具有欺骗性的。
一个问题会对应许多的解决方案,找到真正的需求,也正是我们的职责。
1.2 需求的受众
需求的受众需要注意的问题有两点:
谁是真正的受众;
受众人群是否具有代表性。
需求的来源很多,可能是用户、业务方等。我们需要分清楚谁才是真正的受众。
在一个需求里不同的角色认知和诉求是不同的,当信息带上了主观判断也就被污染了。
其次,则是覆盖度的问题。对于频次不够高或者人群不够有代表性的需求,投入产出比会是一个大大的问号。辨清受众,在评估需求的优先级和制定解决方案时,迷惑性会大大降低。
1.3 需求的目的
需求的目的指需要做什么,很多时候我们接到的“需求”其实是业务方过滤后的“解决方案”。
以“口渴”为例,此时业务方提出的需求是要制作一台饮水机,然而饮水机并不能解决问题。如果我们挖掘到背后的动机是“口渴”,那么我们可以从补充水分和减少水分的流失来着手提供解决方案。
1.4 需求的目标
在汉语辞典里的解释,目的是期望,而目标是成果。
目标更为具象,并且能够用数据指标来衡量,后续也能够指导需求的改进。
需求的本质是为了创造价值,而创造价值最直白的则是开源和节流。具象到目标,可以用创造的收益,提升的效率以及节省的资源等方面进行量化。
2. 因果关系分析法
、需求优先级的评定
最后一个环节是需求优先级的评定,我常用的方法是选取影响优先级的因素并设定比例,经过加权计算出优先级,分数越高优先级越高。
其公式如下:
优先级=因素1比例*因素1分值+因素2比例*因素2分值+….
表1-需求评估加权表
这张表,影响的因素主要有两项:投入产出比以及重要程度。
投入产出比个人认为是必选的,而重要程度中的维度可以根据实际情况去增加、减少。同理,加权中比例的设置也是如此。
⑹ 软件工程中常用的需求分析的方法有哪些
一、过滤需求的方法
做后端系统,要学会的第一个技能就是砍需求。也就是过滤需求。
这不是一个贬义词,反而是体现后端产品价值判断的基础。
过滤需求的方法,就是通过一定的手段判断需求是否是伪需求,应该被过滤掉。
1. 用户场景模拟法
后端产品的出发点就是帮助业务用户,因此在调研需求的时候要模拟业务的场景,分析业务用户提到的需求是否能解决他的问题。
如果不能帮助用户,那么这个需求就可能是伪需求。
以下面的案例说明:
背景:“货到付款”类型的订单会因为缺货而无法发出,如果超过一定的时间,客服就会跟顾客沟通,帮顾客取消订单。
需求:由于这种订单的数量还是蛮多的,逐个取消太费时间,因此业务用户要求在“缺货订单”列表页增加“批量取消订单”按钮。
分析:调研到业务操作场景,是先找到该类缺货订单,然后和顾客沟通,顾客同意删除,才进行删除。也就是逐个沟通确认,再逐个取消订单的,所以“批量取消订单”无法被有效使用。
因此,该需求是个伪需求,应该被过滤掉。
2. 功能归属分析
专门的系统做专职功能,有助于合理的产品体系建设。
因此需求调研的时候,可以通过系统的定位,判断需求是否应该在该系统完成。
如果不属于该系统范畴,那么直接说服需求方更换方案。以
下面的案例说明:
背景:CRM系统(顾客关系管理系统)有一个顾客标签生成功能,就是根据顾客的消费行为数据,自动对应关联上标签,如优质顾客、高潜力顾客、欺诈顾客等。
需求:业务用户提出需求,除了做上述的基础标签之外,还要做出英语版本的标签(就是把标签文案翻译成英文),这样欧美员工可以在英语版本的系统下使用。
分析:调研到翻译之后的标签不是在CRM系统使用的,而是给到SMS(客服系统)使用的。
所以应该由SMS根据CMS提供的基础标签数据,自己做二次的衍生。
之所以这样,首先是为了避免未来更多语言版本的扩展需求或更多系统提出类似的需求;
其次,CRM系统已经完成了“接力赛”的第一棒,创造了基础数据,那么其他系统要特殊化使用,完全可以自行进行特殊化处理,无需耦合回CRM系统。
结论:案例的需求本身是真需求,并且实现上也没难度,但是该功能的定位超出了本系统范畴,专门系统做专职功能,化衍生需求应该在下游执行。
否则,耦合性过高只会增加系统的复杂程度,难以维护和扩展。
二、拆分和聚合的方法
1. 拆分需求法
业务用户提出一个需求,很可能只是短短的一段话。
但是不要高兴太早,可能这一句话暗含了很多线索,因此要善于拆分:
先找他要解决的核心问题,再围绕核心点,理清前、后、左、右、上、下的旁系需求点。
每个需求点再当做一个子需求进行调研,最后再聚合在一起。
以下面的案例说明:
背景:订单业务的类型很多,订单退货之后需要创建售后单据,但是因为数量大,所以花费很多人力,且手动创建有出错的风险。
需求:业务提出的需求是“增加退货订单自动创建售后单的功能”,这是个一句话需求。
该一句话需求,其实包含了多种具体的订单类型和场景,那么我们就要拆分调研,拆分的维度比如:
自营订单、第三方订单、货到付款订单、先款后货订单、部分退货订单、完全退货订单、服装事业部订单、电子事业部订单等,其中每一个维度就相当于一个小需求。
这里不一一展开。
2. 聚合需求法
拆分法是对单个需求分解成若干小需求进行调研,聚合法相反,是找到许多个相互关联的小需求的共性,然后统筹成一个大需求去完成。例如:
由于业务用户分散在不同的部门,各自为政,于是张三、李四可能都对一个业务流程有相同的需求,或者对同一个功能有相同的优化期望,结果俩人分别提了需求过来。那么产品经理就要找到二者背后的相关性和交叉区。
然后统筹规划,聚合在一起当作一个需求来调研,最终输出一个整体的需求调研结果。
三、利用辅助功能调研需求
调研产品现有功能,可以用来确认原有功能的逻辑,或者确定新需求方案是否可行。
比如业务用户需要更新一个功能,为了避免更新出错或遗漏,产品经理需要知道修改前和修改后是否会能正常运行。
最基础的办法就是自己设计一个测试用例,记录操作方式、状态变化、数据流向等。看看下面的例子:
背景:从销售网站获取到OMS系统(订单管理系统)的订单信息中带着顾客的邮箱。顾客下完单,可能会在销售网站修改邮箱,而此时已经获取到OMS的历史订单中的邮箱是不变的。
需求:顾客若在销售网站修改邮箱,要求已获取到OMS的该顾客的订单中的邮箱也要同步修改。
分析:需求是很明白的,也有它的意义,但有风险。
因为我们知道订单信息贯穿于整个订单流转过程中,牵扯到订单编辑、审核、取消、配货、发货等,而这些环节跳转的触发条件可能就是某个信息更新(这里面就可能包括有邮箱更新)。
因此,更新邮箱是否会影响流程中的某些环节,一时间很难准确知道。
于是,我们可以采用预测试的方式,设计测试用例,在测试机运行一些订单,观察各个环节邮箱变更的影响,然后收集起来分析对策。
测试法就像是探雷一样,主要用来解决未知风险点。这个方式的重点是记录和分析操作前状态、操作位点、操作后状态、操作后触发的连锁反应、数据流向等。
四、“拔萝卜带出泥”的方式调研需求
调研需求时,产品经理要拔萝卜带出泥,挖掘用户没看到的需求点和价值。
举例说明:
背景:公司入驻到销售平台后,销售平台会对入驻的店铺的违规行为进行罚款。
需求:业务用户提出需求,将销售平台的罚款数据抓取到订单系统,关联订单数据,以便进行人工分析。
分析:
第一步,先拆分需求,确定什么是罚款数据,总共有哪些罚款种类,需要对接哪些罚款种类,罚款数据与订单系统关联方式是什么,是否都能关联到,关联不到怎么办,销售平台是否已经提供了公用的罚款接口,Token(请求权限)如何获取,抓取频率怎么样,数据增长幅度多大,获取之后做哪些展示和搜索,用户权限怎么设置,需要和订单系统做哪些交互,该需求的价值是什么……
第二步,挖掘需求:是否需要作分析功能,分析功能的规则是什么;是否需要做监控和预警,是否需要指派负责人;其他业务人员是否也有类似需求,其他平台是否也有类似需求……
通过“拔萝卜带出泥”的方式,连带出更多需求点。将上述调研结果重新组装起来,得到一个系统化的完整需求。
罗列出需求要点和对应的验收目标,这样使得需求具象化,同时又不会遗漏细节,内部充实,外部闭环,并且进行了价值挖掘,做成控制阈值、预警、责任人分派、趋势分析、损失分析等高价值的功能,超出业务的预期。
⑺ 需求分析有哪三种方法2,什么是面向数据结构方法
它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。
三种基本的结构形式就是顺序、选择和重复。三种数据结构可以进行组合,形成复杂的结构体系。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。
⑻ 需求分析常用方法都有哪些,请举例说明
问卷调查法,是指设计方就用户需求中的一些个性化的、需要进一步明确的需求或问题,通过采用向用户问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。 这种方法适合于设计方和建设方、使用方都清楚项目需求的情况。因为建设方和使用方都清楚项目的需求,需要双方进一步沟通的需求或问题就比较少,通过采用这种简单的问卷调查方法就能使问题得到较好的解决。显然对于乐百氏集团这样规模庞大的公司,简单的问卷调查是不能够满足准确获得需求的需要的。会议讨论法,是指设计方和用户相关人员召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于设计方不清楚用户的详细业务需求,但使用方清楚项目需求的情况。因为使用方清楚项目的需求,他们能准确地表达出他们的需求,而设计方有专业的需求,而我们有专业的软件开发经验,经过回忆讨论交流之后,能够对用户的需求进行准确描述和把握。这个方法对于准确的获得乐百氏公司的需求是一种不错的选择。在本案例中系统的设计人员也是这么做的,他们通过和乐百氏项目组经理的讨论,很快了解了乐百氏的运作过程的数据。界面原型法,是指设计方根据自己所了解的用户需求,描画出应用系统的功能界面后与用户进行交流和沟通,通过“界面原型”这一载体,达到双方逐步明确项目需求的一种需求获取的方法。这种方法比较适合于设计方和用户都不是非常清楚项目需求、只是大概了解用户需求的情况。因为设计方和用户方都不能非常准确的描述出客户的需求,因此此时就更需要借助于一定的“载体”来加快对需求的挖掘和双方对需求理解