试论软件项目管理中的需求管理

时间:2022-09-15 06:34:36

试论软件项目管理中的需求管理

摘要:需求管理对于整个软件项目工程起着基础性的影响作用,同时也是项目实现和软件交付的关键所在。该文通过对软件项目中需求管理的基本定义进行阐述,并从其自身发展和面临问题两个方面进行论述,针对性地提出了解决软件项目管理中难题的方法,对软件项目团队和研究人员具有积极的借鉴和参考意义。

关键词:软件;项目管理;需求管理

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)10-2272-03

Demand Management of Software Project Management

GAO Yang

(Anhui Nari Jiyuan Software CO.,LTD.,SGEPRI, Hefei 230088, China)

Abstract: Demand management not only plays a fundamental effect for the entire software project, but also is the key to the project implement and software delivery. The paper describes the basic definition of demand management in software projects and discourses from its own development and problems faced, proposing methods to solve problems in software project management , which has positive reference value for software project team and researchers.

Key words:software; project management; demand management

1需求管理的背景

1.1需求管理的基本定义

国际上关于需求管理的定义很多,当前最为广大研究人员及用户认可的是Rational所定义的在尚未完成的系统必须具备或符合的条件及功能。

正是因为需求是尚未完成的系统必须绝对符合的条件,同时这些界定的条件将最终决定该类系统的构建是否成功,所以将需求的条件找出,并经过综合的分析和组织,当某一环节发生变化时积极及时精确的予以调整,则会取得积极有益的效能,从而使整个系统的构建变得更有价值。简而言之,需求管理就是研判、调整及综合分析与组织的一种系统优化方案,同时它还是项目组织与所属客户之间通过不间断的沟通变更而实现系统最优化配置的一种有益过程。

1.2需求管理的现实意义

需求管理的存在意义取决于该项目研发团队对于系统构建的终极目标,即没有一个软件项目组织希望自己的研究对象或是构建目标最终趋向失败,否则研究将变得没有任何意义。需求管理的存在正是由于它对于项目研发团队来说是取得成功的基本条件和前提。业界最具影响Standish Group的CHAOS Reports通过近8年(1994年-2001年)的跟踪研究证实,项目研究失败的最本质原因是与需求管理有关的。Standish Group在对多个软件项目的跟踪调查和综合分析显示,由于缺乏对于需求管理的严格界定,导致在系统构建和项目研发中74%的项目最终以失败告终。

较之其他的客观条件,需求管理的生命周期更长,它在软件项目的整个研发过程当中,一直存在,并且起着关键性的作用。正如万事开头难,在软件研发的初始阶段,需求管理的界定也是最为关键和最难把握的问题。失去了严格界定的需求管理条件,那么该软件项目就会根基不牢,研发也将半途而废。当然,通过对每一次软件项目的研发经验积累,用户在软件项目的立项、研究、构建和后期维护方面的掌控都会越趋于成熟,同时也会积极地进行反馈、调整、完善,促进软件构建的更加合理化、人性化,从而推动整个软件项目管理业发生积极有益的变化。在软件项目的整个管理过程中,项目负责人将会经常面临客户对于软件的各种需求和变更,一方面这些需求和变更对于软件项目的优化是积极的,而另一方面如果项目负责人处理不当,那么这种需求和变更对于软件项目的优化又是消极被动的。正是需求管理的双面性造成软件项目研发过程中是一个动态变化的过程,如果以不变应万变的态度来应对客户需求,那么最终将导致该软件项目的交付时限被延迟、成本被追加、客户需求被弱化。正是趋于这些因素考虑,研发团队必须高度重视需求管理的重要性,具备较高的需求管理的战略眼光。

2需求管理的发展

