软件需求管理方法

更新时间:2024-04-09 作者:用户投稿原创标记本站原创 点赞:4092 浏览:14767

摘 要:软件需求是软件项目开发的基础和起点,软件管理的好坏也会引领软件开发向着不同的方向发展,需求管理对软件开发的后续工作具有规划意义和先导作用.因此,不仅要重视软件需求管理,更要有一套行之有效的管理方法.

关 键 词 :软件需求,软件工程,项目管理

0 引言

软件需求是软件项目启动的原动力,虽然用户对软件产品的需求会发生一些变化,但是只要需求存在,项目就有开发的价值,只要项目能够最终满足用户的需求,软件开发的投入就会得到回报.在开发中,无论采用何种软件生命周期模型,良好的开端是成功的一半,软件需求管理仍是开发过程的基础,软件需求分析与管理为后续开发工作起到了引领作用,不可小视.软件需求管理是软件项目开发的起点,是项目成功的关键.据统计,软件开发中返工开销会占到总开发成本的40%,而其中70%~80%是需求分析错误而导致的后期开发工作作废.许多开发者都能意识到这一点,但是在软件开发实践中,由于没有好的管理方法,这一重要环节又往往流于形式,直至开发过程陷入困境,回过头来会发现需求管理上存在许多问题.开发者面对实际开发工作时,需将需求管理与开发过程的各个具体环节紧密结合起来,达到管理的目标.


1 软件需求管理内涵

1.1 软件需求管理

需求是指和客户一起建立并不断更新的对各项软件工作所达成的协议.需求作为软件开发的初始输入,需要进行精确的描述和优化等过程,即需求分析.需求分析是软件开发行为关键的第一步,而需求管理就是为了管理和控制需求分析的结果,并确保软件项目的开发活动始终与它保持一致.所以,用户的需求应该是合理可行的,项目目标应依据这种合理可行的需求来制订.

1.2 需求管理中常见的问题

一是需求不完全.在收集需求时没有把握用户的确实需求.用户自己不是很明确到底需要什么,部门职能交叉、工作人员业务不熟都会造成需求分析模糊或空缺;二是需求过多.用户对新的系统期待过高,幻想系统能解决一切问题,需求杂乱无序、缺乏分析归类;三是需求变更频繁.在项目执行过程中,随着用户对项目认识程度的不断提高,对项目的期望会越来越高,会提出新的需求变更,需求变更不仅仅是需要花费时间来实现的问题,还会造成增加开发工作量,返工,甚至会造成项目失败;四是需求过程时间过长,缺乏有效的方法.在进行需求调研阶段,花费大量时间,仍没有给项目准确的定位,导致后续工作无法展开.

1.3 需求管理中的错误认识

(1)在项目的需求分析阶段,开发者与客户在各种的需求问题上达成一致就可以了.虽然表面上双方没有异议,实质上是都忽视了需求管理这个环节的结果,到了开发实施阶段才发现双方观念存在差异,这会给开发工作带入困境.实际上许多软件项目失败的最主要的原因就是需求阶段对问题的描述不够细致,导致后来预算超出或者进度达不到要求.在项目需求分析阶段,双方必须全面地尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其它软件的接口要求、对项目进行评估标准等,任何的疏漏都会给后续工作带来意想不到的风险.需求管理阶段应由各个方面的主要负责人和技术骨干来共同讨论,充分发表意见,目的是及早发现风险,并对风险评估并提出预案.

(2)软件项目的需求可以持续不断改变的观点是错误的.需求变化是经常的,而越早发现需求改变就越有价值,但早期发现的难度很大;发现得越晚价值就越小,带来的损失也就越大.随着开发进度的推进,实现软件需求更改所需要的代价呈指数形式增长.改正已投入应用的产品的缺陷比在需求阶段改正这个缺陷要多付出68倍的成本.在实际开发工作中由于种种原因,客户很难在需求分析阶段全面而准确地描述所有问题,随着软件系统的日益复杂,这种趋势还在变大,所以软件需求的改变应当尽量早地提出,才更有实际价值.应采用有效的方法协助用户完成需求的发现过程.

2 需求管理的关键问题

软件需求是整个软件开发项目的一个关键输入,和传统的企业生产相比较,软件具有模糊性、不确定性、变化性和主观性的特点.软件需求应解决以下问题:

(1)需求的描述.缺少正式完整的需求文档会影响开发工作,为了完成需求文档,会付出大量的人力物力,所以一些用户在需求分析过程中,会应付了事,使需求流于形式.系统要想穷举需求几乎是不可能的,每次召开需求评审会时,总会冒出新的需求,以至于系统没有一个准确的范围界定,为此要硬性地划定系统范围,建立一个基线.需求的细致程度很难掌握,但至少要让客户、用户、需求分析人员、设计人员、测试人员认为描述清楚了,才可以进入设计阶段.

(2)软件开发的成本与工期.在需求阶段,要对软件开发者的能力与软件过程成熟度进行全面分析,切实与用户在开发成本与工期问题上达成一致.在软件开发难度上要量力而行,片面夸大自身能力,最终会导致开发工期无限延长.当软件开发难度过大,企业技术人员无法完成时,便要聘请更高层次的专业人员,成本会大幅上升.

(3)需求变化.在软件开发过程中,需求变化是永恒的.软件开发的过程实际上是一个与变化作斗争的过程,需求的变更不一定是都坏事,早发现比晚发现更有利于软件开发.

系统原计划的操作环境会改变,用户的认识会改变,甚至系统的角色也会改变,这些都有可能导致需求的变更,软件开发企业既不能怕变化也不能任意变化,对待任何一次需要的变更,都要以比需求分析之初抱以更加科学慎重的态度,把需求的变更工作做好.

3 需求管理的方法

(1)完善需求变更控制.制定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此过程.要设置相应的职权的人员进行评估和审批,设置相应的工作流程,以保证需求变更在可控的情况下实施.

(2)开展需求变更分析.评估每项需求变更,以确定它对项目计划安排和其它需求的影响,明确与变更相关的任务,并评估完成这些任务需要的工作量.通过这些分析将有助于需求变更控制部门作出更好的决策.可以把每一项需求的状态属性保存起来,并可以定期地把需求数量和需求变更数量进行比较.过多的需求变更是项目开发的矛盾突出点、认识模糊点,对此内容的跟踪分析具有十分重要的意义.

(3)建立需求基准版本和需求控制版本文档.确定需求基准,这是项目各方对需求达成一致认识时的一个快照,之后的需求变更遵循变更控制过程即可.每个版本的需求规格说明都必须独立说明,以避免将底稿和基准或与新版本相混淆.

(4)加强沟通建立良性的互动机制.由于需求的变更可能来自各个方面,投资方可能不愿意为需求的变更付出更多的成本,而开发方有可能主动地变更需求目的,使软件更完美.于是,作为需求管理者,项目经理需要采用良好的沟通技巧来使项目双方各得其所.参考文献:

\[1\] 赵晓亮.浅议软件T程管理[J].科技情报开发与经济,2002(5).

\[2\] 黄卓.软件工程管理方法的探讨[J].辽宁师专学报,2003(3).

(责任编辑:余 晓)