需求分析和评审

A.  需求分类

是对需求按照可以管理的方式分组。可分为以下:

(一) 原始需求(客户需求):原始需求可视为客户的需求,而客户是不了解软件开发技术的,提出的需求是没有办法直接用于开发的,输出文档:市场需求文档(Market Requirement Document,MRD)

(二) 产品需求:产品设计人员或者需求分析人员根据原始需求、结合软件可以实现的功能形成的需求,我个人理解应该就是所说的业务需求,这点待讨论.输出文档:产品需求文档(Product Requirement Document,PRD)

(三) 软件需求:软件开发人员根据软件实现原理进一步将产品需求详细化,输出文档:软件需求规格说明书(Software  Requirements  Specification),简称SRS

(四) 测试需求:开发人员不了解如何对软件进行测试,无法将需求详细到可直接用于测试,所以测试人员还需要将软件需求转化为测试需求

客户需求->产品需求(业务需求)->软件需求->测试需求,可看成需求由简单到详细的过程,对于每个需求类型都要界定需求实现的优先级、工作量和风险

一个经典的例子:

小明说,他要吃猪骨头火锅(客户需求),80块吧,但没想到又碰到了授客。

授客:“真的想吃?”

小明:“想吃!”

授客:“为什么?”

小明:“我饿了……”(找到了本质)

授客:“哦,这里是两个馒头(产品需求),请你吃,才1块钱”

……

 

小知识:客户和用户的区别

客户是为产品或服务买单的人。

用户是使用产品或服务的人,和产品或服务产生直接的交互过程。

客户是对产品或服务形成服务请求和达成买卖关系的人或实体。也可以说是对产品或服务购买有决策权的相关人,这里包含技术决策者和业务决策者等系列人。

客户一般关注的是价格和效果,效果包括了产品使用后的工作效率提升,也隐含了领导的业绩提升。有的时候客户既不关心价格也不关心效果,他关心自己的个人利益。所以找到客户的真实意图是拿单的关键所在。

用户对产品的关注点是好用,简单,提高效率,带来便利。产品最终是为用户服务的,即使产品被客户买单,但最终用户用不起来,那么这也是个失败的产品。

所以,产品被用户认可,使用后能提升工作效率,同时给客户带来利益,这才是双赢的局面。

 

B.  测试需求

什么是测试需求,见名知意,要测啥?简单说也就是设计测试用例中的验证点,测试依据,这里包括功能性测试需求,也包括非功能性能测试需求。做测试的要学会从需求规格说明书中挖掘需要测试的验证点,进行用例设计。

例子:从软件需求规格说明书中获取测试需求

(举例目的在于让新手了解写用例并不是直接复制需求说明书中的内容,而是要挖掘测试点)

假设需求规格说明书中有如下一功能需求

功能描述:


功能名称


快速搜索


功能描述


可以根据人名或文章、标题的内容进行搜索


用户及角色


注册用户


补充说明


输入项:略

处理流程:略

输出项:略

即便仅有功能描述的情况下,我们也可对其进行挖掘测试需求:

1.输入是否支持中文?数字?英文?空格?

2.是否可以输入较长的搜索字符?

3.输入是否支持模糊搜索?

……

确定以上问题为测试需求后即可把它们作为用例设计的验证点,进行用例设计

C.  需求评审

1.需求阶段评审的角色和职责

一句话,根据具体情况选择相关人员,充当相关角色,履行相关职责,大家也别吐槽我,现实就是这样,别去记忆这些死规则了

2.好的需求应具备的特点

完整性:每一项需求都必须将所有要实现的功能描述清楚,以使开发人员获得设计和实现这些功能所需的所有必要信息。

正确性:每一项需求都必须准确的陈述其要开发的功能。

一致性:指与其它软件需求或高层需求不相矛盾

可行性:每一项需求都必须是已系统和环境的权能和限制范围可以实施的。

无二义性:对所有需求说明的读者都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求简明的用户性的语言表达出来。

健壮性:需求的说明中是否对可能出现的异常进行了分析,并且对这些异常进行了容错处理。

必要性:可理解为每项需求都是用来授权你编写文档的“根源”,要使每项需求都能回溯至某项客户的输入。

可测试性:每项需求都能通过设计测试用例或其它的验证方法来进行测试。

可修改性:每项需求只应在SRS中出现一次。这样更改时容易保持一致性。另外,使用目录列表、索引和相互参照列表方法使软件需求规格说明书更容易修改。

可跟踪性:应能在每项软件需求与它的根源和设计元素、源代码、测试用例之间建立起链接链,这种可跟踪性要求每项需求以一种结构化的,粒度好(f i n e - g r a i n e d )的方式编写并单独标明,而不是大段大段的叙述。

