开篇首先先介绍了一个关于Phil和Maria的关于客户姓名更改这个功能没有实现而造成的问题,这个问题包括很多内容:信息收集不正规、功能隐晦、对假设功能有理解上的分歧、需求制定不明确以及需求变更不正规等。
关于用户需求,文中肯定了Ian Sommerville and Peter Sawyer提出的观点:“需求是对我们应当执行的任务的规范说明,它描述系统的行为特性或属性,可以是一种对系统开发进程的约束”,我也是认同这个观点的,软件需求有三个不同的层次:业务需求、用户需求和功能需求。此外,每个系统都包含某中类别的非功能需求。书中还列出了需求领域一些常用术语的解释,常用术语包括业务需求、业务规格、约束、外部界面需求、特性、功能需求、非功能需求、质量需求、系统需求和用户需求等。到目前为止,我们讨论的需求主要描述软件系统的属性,我们将其称之为产品需求。当然项目还包含有其他的诉求和产出,不再团队执行的软件范围之内,但对项目整体的成败尤为关键。而在项目中可能出现的需求风险,书中也一一介绍,包括用户参与度不够、规划不当、用户需求蔓延、需求模棱两可、镀金和忽略干系人等情况。因此,只有高质量的需求才会带来最大的好处。
用户需求应该来自于直接或者间接使用产品的人,这些用户是客户的子集。提供业务需求的客户有时会试图替实际用户说话。然而这些内容常常和真实用户的需求相去甚远,这就需要我们去辨别核对,减少过失和失误。