1、需求评审的重要性
在软件项目中,需求分析是最开始的工作,同时也是最重要的工作。
2、需求评审的关键
2.1 充分准备评审
好的软件需求说明书,是进行有效需求评审的前提。
2.2 分层次评审
用户的需求是可以分层次的,一般而言分成以下层次:
1)目标性需求,定义整个系统需要达到的目标;
2)功能性需求,定义了整个系统必须完成的任务;
3)操作性需求,定义了完成每个任务的具体的人机交互;目标性需求是企业的高层管理人员所关注的,功能性需求是企业的中层管理人员所关注的,操作性需求是企业的具体操作人员所关注的。
4)非功能性需求,性能、安全、可拓展
对不同层次的需求,其描述形式是有区别的,参与评审的人员也是不同的。如果让具体的操作人员去评审目标性需求,可能会很容易地导致“捡了芝麻,丢了西瓜”的现象,如果让高层的管理人员也去评审那些操作性需求,无疑是一种资源的浪费。
分层次评审,可以让不同类型的参与人分别评审他们关注的内容,从不同的角度找到需求的异常,提高评审效率。
2.3 正式评审与非正式评审结合
正式评审时指通过开评审会的方式,将需求涉及到的人员集合在一起,并定义好参与评审人员的角色和职责,对需求进行正规的会议评审。很多时候,因为需求内容太多,正式的评审会议中不可能将每一个细节都涉及到,评审员也有一个理解需求的过程,在短短的会议中不可能发现太多问题。因此,需要与非正式评审相结合,在评审会之前可以先开会对大家进行需求讲解,然后把需求通过邮件等方式发送给相关人员,留几天时间,以便相关人员仔细研究,记录异常,在正式的评审会上讨论。
2.4 分阶段评审
需求评审应该在需求形成的过程中进行分阶段的评审,而不是在需求最终形成后再进行评审。可以根据需求人员进行需求分析的进度,将一个整体的软件需求分为不同的阶段,组织小规模的评审。在形成目标性需求后进行一次评审,在形成系统的初次概要需求后进行一次评审,对概要需求细分成几个部分,对每个部分进行各个评审,最终再对整体的需求进行评审。这样降低了需求返工的风险,提高了评审的质量。
2.5 评审人员选择
需求评审涉及到各层次人员,在进行评审员选择时,一定要将各层次人员都囊括进来,他们可能有用户、需求分析人员、产品经理、项目经理、架构师、概要设计人员、详细设计人员、编码人员、测试人员、质量保证人员等等。
用户在进行需求评审时,关注点更多在于他们所要求的功能是否在软件需求说明书中都囊括进来了;架构师及概要设计人员更多关注的是在现有的技术条件下,是否能够实现需求中的要求,如果无法实现需求或者代价太大,可能就要需求人员与用户沟通更改需求;编码人员可能更多关注于某些细节,例如界面元素等;测试人员主要关注是否所有的需求都是可测试的;质量保证人员关注点在于输出物是否符合规范。各层次人员充分参与,便于他们理解需求,通过需求评审,达成一致意见,不至于需求在不同环节因理解不同而出现偏差。
因为各层次人员的立场不同,对同一个问题的看法是不相同的,有些观点是和系统的目标有关系的,有些是关系不大的,不同的观点可能形成互补的关系。如果漏掉某一层次的人员,可能会漏掉很重要的需求。
2.6 对评审人员进行培训
常常见到有的项目的需求评审会议在主持人进行需求讲解时,与会人员似懂非懂,没有提出有价值的问题,致使会议没有取得预期的效果,不得不改日重新进行。有的项目的需求评审会议针对某一个细节问题与会人纷纷提出自己的意见,大家争执不下,结果,会议出现了混乱状况,主持人无法控制局面,致使会议大大超出了计划评审时间。因为各层次评审人员关注点不同,评审也需要技巧、把握关键点,因此,应该对各层次评审人员进行有针对性的培训。以便于参与评审的人员能够紧紧围绕评审的目标来进行,能够控制评审活动的节奏,提高评审效率。
2.7 给予评审员充足的评审时间
实践证明,需求的异常往往存在于细节方面,评审员理解软件需求又需要一个过程,要想找到这些异常,必须有充足的时间,以便充分理解需求、找出其中的缺陷,提出可行性建议。因此,从需求讲解到非正式评审再到正式评审,需要预留足够的时间。
如果评审员是项目中的成员,项目负责人需要给项目成员专门下达需求评审的时间,如果评审员只能额外抽时间来研究需求,恐怕只能简单提几条质量不高的异常了事。评审自然也就达不到预期的目的。实践证明,在需求评审上多花一些实践是值得的,所谓“磨刀不误砍柴工”。
2.8 把握需求评审的关键点
(1)注意对软件需求说明书的正确性进行评审。需求规格说明的正确性通常可以从如下方面得以体现:
① 是否有需求与其他需求相互冲突或者重复?
② 是否清晰、简洁、无二义地表达了每个需求(“清晰”是让人能够读懂;“简洁”是让人愿意去读;“无二义”决定“读”的效果,是让大家对需求描述的理解能够达成一致)?
③ 是否每个需求都通过了演示、测试、评审,分析是否得到了验证?
④ 是否每个需求都在项目的范围内?
⑤ 是否每个需求都没有内容和语法上的错误?
⑥ 在现有的资源内,是否能实现所有的需求?
⑦ 每一条特定的错误信息,是否都是唯一的和具有含义的?
(2)注意对软件需求说明书的实践性进行评审。所谓实践性是指需求本身是否来源于目前企业的相关业务规则和文件制度,而非源于分析师们经验主义的臆测。实践性是判断需求规格说明是不是理论联系实践、密切和用户联系的一个关键性指标。
(3)注意对需求规格说明书的完整性进行评审。可由下面的问题清单来评审需求说明书是否“完整”:
① 编写的所有需求,其详细程度是否一致和合
② 需求是否能为设计提供足够的基础?
③ 所有对其他需求的内部引用是否正确?
④ 是否包含了每个需求的实现优先级?
⑤ 是否定义了功能说明的内在算法?
⑥ 是否包含了所有已知的客户需求或系统需求?
⑦ 是否遗漏了必要的信息?
⑧是否对所有预期的错误条件所产生的系统行为都编制了文档?
需求说明的完整性主要体现在需求说明的详细程度上,怎样判断该需求的描述是否详细呢?笔者认为需求需要精化,而不是仅仅提出精化功能、对象要考虑涉众参与者、做些什么、需要什么数据信息、受什么业务规则和条件限制、系统会有什么响应等。
(4)注意对需求方案的可行性和成本预算进行评审。
(5)注意对需求的质量属性进行评审。评审需求规格需要说明是否合理地确定了所有的性能目标,是否合理地确定了安全性方面要考虑到的问题。
(6)注意对需求的可实施性进行评审:
① 是否对每个需求都设置了唯一性并且可以正确地识别它?
② 是否每个功能需求都可以跟踪到高层需求?
需求必须可以测试,每个需求在特定的输入条件下应当能给出已知的输出结果,同时,需求应当层次分明,需要把单个需求下面的相关需求综合在一起形成一组需求功能。需求的可实施性除了可跟踪性还包括可测试性,事实上,分析人员和测试人员在编写代码以前把需求模型,分析模型和测试用例综合起来通盘考虑,检查出遗漏的、错误的和不必要的需求,软件需求在概念上的测试是一种很必要的技术,它可以在项目早期阶段发现需求的歧义和错误。
(7)注意对需求包含的用例文档进行评审。用例是参与者对系统和参与者的交互过程所达成的一种契约。需求说明书基于用例的分析方法是也是当前较为流行的需求开发方式。用例文档作为需求重要的成果性文档也是需求评审主体之所在。
需求评审确认的重点是对关键用户的最常用和最重要的用例进行深入和细致的评审,首先要通过测试用例的主干过程。而是否撰写有效的用例则要从以下方面着手评审:用例的目标或价值度量是否明确?用例是否是独立的分散任务?
是否明确说明可用用例会给哪些参与者带来用处?编写用例的详细程度是否恰当?是否有不必要的设计和实现细节?所有预期的分支过程是否都编写了文档说明?所有预估的异常过程是否都编写了文档说明?是否存在一些普通的动作序列可以分解成独立的用例?
每个路径的步骤是否都清晰明了,无歧义而且完整?用例中的每个参与者和步骤是否都与所执行的任务有关?用例中定义的每个可选路径是否都可行和可验证?用例的前置条件和后置条件是否合理?分析师必须确认用例的前置条件和后置条件准确界定了用例的边界范围,区分了用例和用例之间的界限。
2.9 建立评审流程
对正规的需求评审会需要建立正规的需求评审流程,按照流程中定义的活动进行规范的评审过程。比如在评审流程定义中可能规定评审的进入条件、评审需要提交的资料、每次评审会议的人员职责分配、评审的具体步骤、评审通过的条件等等。
2.10 建立评审制度
有效的需求评审,相关的评审制度必不可少,主要有以下方面:
① 限制项目内评审员提交有效异常的数量,并纳入考核,必须达到一定数量才算合格;
② 制定评审的准入准出条件,限制随意通过评审;③质量保证人员参与评审,监督评审进行;④质量保证人员对评审流程进行全程监控。
2.11 跟踪工作
在需求评审后,需要根据评审人员提出的问题进行评价,以确定哪些问题是必须纠正的,哪些可以不纠正,并给出充分的客观的理由与证据。
当确定需要纠正的问题后,要形成书面的需求变更的申请,进入需求变更的管理流程,并确保变更的执行,在变更完成后,要进行复审。切忌评审完毕后,没有对问题进行跟踪,而无法保证评审结果的落实,使前期的评审努力付之东流。
转自:
软件项目中如何开展有效的需求评审http://www.uml.org.cn/RequirementProject/201304173.asp
https://www.jianshu.com/p/e3d0530029c9
https://zhidao.baidu.com/question/744139872099029292.html
网友评论