步入21世纪以来,信息时代的飞速发展,导致计算机的普及率越来越高,而与之配套的计算机软件却未能跟上发展的步伐,缺乏超前性、智能性和人性化是当前所有软件的通病,并且随着信息时代的发展,与之对应的软件需求也将越来越大,而差距亦将越拉越大,这种软件需求危机自上世纪八十年代就已开始,持续了30多年之久,截止到目前也没有得到较好地缓解和解决。虽然软件研发本身存在着滞后性的现实问题,但是软件开发的手段、软件研发过程当中质量监管、软件后期的维护都是造成软件效能发挥不明显的最关键原因。通过具体的研究和调查分析,软件项目的开发和后期维护的不合理性主要体现在:一是对于软件的客户需求分析的不够透彻;二是在整个研发过程中没有规范的需求管理方法;三是对于软件应用的指导性文件表述不够规范细致;四是独立与客户群体进行自行研发,缺乏实用性和认同性;五是在研发后期受资金和交付时限的限制,对软件的测试过于简单化;六是在交付给客户后,缺乏相应的后期维护和跟踪调查,工程报告反馈性不强。

正是由于这些因素的存在,往往在软件交付以后,客户对软件系统的难于操控和掌握,以及更新维护和问题处理方面带来的不够便捷方面,抱怨不断。综合这些不利的因素,业内形成了一种共识,就是在软件项目研发过程中要坚持工程化的指导原则和逻辑化的结构体系来实现整个项目的推进,从而使得多年来持续软件危机得到了较大的缓解。

软件的需求分析是整个软件研发过程当中的初始阶段,也是关键性的阶段,并且贯穿在软件生命周期的全过程。正是其特殊的地位作用,从上世纪80年代中期开始,软件的需求分析就逐渐成为软件项目工程中的一项独立的子项目,而进入90年代中后期,关于需求管理的研究已成为软件业研究的一个重要学科。从1993年起,每隔2年举办一次的需求工程国际研讨会(ISRE) ,到1994年起,每两年举办一次需求工程国际会议(ICRE),都足以证明软件需求分析的重要作用所在,同时一些关于软件需求分析的研究团队和项目小组陆续成立。

3需求管理面临的问题

3.1需求表述的精细性

正如文前反复强调的需求分析对于整个软件项目的研发和实现的极其重要作用,如何将对软件需求表述的更加精细化,是摆在每一项目团队和研发人员面前的一个现实问题,简单的讲,表述的越趋于细致,那么问题变现的就越突出,便于最终的解决。在项目团队与客户就软件项目的研发问题上,其立项的方案是明确和基本一致的,但是如何研发、如何确保软件的按期交付、如何实现软件的便捷性和人性化,那将是一个不断沟通和理解支持的过程。若是这些过程都是在初步达成意向的前提下展开的,这就造成在软件研发过程中始终存在计划修改、方法变更和交付推迟等种种问题,并最终影响双方的效益取得。同时在软件的需求分析阶段,研发人员往往把较大的精力集中于软件的基础架构上,希望将自己的合理化架构雏形较早地呈现在客户面前,并进行后期的改进,而客户则认为只有每一步的及时掌握才能有效避免返工现象的发生,所以双方很难就这一问题达成共识,造成信任危机。类似这样的现象在这个研发过程中还有很多。正是由于这些问题的存在,如何针对软件需求做出较为精细化的工程报告,对于软件工程的顺利实现有着积极的意义。

3.2需求表述的严谨性

软件项目的研发是一种严谨的专业行为,普通的客户无法了解软件研发人员的专业性思维和理念。因此,当研发人员与客户沟通交流时,针对客户主观上认为可以通过软件实现个人任何需求的想法时,研发人员必须克服急躁心理,既不能用专业的理论去敷衍客户,也不能刻意指责客户想法的不合理性,而应从最大限度的满足客户需求的角度去通俗化解释软件的最终效果。同时,由于客户缺乏相应的软件专业知识,造成自己的想法与最终的表述存在偏差,并且这种偏差是绝对存在的,还有一些客户在表述上本身就存在矛盾性,并且坚持不改这种决定,那么在软件的研发过程中必然会造成客户的需求和愿望很难实现或是即便实现了也是与客户需求存在差距。为了尽可能地缩短这种差距,这就需要软件研发人员在需求表述方面具备一定的严谨性,因为只有规范的表述,才能在与客户的沟通中尽量消除理解上的偏差。不要忽视这种表述上的严谨性,如果由于研发人员在与客户之间因为表述不够规范而造成理解上的偏差,并且这种偏差在软件交付使用时才被发现,那么这种损失将会是极其可怕的,甚至会出现超出软件项目本身的研发费用。因此养成严谨的规范表述,将会减少对客户需求方面理解的偏差,这对于项目团队本身是积极必要的。

