近年来,国内各级政府部门、企事业单位在信息化建设上取得了长足进步,但由于不少组织整体管理水平相对较低,在信 息系统建设上缺乏系统、长远的战略规划,没有先进、适用、可行的管理实践理论作为指导,因此很多软件项目没有在预定的范围、投资总额、工期内完成,工期延 期、延误成为普遍现象。
  需求管理的常见误区
  软件项目的范围控制应该是在需求分析阶段开始的,然而很多项目经理针对需求分析存在不少认识误区。
  误区1:开发商和用户仅软件需求的基本轮廓达成一致即可,具体细节准备日后协商。
  从项目管理角度分析,这是非常危险的,许多软件项目失败的主要原因是需求分析阶段对问题、流程、细节的描述不够准确,导致后期预算超支或者工期延误。
  正确的方法是:在需求分析阶段,双方必须对项目的应用背景、功能需求、性能需求、可靠性需求、可用性需求、操作界面需求、外部接口需求,以及项目评审的方法、标准、过程进行全面、细致地研究讨论,逐一进行明确。
  误区2:软件需求是软件必需向用户提供的功能和界面,功能上满足需求足够了。
  从软件需求工程角度分析,这只是认识到了软件系统的功能需求,忽略了软件的非功能需求和设计约束,需求捕获不够全面。软件需求工程理论认为,软件需求包括功能需求、非功能需求和设计约束三方面内容。
  正确的方法是:除了要明确软件的功能需求,还需要进一步明确非功能需求(即软件产品所必备的属性和品质,包括可靠性、可用性、安全性、可扩展性、可移植性等)和设计约束(即软件研发必须遵守的特定规约、限制条件、政策标准,如软件必须采用国内自主知识产权的数据库产品)。
  误区3:需求调研的对象是用户,用户是软件产品的终使用人员。
  从项目管理角度分析,该观点缺乏对项目相关人全面、系统的认识,对用户的概念理解不到位。"用户"是一种泛称,它 可细分为客户、终用户和间接用户三种类型。例如,很多企业的一把手并不直接参与软件的采购和操作,但是其对于软件项目实际上起到了关键意义的决定作用, 属于重要的间接用户。
  正确的方法是:要充分认识用户的多重性、层次性、复杂性,在进行需求调研时应首先对用户进行分析、分类,根据重要 性、优先级、特殊性对各类用户进行排序;其次,是针对不同类别的用户分别制订不同的需求调研计划,全面开展需求调研。需要重点指出的是,对于由多个业务部 门共同参与的软件项目,在确认软件需求时一定要得到全部参与部门的共同认可。
  误区4:按照"需求、设计、编程、测试"步骤研发出的软件不必考虑需求跟踪问题。
  从软件工程角度分析,这是对于需求变更过程缺乏系统的认识的表现,严格线性顺序的开发模型并不能保证各个开发阶段的工作成果与需求保持一致。实际上,由于需求变更的不可预见性和必然性,各个阶段往往以螺旋的方式渐进。
  正确的方法是:需求跟踪应该贯穿于整个软件需求管理阶段,需求跟踪的目标是实现《产品需求规格说明书》和软件产品之间的双向可追溯。
  做好需求工程
  需求分析是软件工程项目重要、基础的起始阶段,为后续的规划设计阶段提供参照依据。在软件研发项目过程中一定 要树立需求工程的意识,将需求视为一项系统工程。为了能够全面做好需求管理,应根据项目实际情况严格划分项目阶段,清晰界定、定义项目阶段的基线,在每个 项目阶段制订、执行阶段性需求管理计划,逐一认真落实。
  1.需求工程的结构及目标任务
  需求工程是一个包括创建和维护系统需求文档所必需的一切活动的过程。需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求管理。需求工程结构如图1所示,需求开发与需求管理的流程如图2所示。
  需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。需求开发过程有3个主要活动:需求调查、需求分 析、需求定义。需求开发过程可分为两个阶段:用户需求调查阶段和产品需求定义阶段,两个阶段在逻辑上通常是以迭代的形式进行的。需求开发过程产生的主要文 档有《用户需求说明书》、《产品需求规格说明书》(对于软件产品而言是《软件需求规格说明书》)。
  需求管理的目的是在用户与开发商之间建立对需求的共同理解,维护需求与软件工作成果的一致性,并控制需求的变更。需求管理过程有三项主要活动:
  (1)需求确认:开发商和用户共同对需求文档进行评审,双方需求达成共识后做出书面承诺,使需求文档具有商业合同效果。
  (2)需求跟踪:通过比较需求文档与后续工作成果之间的对应关系,建立与维护"需求跟踪矩阵",确保产品依据需求文档进行开发。
  (3)需求变更控制:依据"变更申请、审批、实施、重新确认"的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。
  需求管理过程产生的主要文档有《需求评审报告》、《需求跟踪报告》、《需求变更控制报告》等。