一,概念
- 需求确认:在需求活动进行后,对需求活动的输出(文档或制品)、需求活动的输入(上下文因素)以及需求活动过程进行检查,看是否符合预定的质量标准或过程指南(是否适当)。
- 需求确认需要将相关涉众、其他需求来源(标准、法律等)以及外部评审者(如果有必要)纳入活动中。
- 确认是正确性检查,验证是正确性证明。确认的结果一般为“适当”、“不适当”;验证的结果一般为“正确”、“不正确”。
- 由于验证主要关注表述的正确性,往往使用形式化方法,实践中更关注确认。
- 对需求而言,如果不能确定需求是适当的,即使能证明个别属性如安全性的正确性也无意义。
二,确认的目的
- 需求确认有三个具体目标:
- 检查活动的输出是否满足所定义的质量准则;
- 检查活动的输入是否满足所定义的质量准则;
- 检查活动的执行是否遵循了过程定义和活动准则。
- 不充分进行确认,产生的风险
- 影响到开发活动有效开展
- 导致法律问题或合同纷争
- 导致额外的成本或工作量
三,制品的确认
-
从以下三个维度进行:
- 内容维度:检查是否所有的相关需求都被发掘了,并且理解的程度达到了要求的详细程度。
- 文档化维度:检查记录的需求是否符合定义的文档化和规约规则。
- 共识维度:检查涉众是否对文档化的需求达到了一致。检查每一个已知的冲突是否被解决,同时检查是否还存在未识别的冲突。
-
内容维度的确认:检查需求内容上的缺陷。按以下准则进行:
- 制品/文档的完备性:制品是否包含了所有相关信息
- 需求完备性:每个需求是否包含了所有需要的信息
- 一致性:系统是否能同时满足所有需求
- 需求正确性:需求内容确实反应了涉众的需要和期望
- 需求分类正确性:每个需求是否被划分到正确的类别
- 必要性:每一个需求是否需要(满足定义的一致目标)
- 无提前的设计决定:每个需求未规定设计或偏好
- 可测试性:是否为每个需求定义了验收或测试准则
- 可追踪性:是否定义了每个需求所有的相关可追踪关系,文档的链接是否正确。
-
文档化维度的确认:检查文档化的需求是否符合通用的文档化规则和项目特定的方针。按以下准则进行:
- 正确的文档格式:需求制品是否符合所要求的格式
- 易理解性:文档化的需求在给定的上下文中是否容易理解
- 无歧义:需求制品的文档格式是否保证对需求无歧义的解读?
- 符合文档化规则:需求制品是否符合文档化的规则和指南?
-
共识维度的确认:检查所有相关的涉众是否在最终的需求上达成了共识。针对以下方面:
- 共识:相关涉众是否对每一项需求都达成共识?
- 修改后的共识:在需求修改或者上下文发生改变后,相关涉众是否重新达成了共识?
- 已进行了冲突检查:是否检查了需求中由冲突目标等造成的潜在冲突?
- 冲突已解决:每一项需求中已知的冲突是否都已经解决了?
四,上下文确认
- 仅检查需求制品,无法发现需求缺失方面的问题。需求缺失与不充分的上下文考虑相关。
- 上下文缺陷主要有:
- 上下文信息缺失
- 不正确的上下文信息
- 未充分考虑上下文信息
- 不完备的需求来源
- 上下文的四个刻面:
- 主体刻面
- 使用刻面:确保系统的使用方式信息、相关的用户组和他们期望的使用界面类信息,以及其他系统期望的系统使用信息,完备和正确。
- IT系统刻面:考虑IT系统刻面各因素(硬件、软件、网络、其他相关系统),确保系统能集成到IT系统环境中。
- 开发刻面:开发所用的方法、工具,会影响系统的开发过程。应在开发早期确认,后期无法更改。
五,活动的确认
- 活动的确认:检查每一要求的需求工程活动是否被适当地执行。
- 确认动机:如果遵循了已被采纳和证明有效的过程,会增强对产品质量的信心。
- 活动确认的目标:找出活动与已约定开发过程的不一致(偏差)。这种偏差会导致需求质量的损害。
- 过程定义以任务和活动描述定义,确认即检查过程定义相对应的执行活动是否有偏差。
六,确认的准则
- 原则1:引入正确的涉众
- 原则2:分离缺陷检测和缺陷修正
- 原则3:利用多个独立视角
- 原则4:使用恰当的文档化格式
- 原则5:确认期间创建开发制品
- 原则6:反复确认
七,常用技术
- 常用技术有:审查,桌面评审,走查,基于原型的确认。
- 审查:通过阅读、讨论、修改等,对书面材料进行质量提升的过程。(改进文档本身质量,也改进文档产生和评审的过程质量)
- 桌面评审:比审查简单的确认方式。作者将制品发给多个涉众,让涉众在自己的桌面各自检查制品。将发现的问题直接反馈给作者,或者以小组讨论的方式收集缺陷
- 走查:由制品作者发起的确认活动。作者在产生初始想法和建立制品草案阶段,让4个上下文刻面的参与者较早介入,以非正式的方式就有关需求达成一致。
- 基于原型的确认:由于自然语言描述的需求文档抽象,有歧义,仅仅根据需求文档进行确认难免会有遗漏的缺陷。
- 了基于原型确认,涉众从需求中挑选部分需求到原型中。
- 原型越接近实际系统,得到的结果越有意义。
- 为了控制成本,又要限制原型的功能与性能。
重点!!!
- 需求确认是对需求输出、输入、过程进行检查的核心活动,可以发现以上三个方面的问题,改正错误,改进过程;
- 输出即需求制品。主要从内容、文档化、共识程度三个维度检查;
- 输入即需求上下文,主要从主体、使用、IT系统、开发四个刻面开展检查;
- 过程即需求活动开展的方式。有无过程定义;有没有按照过程定义工作;过程有无改进。
- 需求确认有六项可遵循的原则:引入正确的涉众;分离缺陷检测和缺陷修正;利用多个独立视角;使用恰当的文档化格式;确认期间创建开发制品;反复确认。
- 需求确认常采用审查、桌面检查、走查、基于原型等方法。前三者主要依据文档,难免有遗漏;后者可以弥补前三者的不足,但成本高。