3.3需求表述的完整性

正如软件本身的缺陷,往往无法对客户所有意愿进行体现,并且客户的需求随着软件的使用会不断地增多,从而导致软件本身的缺陷也越来越趋于明显。同时,还应看到的是,并不是客户的所有需求都能得到满足,一味的追究软件的完整性,必将导致整个软件项目的庞大和入不敷出,并且最终的结果往往还是无法实现万能。因此在软件项目的立项之初,建立完整的需求是必要的。因为它能促进软件项目的架构合理和交付应用的高效便捷。忽视需求表述的完整性是绝对不可的,但是盲目的追求需求表述的完整性也绝对是不够理性的。

3.4需求表述的动态性

需求管理是一个动态变化的过程,较之其它问题,该类问题更让所有的项目研发人员和项目经理感到头疼,因为需求是随着客户的意愿随时存在的,并且随时都可能发生,而作为软件的研发人员往往只能被动的接受这一现实,选择修改软件设计方案、重新编译代码、调整测试实例、甚至是项目计划本身都会出现大的变动等等。每一次需求的变更,都会造成整个软件项目的改变,给整个研发过程带来无尽工作负担,直接影响软件的交付使用。当然这种动态性是不可避免的,但却是可控的,因为需求管理本身就是对软件研发流程的一种严格规范,而需求变化本身也不是一种质的变化,而是较为常见的渐变过程(Project Scope Creep)。虽然在真正的实践过程中,这种渐变往往不为研发人员和客户所察觉,但是它确实存在,并影响着软件项目本身。

4解决问题的策略

4.1正确认识需求变更

变更的需求之所以变得难以管理,不仅是因为一个变更了的需求意味着要花费或多或少的时间来实现某一个新特性,而且也因为对某个需求的变更很可能影响到其他需求。应确保赋予需求一个有弹性的结构,使它能适应变更,并且确保使用可追踪性链接可以表达需求与开发生命周期的其他工件之间的依赖关系。管理变更包括建立基线,确定需要追踪的重要依赖关系,建立相关项之间的可追踪性,以及变更控制等活动。

4.2管理需求变更

变更控制不应该只是软件开发过程应该考虑的事情,随着软件产品的开发和时间的推进,用户会提出越来越多的新需求,甚至在交付软件产品的最后阶段用户还会有不同的需求,因此需求变更的管理应贯穿于整个项目生命周期的全过程。

为了使变更对项目的影响降到最小,就应当采取合适有效的变更控制策略,确定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此流程。对需求的变更的处理应该分以下几个步骤:提出变更、变更评估、实施变更、监督变更过程。

4.3与用户充分沟通

在需求管理过程中与用户的沟通很重要,因为它直接决定着最终软件产品是否满足客户的要求,即很大程度上决定着项目的成败。在沟通时,双方对需求的认识要一致,不能模棱两可。讨论需求及变更需求时,需求人员与客户及用户应该尽量采取协作的态度,创设良好的工作氛围。有效的充分的交流很重要,需求人员应该认真听取客户用户的要求,进行分析和整理,并最终取得用户的确认。

5结束语

需求管理是需求分析过程中的一个步骤,提供的是一个持续的不断完善的过程,软件项目开发过程中需求管理的问题有很多,随时都有用户需求变更,需求分析的错误也时常发生,需求质量难以保证,针对这些问题,采取有效的措施尽可能减少这些问题可能给项目造成的影响也显得尤其重要。

参考文献:

[1]吴艳艳,周长伦,姜家轩,等.软件项目管理中的需求管理[J].信息技术与信息化,2008(4).

[2]孙莉.软件项目管理中的需求管理[J].信息系统工程, 2011(4).

[3]刘苗.管理需求变更问题的软件设计与实现[D].成都:电子科技大学,2010.

[4]姚海峰.多方合作软件项目的需求管理[D].上海:上海交通大学,2008.

[5]窦勇.通信企业IT项目需求变更管理研究[D].北京:北京邮电大学,2009.

[6]陈江.控制工程项目管理之需求管理[J].项目管理技术,2009(6).

上一篇:基于C#的结对编程的分析和设计 下一篇:极限编程课程教学研究