在我们的软件项目中,需求工作是项目成败的关键。由于需求是衔接用户方与开发方的桥梁,所以,要求需求人员既能同时理解用户方的需求与开发方的问题,又能从项目整体角度把握、控制项目的需求,做到既能满足用户的要求而又不能无休止的扩大需求,以避免项目陷入泥潭。从此可以看出,软件项目对需求人员的要求有多高。
在我们的各个软件项目中,出现的大部分问题都是和需求有关。可以毫不夸张的说,把需求工作做好,一个软件项目就成功了80%。
一、 需求中的问题
需求工作涉及到客户方、开发方,双方的人员需要进行沟通、讨论、分析、确认。由此可见,需求工作唯有在双方人员的共同努力之下才能做好。
我们在需求工作中会遇到各种各样的问题,总结、归纳起来,有如下几种:
1. 客户方人员忙,没有足够的精力参与需求工作。这个问题表现出了需求过程中缺乏用户的参与,这样的需求必定是会出问题的。
2. 客户看到系统后说不是他们想要的。这个问题对于开发方是否真正了解了客户的需求提出了疑问。
3. 客户的需求又变了。这个问题对于如何确保客户不能轻易改变需求提出了挑战。
4. ……
由此,我们可以看出,这其中关系到需求工作中的几个问题:What -> How -> Why。我们往往能做到What,但很少能做到How、甚至Why。
二、 重新认识需求
1. 需求的层次理论
软件的需求是分层次的。按照软件工程理论
在此需求的层次中,分为三层:
业务需求:描述项目的目标与范围;
用户需求:通过用例、场景、事件来描述用户希望通过软件实现的内容;
功能需求:描述软件为用户提供的一系列功能,以满足用户的业务需要。
通过对于业务需求、用户需求、功能需求的获取、分析、整理和确认工作,并加入系统的非功能需求及相关的约束条件,最终形成系统的软件需求规格说明文档。该文档在项目中具有重要的意义,将为设计、开发、测试、验收起到指导性的作用。
2. 需求工作贯穿于软件项目生命周期
需求是贯穿于整个项目生命全周期的工作
在项目的前期准备阶段,我们需要了解客户方的业务需求;
在项目启动后的需求工作中,要进行用户需求的获取、整理工作;
在获得用户需求后,我们要进行分析、讨论、确认,并形成最终的软件需求文档;
在项目的设计、开发阶段,需求对于设计起到定义、指导的作用;
在系统的测试、验收工作中,需求文档又起到标准、规范的作用。
由此可见,在整个软件项目的生命周期中,需求工作是贯穿项目始终的。需求工作的重要性及我们应当对于需求工作重视的必要性可见一斑。
3. 需求工程理论
随着软件工程理论的不断发展及在实践中的应用和丰富,软件的需求工作已经采用工程化的思想来进行开展。具体来讲,需求工程分为两大部分:需求开发和需求管理。
需求开发在项目前期是整个项目中最为重要的工作;
需求管理则是在需求定下基线后重要的项目管理内容,它为确保项目的稳步进行、顺利开展起到重要的作用。
我们在软件项目的需求工作中,一定要充分应用需求工程理论,充分做好需求,以保证软件项目的顺利进行。
三、 需求工作方法论
针对我们在需求工作中遇到的问题,我们在上面已经进行了总结与归纳。为解决在需求工作中遇到的问题,更好的做好软件项目的需求工作,我们总结的方法有:
1. 提升业务经验
在我们与客户的交流过程中,我们如果对于客户方的