时间、用户的变化而变更等原因,可能使需求分析偏离实际需求而最终导致软件开发的失败,这种可能性称为需求风险。总结以往企业信息化项目实施过程中遇到的需求问题,大致可将需求风险归纳为如下几种类型。
(1)需求频繁变更,项目范围被随意扩大,导致项目的成本费用增加、开发周期延长、开发质量和工作效率下降;
(2)缺乏明确的部门或人来真正对需求负责,造成业务需求缺乏规划,需求的片面性和矛盾性比较突出,需求质量受到需求提出者个人能力的影响;
(3)受专业领域所限,技术人员和业务人员在沟通上存在着一些障碍,双方都用自己的方式和专业术语进行交流,使最终开发人员理解的需求与业务人员的初衷存在差异,导致开发出的系统与用户的期望不符;
(4)开发人员将兴趣点更多放在技术产品和程序编码上,对需求分析工作的关注度和精力投入不足,在拿到一些尚未描述清晰具体的需求后,草草投入程序开发,对不明之处以自己的理解来代替,同样造成了实际系统与用户期望不符;
(5)业务人员对项目初期的需求确认缺乏足够重视,往往等到系统上线后才提出各种问题,严重影响了项目的实施效果。
需求风险成因分析
造成需求风险的原因是多种多样的,包括人的问题、历史遗留问题、管理问题等。笔者结合电信企业在IT项目建设中遇到的典型需求问题,总结出如下几点需求风险成因。
1.人员和职责分工问题
软件需求来源于软件使用者,是对人的心理期望的具体体现,因此在进行需求收集时能否找到最理想的需求提供者是至关重要的。对企业信息化项目来说,信息化需求应是对企业管理者管理思想的体现,这样做出来的系统才能对提升企业竞争力起到积极作用。然而,目前在企业内部由于在部门机构划分上采取的是条块状分割的组织架构,每个部门只从自己所负责的工作出发考虑需求,甚至是需求提供者只从自身工作便利角度出发提出需求,造成不同来源的需求之间存在着矛盾,需求质量很大程度上受需求提供者个人水平的影响。对于这些纷杂需求的取舍也缺乏某个主管部门去裁决,往往只能由信息技术部门出面去推动相关单位协商解决,其难度是相当大的,造成需求长时间无法确定,严重影响了项目整体进度。
另一方面,业务和技术人员之间天然存在着一条认知上的“鸿沟”,彼此缺乏对对方领域的了解,从企业层面缺少一批既懂业务又懂技术的复合型人才来整体把握业务和技术的平衡点。业务人员不理解为什么实现一个需求要花费那么长时间,为什么他们提出的需求经常会被技术人员压缩或拒绝;技术人员面对需求首要考虑的是实现这个需求是否需要对系统进行较大改动,是否会给系统的性能和稳定性带来负面影响。技术人员往往习惯于按照自己的思路对需求的必要性产生疑问,并暗自嘲笑业务人员对信息系统一无所知。正是由于进行需求沟通的双方人员彼此缺乏共同语言和相互了解,致使对需求的理解很难达到共识。寻找技术加业务的复合型人才充当中间人角色的难度又是相当大的,具备此能力的人可以说是凤毛麟角,且需要一段较长时间的培养。
2.业务驱动力问题
企业信息化项目的源动力来自于企业为寻求自身进一步发展,而对信息技术的一种迫切需要。在发达国家信息化需求非常旺盛,企业员工普遍具有很强的信息化意识,人们投入信息化项目的热情和精力普遍较高,致使项目的需求质量较理想;反观国内企业,人们受思维和行为惯性的影响,对传统工作方式难以形成突破,很多人已经习惯于长期以来采取的手工工作方式和信息获取方式,加之人力成本的低廉,使得人们对借助信息系统改善工作状况的愿望并不十分强烈,造成一些会对提升工作效率有显着成效的信息化点没能被充分挖掘出来,从而使项目收益大打折扣。
另一