分配优先级:应当对所有的需求分配优先级。如果把所有的需求都看作同样的重要,那么项目管理者在开发或节省预算或调度中就丧失控制自由度

以上特点也是需求评审的要点,评审前可以根据实际情况指定需求评审检查表来帮助评审。

可以根据以上特点对需求进行评审

3.软件需求评审输出

还是一句话,根据具体情况适当的做好评审记录,形式不限,输出文档名称也不限,随便你取,^^内容才是重点

4.组织需求评审原则

还是一句话,组织自己定吧,适合就好,效率优先 ^^,别吐槽,没骗你的,不信你百度去,可以百度出不同答案

5.需求评审形式

总 体来说可以分为正式评审与非正式评审。正式评审是指通过开评审会的形式,组织多个专家,将需求涉及到的人员集合在一起,并定义好参与评审人员的角色和职 责,对需求进行正规的会议评审。而非正式的评审并没有这种严格的组织形式,一般也不需要将人员集合在一起评审,而是通过电子邮件、文件汇签甚至是网络聊天 等多种形式对需求进行评审。2种形式各有利弊,在评审时,灵活地利用这2种方式。

仔细来说,可以分为如下:

(1)相互评审、交叉评审( Pear-to-pear Review ),甲和乙在一个项目组,处在一个领域,但工作内容不同,甲的工作成果交给乙审查,乙的工作成果交给甲审查,相互评审是最不正式的一种评审形式,但应用方便、有效,被普遍使用

(2)轮查( Pass-round ),又称分配审查方法,是一种异步评审方式。作者将需要评审的内容发送给各位评审员,并收集他们的反馈意见。是一种一种非正式的同行评审。

(3)走查(Walkthrough ),产品的作者将产品在现场向一组同事介绍,描述产品要有怎样的功能、结构,从头到尾走一遍,以收集大家的意见。希望参与评审的其他同事可以发现产品中的错误,并能进行现场讨论这种形式介于正式和非正式之间,其应用普遍。是一种一种非正式的同行评审

(4)小组评审(Group Review),通过正式的小组会议完成评审工作,是有计划的和结构化的评审形式。评审定义了评审会议中的各种角色和相应的责任,所有参与者在评审会议的前几天就拿到了评审材料,并对该材料进行了独立研究。

(5)审查(Inspection )。审查和小组评审很相似,但更为严格,是最系统化、最严密的评审形式,包含了制定计划、准备和组织会议、跟踪和分析审查结果等。

6.需求评审的策略

(1)分层次评审

一般,可以分成如下的层次:

*目标性需求指整个系统需要达到的业务目标,是最高层次的、基本的需求,是企业的高层管理人员所关注的。如果让具体的操作人员去评审目标性需求,容易导致“捡了芝麻,丢了西瓜”的现象。

*功能性需求指整个系统需要实现的功能和任务,是目标之下的第二层需求,是企业的中层管理人员所关注的。

*操作性需求指完成每个任务具体的人机交互〔UI)需求,是企业的具体操作人员所关注的。

(2)分阶段评审

应该在需求形成的过程中进行分阶段的多次评审,而不是在需求最终形成后才进行仅有的一次评审分阶段评审可以将原本需要进行的大规模评审拆分成各个小规模的评审,这样就降低了需求分析返工的风险,提高了评审的质量。

这点对于敏捷开发模式特别有效。需求按版本为单位划分,根据版本进行需求评审(确定做啥,是不是那样做),通过后开发针对该版本需求进行开发,测试根据需求进行用例编写和维护,然后按这种模式进行迭代。

7.注意事项

精心挑选评审人员->定制规范化评审流程->准备好评审材料->做好结果跟踪工作等

时间: 2024-09-30 06:31:02

需求分析和评审的相关文章

软件开发质量管理的一些思考

PMBOK里关于质量管理主要有3个过程: 制定质量管理计划 质量保证(QA) 质量控制(QC) 书看了5-6次,还是发现比较抽象,难以理解. 实际项目中,如何才能合理的考虑各种资源制约,更好的执行质量管理呢? 一般的正规流程大致如下: 需求分析-> 客户评审与确认-> 概要设计->内部评审-> 详细设计->内部评审->编码-> 代码审查->单体测试 -> 集成测试->问题修复-> 代码评审-> 测试确认-> alpha测试-&g

需求文档可以不签字吗? 之一

在软件开发中,需求分析和需求管理一直被认为是软件开发成功与否的关键.在CMMI中,需求管理是CMMI2级的过程域,需求开发是CMMI3级的过程域.在瀑布型生命周期当中,安排了需求分析阶段,一般也安排需求分析里程碑评审.瀑布型生命周期存在了很多年,曾经几度写入到软件开发的国际标准.国家标准当中. 由于瀑布型生命周期如瀑布般顺流而下,在设计阶段开始后,根据需求文档的结果来开展工作,要求需求文档的结果比较清晰.稳定.所以对于需求确认,往往地采用签字的方式,希望各方慎重.全面.充分的确定需求. 签字确认

