0 引言
对于一个软件系统的开发来说,最困难的部分就是准确说明开发什么,最困难的概念性工作就是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦出现纰漏,将会给系统带来极大的损害,并且以后对它修改也极为困难。所以,需求是整个软件产品链的源头,需求工作的优劣将直接影响到产品的设计、生产、销售和维护的全过程。而对于项目中哪些该做,哪些不该做,做到什么程度,则都是由范围管理来决定的。软件项目开发过程中,花费大量时间用于需求调研和分析,也都是为了准确控制好项目范围,以便于对整个项目的进行实施有效的管理。所以说,明确的需求、准确的项目范围控制和管理,是项目成功的基础所在。
1 需求分析
需求分析是一个项目的开端,也是项目建设的基石。由于需求不明确而造成项目产生风险甚至失败的比例是相当高的。因此一个项目成功的关键因素之一,就是对需求的把握程度,即所谓的需求开发与管理。
1.1 需求开发与管理的概念
需求分析的过程包括了需求开发和需求管理两个部分。需求开发指的是从情况收集、分析和评价到编写文档、评审等一系列产生需求的活动,这几个阶段的活动可以是相互独立和反复的,不一定非要遵循线性的顺序。需求管理则是与需求直接相关的活动,即软件项目开发过程中控制和维持需求约定的活动,主要包括:变更控制、版本控制、需求跟踪、需求状态跟踪等工作。
和传统的产业相比,由于软件项目的需求具有模糊性、不确定性、变化性和主观性的特点,它不像生产汽车、电脑硬件的需求,是有形的、客观的、可描述的、可检测的,同时由于需求分析的参与人员、业务模式、投资、时间等客观因素的影响,造成了软件需求分析是软件项目开发中最难把握的问题。需求分析工作的复杂性及面临的潜在风险主要体现在以下方面: (1)需求描述的准确性问题; (2)需求的完备程度问题; (3)需求开发的时间问题; (4)需求的细化程度问题; (5)需求的变更问题。
1.2 需求变更
在软件开发过程中需求的变化是永恒的,需求不可能是完备的,软件开发的过程实际上是同变化做斗争的过程,而造成需求变化的原因也有很多。比如:随着项目的进展,开发方和客户方对需求的了解越来越深入,原先的需求文档可能存在这样或那样的错误和不足,因此要变更需求;由于市场和业务发生了变化,原先的需求文档可能跟不上当前市场的要求,因此要变更需求等等。需求的变化问题是每个开发人员、项目经理都会遇到的问题,需求的变更不一定是坏事,常常提出需求变更的动机是好的,目的是希望产品更加符合用户的需求。但是一旦需求发生了变化,随之而来的将是不得不修改设计、重写代码、修改测试用例、调整项目计划等问题,对项目开发小组而言,变更需求意味着要调整资源、重新分配任务、修改前期工作成果等,这将为项目的正常进展带来诸多的麻烦,开发小组也要为此付出较重的代价。如果每次需求变更请求都被采纳的话,这个项目也许永远不能按时完成。而在需求变更过程中最难办的事情是莫过于拒绝客户提出的需求变更请求,通常情况下开发方是不敢得罪客户的,但是无原则地退让将使开发小组陷入困境。解决这个问题最好的办法是事先将需求分析工作尽量做完备,即在需求分析上遵循一定的方法步骤,在需求管理上遵循一定的策略。
1.3 需求分析的步骤
在需求分析工作上应定位三个阶段。第一阶段:访谈式。这一阶段是和具体用户方的领导层、业务层人员的访谈式沟通,主要目的是从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等具体情况、客