需求的概念
从根本上说,需求来源于用户的“需要”和“要求”,这些“需要”和“要求”被分析、整理、确认后形成完整的文档,该文档详细地说明了产品“应当”实现的功能。
需求的重要性
需求是整个产品链的源头,需求工作的优劣将直接影响到产品的设计,生产,销售和维护的全过程。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。目前国内很多软件业普遍存在这样一个现象:人们并不真正清楚到底该做什么,却一直忙碌不停地开发。
Frederick Brooks在他的经典文章“No Silver Bullet”是这样描述需求的重要性的:开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。
什么是需求管理
把所有与需求直接相关的活动通称为需求管理。
需求管理中的活动可分为两大类,需求分析:对用户的需求进行整理、分析和完善,形成文档需求维护:需求确认,需求跟踪和需求变更
需求工程贯穿产品生命周期的全过程。
需求管理的主要内容需求分析流程需求调查首先需求分析员起草需求调查问题表,将调查重点锁定在该问题表内,否则调查工作将变得漫无边际。问题表可以是层次化的,随着调查的深入,问题表将不断地被细化。问题表应当以“选择题”和“是非题”为主。
其次,需求分析员应当确定需求调查的方式,例如: 与用户交谈,向用户提问题。向用户群体发调查问卷等。
还可以从用户的工作流程,相关文档以及行业标准、规则中提取需求。分析已经存在的同类软件产品,提取需求。
最后,需求分析员与被调查者建立联系,确定调查的时间、地点、人员等,进行需求调查。
细化用户需求根据用户需求调查,对用户的需求进行细化,对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。例如采用Rational 的Rose工具进行需求的建模分析。