5.需求分析的原则

  不重视需求过程的项目队伍将自食其果。需求工程中的缺陷将给项目成功带来极大风险,这里的“成功”是指推出的产品能以合理的价格、及时地在功能、质量上完全满足用户的期望。下面将讨论一些需求风险。

  不适当的需求过程所引起的一些风险:

  1.无足够用户参和

  客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫,研发人员可能也不重视用户的参和。究其原因:一是因为研发人员感觉和用户合作不如编写代码有意思;二是因为研发人员觉得已明白用户的需求了。在某些情况下,和实际使用产品的用户直接接触非常困难,而客户也不太明白自己的真正需求。但还是应让具有代表性的用户在项目早期直接参和到研发队伍中,并一同经历整个研发过程。
系统人员在实践过程中,也有些感觉,在实施一家公司的项目时,若无足够的用户参和,系统人员获得的需求是片面的,不完整的,这样系统在需求之初埋下风险。

  2.用户需求的不断增加

  在研发中若不断地补充需求,项目越变越庞大以致超过其计划及预算范围。计划并不总是和项目需求规模和复杂性、风险、研发生产率及需求变更实际情况相一致,这使得问题更难解决。实际上,问题根源在于用户需求的改动和研发者对新需求所作的修改。

  要想把需求变更范围控制到小,必须一开始对项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架。说明中包括了对每种变更进行变更影响因素分析的变更控制过程,有助于所有风险承担者明白业务决策的合理性,即为何进行某些变更,相应消耗的时间、资源或特性上的折中。

  产品研发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程式难以理解和维护。插入补丁代码使模块违背强内聚、松耦合的设计原则,特别是如果项目设置管理工作不完善的话,收回变更和删除特性会带来问题。如果你尽早地差别这些可能带来变更的特性,你能研发一个更为健壮的结构,并能更好地适应他。这样设计阶段需求变更不会直接导致补丁代码,同时也有利于减少因变更导致质量的下降。

  3.模棱两可的需求

  模棱两可是需求规格说明中为可怕的问题。他的一层含义是指诸多读者对需求说明产生了不同的理解;另一层含义是指单个读者能用不止一个方式来解释某个需求说明。

  模棱两可的需求会使不同的风险承担者产生不同的期望,他会使研发人员为错误问题而浪费时间,并且使测试者和研发者所期望的不一致。一位系统测试人员曾告诉我,她所在的测试组经常对需求理解有误,以致不得不重写许多测试用例并重做许多测试。

  处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍。仅仅简单浏览一下需求文件是不能解决模棱两可问题的。如果不同的评审者从不同的角度对需求说明给予解释,但每个评审人员都真正了解需求文件,这样二义性不会直到项目后期才被发现,那时再发现的话会使得更正代价非常大。

  4.不必要的特性

  “画蛇添足”是指研发人员力图增加一些“用户欣赏”但需求规格说明中并未涉及的新功能。经常发生的情况是用户并不认为这些功能性非常有用,以致在其上耗费的努力“白搭”了。研发人员应当为客户构思方案并为他们提供一些具有创新意识的思路,具体提供哪些功能要在客户所需和研发人员在允许时限内的技术可行性之间求得平衡,研发人员应努力使功能简单易用,而不要未经客户同意,擅自脱离客户需求,自作主张。

  同样,客户有时也可能需求一些看上去非常“酷”,但缺乏实用价值的功能,而实现这些功能只能徒耗时间和成本。为了将“画蛇添足”的危害尽量减小,应确信:你明白为什么要包括这些功能,及这些功能的“来龙去脉”,这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能。

  5.过于精简的规格说明

  有时,客户并不明白需求分析有如此重要,于是只作一份简略之至的规格说明,仅涉及了产品概念上的内容,然后让研发人员在项目进展中去完善,结果非常可能出现的是研发人员先建立产品的结构之后再完成需求说明。这种方法可能适合于研究性的产品或需求本身十分灵活的情况。但在大多数情况下,这会给研发人员带来挫折(使他们在不正确的假设前提和极其有限的指导下工作),也会给客户带来烦恼(他们无法得到他们所设想的产品)。

  6.忽略了用户分类

  大多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同。如果你不能在项目早期针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望。例如,菜单驱动操作对高级用户太低效了,但含义不清的命令和快捷键又会使不熟练的用户感到困难。

  7.不准确的计划

  据统计,导致需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更、遗漏的需求、和用户交流不够、质量低下的需求规格说明和不完善的需求分析。

  对不准确的需求所提问题的正确响应是“等我真正明白你的需求时,我会来告诉你”。基于不充分信息和未经深思的对需求不成熟的估计非常容易为一些因素左右。要作出估计时,佳还是给出一个范围。未经准备的估计通常是作为一种猜测给出的,听者却认为是一种承诺。因此我们要尽力给出可达到的目标并坚持完成他。