在开发早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩大及需求变更来达到按计划完成预订目标,是这里讨论的主要内容。
软件行业存在这样一个问题:用于描述需求工作的术语没有统一的定义。
对同一项需求,不同的人会有不同的描述,称其为用户需求、软件需求、功能需求、系统需求、技术需求、业务需求、产品需求.
客户对需求的定义,在软件开发人员看来可能只是高级别的产品概念;
而开发人员的需求概念对用户来说也许就是详细的用户界面设计。
需求的多样性导致了令人迷惑和沮丧的沟通问题。
但有一点是必须的:需求必须记录成文档。
不要一厢情愿地认为项目的利益相关者(Stake holder)对需求的理解是一致的。应该事先给出定义,才能保证大家谈论的是同一个问题。
软件需求包括3个不同的层次——业务需求、用户需求、功能需求。
除此之外,每个系统还有各种非功能需求。
下图的模型给出了各种需求关系的示意图,和其它所有模型一样,这个模型也不能面面俱到,但它确实有助于理解需求的整体概念。
椭圆代表各类需求信息,矩形则是存储这些信息的载体(文档、图形、数据库)。
业务需求(