软件项目需求管理解析
作者:倪爱银
来源:《软件导刊》2011年第05期
摘 要:软件需求管理的成功与否直接关系到软件开发的成败。从软件开发过程的需求管理方面展开论述,指出了软件需求变更的一些原则,总结了需求管理的常用方法,对需求管理的研究进行了扩充。
关键词:需求管理;需求优先级;功能点
中图分类号:TP311.52 文献标识码:A 文章编号:1672-7800(2011)05-0024-03
作者简介:倪爱银(1982-),女,江苏南通人,硕士,上海龙旗科技有限公司高级工程师,研究方向为项目管理。 0 引言
在软件项目的开发过程中,需求变更和管理贯穿了项目的整个生命周期。软件项目从立项开始,经历研发、测试、交付,到后期维护,视软件的规模不同一般经历几个月至几年不等,这期间整个行业的动态在更新,客户的经验在增加,对使用软件的感受也在变化,这些都要求软件不断完善功能,优化性能,提高用户满意度。一个软件团队对软件项目进行管理的素质和水平,是影响到项目是否能按期完成、开发出的软件是否真正满足市场或客户要求的关键因素,而需求分析和需求管理又是软件项目管理中最核心的一部分。在软件项目管理过程中,如果不能有效处理用户需求变更,项目计划和软件交付日期会一再拖延,项目研发人员的士气将越来越低落,直接导致项目成本增加、质量下降以及项目交付日期延迟。这就要求软件项目组必须拥有完善的需求管理策略。对于那些软件能力成熟度高的软件企业的项目经理而言,可以毫不夸张地说:只要把需求管理做好了,项目也就已经成功了一半。 1 需求管理简述
软件需求是软件项目开发的最基本也是最关键的输入,和传统的有形的、可描述清楚的、可具体检测的硬件生产制造需求相比,软件需求具有模糊性、变化性和主观性等特点。正因为软件需求的这些特性,对于一个软件系统的开发来说,最困难的部分就是准确说明软件需求,最困难的概念性设计工作就是编写出详细的软件需求,包括所有面向用户、面向机器和其他软件系统的接口。
龙源期刊网 http://www.qikan.com.cn
软件项目管理中把所有与需求直接相关的活动通称为需求工程,如图1所示。需求开发是指从需求调查、收集、分析到定义需求并编写文档,包括需求评审等一系列由需求产生的活动,这几个阶段是相互独立和反复的,一般由客户和软件开发团队一起完成。需求管理的目的是在客户与软件开发团队之间建立对需求的共同理解,维护需求与其它工作成果的一致性,并控制需求的变更。需求管理主要包括需求确认、状态跟踪、需求变更控制等工作,是软件项目开发过程中控制和维持需求约定的主要活动。
需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后做出书面承诺,使需求文档具有商业合同效果。
需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立与维护“需求跟踪矩阵”,确保产品根据需求文档进行开发。
需求变更控制是指依据“变更申请—审批—更改—重新确认”的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。 2 需求管理原则
需求是整个项目的基础,需求的完整、清晰是建立软件工作结构的基础,对工作计划的准确性至关重要。需求管理需要遵循一定的策略,才能有好的管理结果。项目在需求管理上应遵循以下原则:
(1)需求一定要与经济投入和时间有必然的联系。如果需求变更的成本由开发方来承担,则项目需求的变更就成为了必然,而且有需求扩散到无法收敛的风险。在项目的开始,无论是开发方还是出资方都要明确这一点:需求发生变化,软件开发的成本和开发时间也要变化,在合同中体现这一点是能对需求管理起到很好的控制作用。
(2)需求的变更必须要经过出资方的认可。需求的变更一般由客户提出,但是要让出资方理解并认可完成变更将引起成本的变化,这样双方才会对需求的变更有成本的概念,能够慎重的对待需求的变更。
(3)再小的需求变更也要遵循正规的需求变更的管理流程。需求变更不论大小,必须遵循正规的变更管理流程,否则变更会积少成多,管理也越来越乱。在实际开发中,项目经理或者软件开发人员往往不愿意为小的需求变更去执行正规的变更管理流程,甚至认为会浪费时间,降低开发效率。很多时候,正是由于这种错误观念才使需求的渐变不可控,最终导致项目失败。
龙源期刊网 http://www.qikan.com.cn
(4)需求的变化是永恒的,精确的需求与范围定义并不会阻止需求的变更。市场动向和用户体验在变,需求必然也会跟着变。不会因为需求定义越详细,就越能避免需求的改变,这是两个层面的问题。
(5)需求管理需要良好的沟通技巧。软件项目开发中,由于需求的变更绝大部分来自客户方,作为客户他们可能不愿意为需求的变更付出更多的投资,也可能是开发方出于对软件的优化或者用户友好性主动变更需求,他们的目的都是使软件做的更精致。作为需求管理者,项目经理需要采用各种沟通技能来使项目的双方各得其所。
软件项目管理中,基于上述原则对需求进行管理,使需求能够真正成为软件工程和管理的基线,使软件计划、活动和工作产品同软件需求保持一致,为软件项目的开发奠定最基础也是最重要的基石。 3 需求管理方法
软件是逻辑性极强的东西,一个软件项目立项完了,开发人员一般会很迫切的想去开始编码工作,以至于不管客户需求有没有最终敲定,一旦代码形成规模后,由于客户需求更改去修改软件的流程,这将会花费更多的时间,甚至会导致更多的问题。曾有人做过统计分析,如果涉及到软件架构的变更,在需求分析阶段发生的需求变更对项目带来的额外工作量是5的话,那么在系统分析和系统编码阶段发生的需求变更对工作量的增加分别是20和100。 研究软件需求管理的方法越来越多,借助RequisetePro、excel、CaliberRM、word等工具,运用合适的需求管理方法是实现需求管理目标的重要途径。总结至今的项目经验,常用的需求管理方法有按需求优先级管理和按功能点实现需求管理两种方法。 3.1 按需求优先级管理
软件需求按优先级分类,一般分为四类管理,A、B、C、D分别表示需求的优先级为最高、高、中、低,其对应的内容重要性也有所区别。
软件项目的需求不管由谁提出,必须按优先级方案制定各个需求的优先级。项目经理在收集所有的需求后,必须与需求工程师一一评估需求实现的可行性和所需工作量,确立需求的合理优先级。项目组评估的结果可能与需求提出者的要求有所不同,例如,客户方提出的需求可能是B类需求,而项目组评估为C类需求,所以,项目经理需要和需求提出者充分沟通,最后得出双方都认可的需求优先级,然后进行研发的详细设计和开发。
龙源期刊网 http://www.qikan.com.cn
需求的实现必须考虑项目的整体计划。可能客户方在提出需求的时候都会标识为A类需求,尽管实际有些需求不是重要功能性的。所以,项目经理出于对项目计划的考虑,必须在客户和开发方都明确每个软件版本的各类需求所占的比例,以及明确各类需求的具体内容可包括哪些,根据需求的优先级决定需求实现的软件版本。需求的提出会直接带来开发时间和开发成本的变化,根据项目计划提出合理的需求才能保证软件项目的质量和进度。
根据需求优先级管理需求的方法对于大规模的软件不太实用,规模大的软件项目,需求量会比较庞大,逐一分析软件需求的优先级会带来巨大的工作量,并且还不能保证分析结果的准确性。对于规模比较小的软件项目,需求量相对较少,用这种方法分析起来更容易。
3.2 按功能点方法实现需求管理
功能点方法是由Allan Albrecht在1979年提出的,1986年,国际功能点用户组织提出的功能点标准是目前软件行业采用最广泛的功能点分析方法。通过对需求说明书的分析,软件的规模可以用功能点的数量来度量,同样,软件需求的变更也可以使用功能点来分析和度量。 功能点分析方法是从用户的角度将所有的用户业务功能需求区分为驻留数据的功能需求和处理数据的事务功能需求。
其中,数据功能需求区分为应用内部逻辑数据和应用外部的接口数据;事务功能区分为对数据的外部输入、输出和查询。数据功能的复杂性由数据元素类型和记录元素类型决定;而事务功能的复杂性由数据元素类型和文件引用类型决定。将功能转换为对应的复杂程度,再根据复杂程度转换为对应的功能点数值,这样就将用户的业务功能需求表述为一个用数值表示的软件需求规模。
软件功能性可在软件开发的初期进行分析,软件产品可以按功能点不断分解,对各个细化的功能点进行评估,这对我们预测项目规模、规划项目进度非常有帮助。使用功能点方法管理客户需求的前提是项目组和客户使用同一方法来定义软件需求,这就要求项目组必须站在客户的角度分析软件系统功能和需求,从而确定客户关系的详细需求。
软件需求在现有的功能版本上可分为需求增加、变更、删除三种,修改、完成需求也会导致软件数据和事务的增加、变更和删除。项目经理在收集需求后,与需求工程师及客户一起分解评估客户需求,区分需求的类型后,评估新需求带来的软件数据变更和事务变更的类型,然后,根据功能点方法评估需求变更带来的工作量和成本、进度、质量的影响。最后,根据需求
龙源期刊网 http://www.qikan.com.cn
变更后重新确认项目的功能点,重新与客户沟通项目的进度、成本和质量,双方达成统一意见后,软件开始实现详细需求。
经验证明,应用功能点分析来度量软件的规模是非常可靠的,尤其是在项目估计、变更管理、生产率度量和功能需求的沟通等方面。但是,因为功能点方法管理需求涉及的算法复杂,工作量也比较大,一般在小型的软件项目中用的并不多,比较适用于大型软件项目需求管理。
4 结束语
需求管理是软件项目开发过程中一项重要而且复杂的工作。本文提出了需求管理的一些原则和方法,通过确定软件需求的优先级和功能点分析的方法来管理需求。这两种方法各有优缺点,在实际项目需求管理中,可以参考软件的规模和需求量选择使用。需求管理的研究要想取得更大突破,提高需求工程的开发效率和质量,最主要的一点就是探索需求管理的有效解决途径,缩小理论与应用之间的鸿沟,使研究出的方法与实际软件开发领域相匹配。
参考文献:
\\[1\\] 栾跃.软件开发项目的需求和范围管理\\[J\\].程序员,2006(4).
\\[2\\] 刘小波.软件系统需求变更影响分析及解决方案\\[J\\].华南理工大学学报(自然科学版),2002(4).
\\[3\\] 曹伟.如何进行软件需求分析\\[J\\].中国系统分析员,2002(3).
\\[4\\] 黄怡强.浅谈软件开发需求阶段的主要任务\\[J\\].中山大学学报论丛,2002(1). \\[5\\] 毛明志,沈贤义,黄春贤.基于特性的软件需求管理工具的研究与应用\\[J\\].计算机技术与发展,2007(5).
\\[6\\] 卢梅,李明树.软件需求工程—方法及工具评述\\[J\\].计算机研究与发展,1999(11). \\[7\\] 美国项目管理协会.项目管理知识体系指南\\[M\\].卢有杰,王勇,译.北京:电子工业出版社,2004.
\\[8\\] 姬晓鹏.需求管理的一个系统解决方案\\[J\\].计算机工程,2003(3).
\\[9\\] VALERIE MARTHALER.Counting Practice Manual\\[M\\].NJ:IFPUG, 2004.
龙源期刊网 http://www.qikan.com.cn
\\[10\\] LEFFINGWELL D. Managing Software Requirement-A Use Case Approach\\[M\\].Person Eudcation,2004.
(责任编辑:王 钊)
Analysis on Demand Management of Software Project
Abstract:The success of the software requirements management directly related to the success or failure of the software development. This article from the software development process, this paper discusses the demand management pointed out some principles of software requirements changes, summarizes the methods of demand management to demand management research expanded. Key Words: Demand Management; Demand Priority; Function Point
因篇幅问题不能全部显示,请点此查看更多更全内容