20160702如何做好一个创业团队的产品经理?

关于产品经理工作的方法论有很多,如何去分析一个需求,如何去搭建一款产品,等等等等.但是很多时候特别是在创业团队工作的PM往往的忽略一个最基本的问题,那就是整个项目开发的各个节点流程化规范. 无论你是来自BAT还是一直自学成才,每个人都建立了属于自己的知识体系.本文主要站在初创团队的角度对整体产品落地进行了流程化梳理,希望可以对一些并没有经历过完整的项目统筹又选择进入初创团队进行产品工作的同学有一定的帮助. 无论是敏捷开发流程还是完整开发流程,在产品周期中以下的几个步骤都是不可或缺的部分: 需求收

由程序员砍产品经理新闻引起的随想

最近看到深圳的一条新闻,程序员砍产品经理新闻,这是什么仇什么怨,才能有这么大恨. 后来又看到朋友转的一则改编的小段子,如下: ------------------------------------------------------------------------------------------- 产品经理下了一个产品的需求.作为开发程序员拿过来一看,好嘛,写的挺详细的,我按照你写的开发.于是幻想着,这几天辛苦,加加班,做完这个可以小小休息一下,还有奖金拿,拼一拼也值得.开发完了,交给

移动app传统测试流程优化

概述 在传统的软件测试流程中,每一期需求从开发到上线都要经历从需求分析与评审.测试用例评审.开发.测试.发布的流程.其中测试包含了后台测试.前端web测试.客户端测试.后台测试又包括后台代码逻辑测试.接口测试.接口压力测试等,web端测试包含了前端页面的UI界面测试.PC与移动端浏览器兼容性测试和功能测试等,而客户端测试包含的测试项目较多,而每项测试又相对技术含量较高,从而引入了专项测试的概念.和针对客户端每期需求所做的功能测试不同,专项测试的结果虽然与产品的具体功能相关,又包含独立于产品需求功

软件测试知识点总结

软件测试:特定的环境.特定的条件下运行软件,验证其能正常运行,并发现其缺陷,对软件的质量进行评估的过程: 软件测试过程:设计.计划.实现.执行: 软件测试流程:需求.计划.方案.用例.执行.总结: lampp(xampp):apache+mysql+php+per: wampp:windows+apache+mysql+php: apache的http的默认端口为80,https的默认端口为443: (http端口设置在xampp文件下httpd.conf,https端口设置在xampp文件下的

网络技术教程笔记(2)

系统开发基础 系统开发基础 1.软件生命周期与开发模型 1.1软件开发生命力周期 1.2软件开发模型 1.2.1 瀑布模型 1.2.2 V模型 1.2.3 喷泉模型 1.2.4原型化模型 1.2.5演化模型 1.2.6螺旋模型 1.2.7统一过程 1.2.8敏捷方法 2.软件开发方法 2.1结构化方法 ①用户至上 ②严格区分工作阶段,每阶段有任务和结果 ③强调系统开发过程的整体性和全局性 ④系统开发过程工程化,文档资料标准化 ⑤自顶向下,逐步分解(求精) 2.2面向对象方法 ①更好的复用性 ②关

项目实施流程和规范模板(测试方向)

1. 简介 1.1 编写背景 随着公司业务的快速发展,技术部面临的基础技术研发.客户系统建设.新产品研发.老旧系统改造等各类建设项目越来越多.但在众多技术人员参与.并发项目交互的情况下,如何定义和制定项目实施流程和管理规范显得越来越重要.从现状看,我们的目前的项目推进流程中存在诸多问题,如: l 前期需求规划和设计不明确.文档不详细 l 项目干系人没有参与前期需求分析 l 项目分工欠合理 l 解决问题流程不清晰 l 历史问题与文档无法跟踪 l 过度依赖RTX进行事务交流,不便事务跟踪 基于此,技

开启运维自动化架构师成长之路

技术的提升仅是量的积累,思想的提升才是质的飞跃! 这句话是我在网上看到认为最有道理的励志语录了,当然互联网IT行业的工作者相对理解的会更加深刻. 以这句话开头引出我将要写的这篇文章.首先,请允许我做一个自我介绍: 熟悉的朋友喜欢叫我一声岩哥,这么些年我也认可了这个称谓,尽管不是太好听.从毕业之后就接触了互联网,到现在工作N多年,中间有接触过游戏行业.金融行业.教育行业.云计算行业.电商购物和系统项目集成等,所有的工作经验和项目经历都是跟互联网IT技术挂钩,熟知企业中.项目中和学习中关于IT方面的