第9卷第1l期 2010年11月 软件导刊 Software Guide VO1.9 NO.11 NOV.2Ol0 CMMI实施过程中确定需求优先级的几种方法 李 军 (赛宝认证中心,广东广州510610) 摘 要:介绍了需求的概念和需求在项目管理和软件开发中的地位;阐述了需求优先级在项目管理过程中的作用; 介绍了在CMMI实施过程中常见确定需求优先级的方法,包括定性分析方法和定量分析方法;在定量分析方法中主 要介绍了利用QFD和基于价值、费用和风险的优先级设定步骤:介绍了:L ̄A-法的使用场景及需要改善的地方。 关键词:CMMI;需求分析;需求优先级;QFD 中图分类号:TP301 文献标识码:A 文章编号:1672—7800(2010)1l一0022—02 能的相对重要性有助于对项目进行策划管理,以最少的费用提 0引言 在软件工程中,所有的项目干系人都感兴趣的就是需求分 析阶段。需求分析奠定了软件工程和项目管理的基础。软件需 求的准确性直接影响到软件项目或产品的质量、交货日期、客 户的验收,以及由此引起的开发成本的不确定因素。因此,关于 软件需求获取、表示和分析的研究历来受到软件行业的关注。 软件界也发展出一门的研究学科——需求工程。需求工程 的发展给软件需求开发和需求管理提供了方向性的指导,从而 提高了软件的质量。在CMMI实施过程中对需求的优先级的定 义也是非常重要但容易引起忽视的一个活动。本文通过对几种 确定需求优先级的方法介绍,解决软件开发过程中如何确定软 件需求优先级进而分步实施的问题。 供产品的最大功能。每一个具有有限资源的软件项目必须理解 所要求的特性、用例和功能需求的相对优先级。设定优先级有 助于项目经理解决冲突、安排阶段性交付,并且做出必要的取 舍,给项目经理的管理提供了灵活性。 2定性的需求优先级确定方法 在小规模项目或者系统不复杂的情况下,需求的优先级确 定相对比较简单.由项目的干系人通过两两比较来主观地确 定.需求分析人员只需要把需求优先级分为高、中、低就可以 了。这种方法简便易行.但是划分结果一定要取得客户的认同。 可以根据以下原则确定需求优先级:①关键任务需求、基础性 的数据处理要求。完不成此版本或下一版本需求就不能实现; 只有这些需求实现后,客户才能接受软件。关键任务需求优先 软件需求与需求优先级 IEEE对需求进行了如下定义:①用户解决问题或达到目 标所需的条件或权能(Capability);②系统或系统部件要满足合 同、标准、规范或其它正式规定文档所需具有的条件或权能;③ 一级为高;②业务流程处理中比较繁琐、容易出错,客户特别希望 能改进、简化工作量、提高效率的业务需求,此类业务需求优先 级为中;③客户的主管领导比较关心、容易得到领导认可的业 务需求。此类业务需求优先级为中;④最后才是某些非功能类 需求.实现或不实现均可的,一般此类业务需求优先级为低。 但是这种方法是不精确的,因此,所涉及到的每个人必须 在每种类别的含义上达成一致。如果人们混淆了高、中、低这样 的术语,那么就要更多地使用如提交、允许时间、将来发行版本 等确定的词语。 种反映上面①或②所描述的条件或权能的文档说明。 Frederick Brooks在他1987年经典文章“No Silver Bullet”中 阐述了需求的重要性.开发软件系统最困难的部分就是准确说 明开发什么。最困难的概念性工作是编写出详细的需求,包括所 有面向用户、面向机器和其它软件系统的接口。此工作一旦做 错,将会给系统带来极大的损害,并且以后对它修改也极为困 难。需求是产品的根源。需求工作的优劣对产品影响最大。就 3定量的需求优先级确定方法 对于大的、有争议的项目则需要一种更加结构化的方法, 采用这种方法可以消除一些情感、以及处理过程中的推 像一一条河流,如果源头被污染了,那么整条河流也就被污染了。 软件项目中40%至60%的问题都是在需求阶段埋下的“祸根”。 当客户的期望很高、开发时间短并且资源有限时,你必须 尽早确定出所交付的产品应具备的最重要的功能。建立每个功 测。当需求较多时,通过两两比较来主观地估计费用和价值就 变得不合实际了。这时就需要借助定量的分析方法来确定需求 作者简介:李军(1975一),男,湖北丹江口人,硕士,赛宝认证中心高级工程师、信息系统项目管理师.研究方向为CMMI软件过程改进、项目管理、 软件工程、款件质量管理。 第11期 李军:CMMI实施过程中确定需求优先级的几种方法 ・23・ 的优先级。 3.1质量功能展开 一种定量的确定需求优先级的方法是质量功能展开 (QFD),它是能够为产品提供用户价值与性能相联系的一种综 合方法。它将顾客的需求质量转换成质量特性,确定产品的设 计质量,经过各功能部件的质量,直到每个过程的质量和过程 要素,系统地展开它们之间的关系。质量功能展开中起重要作 用的质量表.是由需求质量和质量特性构成的二维表。 QFD关于客户价值的概念取决于两个方面:一方面,如果 实现了特定的产品特性,那么将为客户提供利益;另一方面,如 果不能实现产品特性,就要受到损失。特性的诱人之处是与它 所提供的价值成正比,而与实现该特性时的费用和技术风险成 反比。只有那些具有最高的价值/费用比率的特性才应当具有 最高的优先级 用QFD的软件需求分析法的具体工作步骤:①对象系统和 用户的调查;②原始信息的收集;③原始信息变换成语言信息: 逐一探讨原始信息,并变换成只含有一个意思的具体表现的语 言信息。表现形式限定为“是什么”、“干什么”、或其否定形式;④ 语言信息的分类:整理语言信息,将用户需求分类成功能需求、 质量需求和其它需求。然后探讨功能需求,逐次抽出下层功能项 目。为了避免模糊的表述,功能定义象价值工程中一样,以“动 词+名词”的形式表述;⑤数据项目的抽出和整理:探讨某一功能 需要怎样的输入和输出数据,逐一抽出数据项目;⑥功能数据二 维表的构造:整理抽出的功能及其相应的数据,把功能和数据分 别作为二维表的X因素和Y因素,探讨两者的关连,构作功能 数据二维表;⑦从功能需求抽出质量需求:以功能项目为基础, 从功能满足性、使用容易性、可靠性和适应性4个方面抽出质量 需求。质量需求尽量以“修饰语+动词+名词”的形式表现;⑧质量 特性的抽出和整理:参考ISO国际标准,从功能性、可靠性、使用 性、效率性、维护性和移植性6个方面抽出质量特性;⑨质量表 的构造:把质量需求项目作为二维表的X因素,质量特性项目 作为Y因素,探讨两者的关系构作二维表;⑩用数量化理论或 者AHP方法对功能数据二维表和质量表应用分层方法.相关的 项目集中到主对角线上,并且项目间的位置越接近,它们的相关 性越强。这样反复循环逐渐导出需求的层次结构 3.2基于价值、费用和风险的设定 这种方法提出由分析上和数学上的技术用于辅助需求优 先级的确定,它建立每个需求的相对价值和相对费用。优先级 最高的需求是那些以最小的费用比例产生出最大产品价值比 例的需求 基于价值、费用和风险的优先级设定的步骤如下: (1)成立需求优先级决策的过程中典型的参与者。常见的 参与者有:项目经理,他指导全过程,解决冲突,并且在必要的 时候调整其它参与者的方案。重要的客户代表,例如产品的代 表者,他可以提供受益和损失程度。开发者代表。例如开发组的 技术指导者,他提供了费用和风险程度 (2)列出要设定优先级的所有需求、特性或用例。所有项都 必须在同一抽象级别上,不要把单个需求与产品特性混合在一 起。如果某些特性有逻辑上的联系,那么在分析中只要列出驱 动特性就可以了。这种模型在其有效范围内可以容纳几十种特 性。如果有更多的项,那么就把相关的特性归成一类,并建立一 个可管理的初始化列表。如果需要的话,可以在更详细的级别 上进行第二轮分析。 (3)估计每一个特性提供给客户或业务的相关利益,并用 1~9划分等级,1代表可忽略的利益,9代表最大的价值。这些 利益等级表明了与产品的业务需求的一致性。客户代表是判断 这些利益的最佳人选。 (4)估计出如果没有把应该实现的特性包括到产品中,将 会给客户或业务上带来的损失。使用1 ̄9划分等级,这里1代 表基本无损失.9代表严重损失。 (5)总价值栏是相对利润和相对损失的总和。在缺省情况 下,利润和损失的权值是相等的。作为一种精化,可以更改这两 个因素的相对权值。 (6)估计实现每个特性的相对费用,使用1(低)~9(高)划分 等级。计算出由每一个特性所构成的总费用的百分比。根据需求 的复杂度,所需求的用户界面的实现情况、重用当前代码的潜在 能力、所需要的测试量和文档等等,开发者可以估算出费用。 (7)开发者估计出与每个特性相关的技术或风险相对程度, 并利用1~9划分等级。1级表示可以轻而易举地实现编程,而9 级表示需要极大地关注其可行性、缺乏具有专门知识的人员,或 者使用不成熟或不熟悉的工具和技术。 (8)一旦把所有的估算写入平面图,就可以利用如下公式 计算出每一特性的优先级: 优先级=价值%/(费用%×费用权值)+(风险%×风险权值) (9)按计算出的优先级的降序排列表中的特性。处于列表 最顶端的特性是价值、费用和风险之间的最佳平衡.因此必须 具有最高优先级。 这种半定量方法从数学上讲并不严密.并且其准确程度受 到对每个项目的利润、损失、费用和风险的估算能力的影响。因 此,只能把计算出来的优先级序列作为一种指导策略.应根据 历史数据来校正这个模型。 4结束语 软件需求优先级的确定是软件开发和项目管理过程中比 较重要的一个基本问题。本文介绍了CMMI实施过程中常用的 几种确定需求优先级的方法。定性的需求优先级的确定方法需 要有具有历史数据和有经验的专家完成,在应用过程中才能取 得好的效果。对于定量的分析方面有其客观性的一面.但其实 现方法比定性的方法要复杂,在使用的过程中可以根据实际需 要进行简化或者使用计算机专家系统来提高效率。需求优先级 需要充分利用所获得的顾客调查信息。从而使得顾客需求重要 度的确定易于实现,趋于客观、合理。 参考文献 [1] 杨明顺,林志航.QFD中顾客需求重要度确定的一种方法[J].管 理科学学报,20o3(5). [2] 熊伟.基于QFD的软件需求分析法[J].计算机与现代化,1998(5). [3]KARL E.WIEGERS.Software Requirements,Second Edition[M].刘 伟琴,刘洪涛,译.北京:清华大学出版社,2004. [4] 李玉林,肖莉,王冬.基于顾客需求转换的QFD方法改进研究 [J].企业技术开发,2009(8). (责任编辑:杜能钢)