软件需求——第2章 客户眼中的需求
- 某些需求问题源于混淆了不同层次的需求(业务需求、用户需求和功能需求)。
- 这一章将讨论客户与开发人员之间的关系,这对软件项目的成功至关重要。
- 还提出了软件客户权利法案和对应的软件客户责任法案,这些法案强调了需求开发中客户(尤其是用户)参与的重要性。
2.1 客户
最广义地讲,客户泛指直接或间接得益于产品的个人或组织。
软件的客户包括那些提出软件需求,购买、定义、使用软件产品或选择接受软件功能的项目涉众。 低一层的需求——用户需求——则应来自实际使用产品的人。这类用户(通常被称为“最终用户”)构成了另一类型的客户。
对于信息系统、签约开发或自己开发的项目,业务需求应来自投资项目人,而用户需求则应来自产品的实际使用者。
2.2 客户与开发人员的合作伙伴关系
客户有的权力:
客户有权利 |
1. 要求需求分析员使用客户的语言 |
2. 要求需求分析员熟悉客户的业务,了解客户对系统的目标 |
3. 要求需求分析员把需求收集过程中客户提供的信息组织成书面的软件需求规格说明 |
4. 要求需求分析员解释需求过程生成的所有工作结果 |
5. 要求需求分析员和开发人员尊重客户,始终以合作和专业的态度与客户进行互动 |
6. 要求需求分析员和开发人员为需求和产品实现提供思路和备用方案 |
7. 要求开发人员实现能让产品使用起来更容易、更有趣的特性 |
8. 调整需求,便于重用已有的软件组件 |
9. 在提出需求变更时,获得对变更的成本、影响及二者权衡关系的真实评估 |
10. 获得满足功能和质量要求的系统,这些要求必须事先告知开发人员并征得其同意 |
软件客户有义务:
软件客户有义务 |
1. 为需求分析员和开发人员讲解业务并定义业务术语 |
2. 提供需求,阐明需求,通过与开发人员的交互将需求充实完善 |
3. 对系统需求的描述必须详细、准确 |
4. 需要时,及时对需求做出决断 |
5. 尊重开发人员对需求成本和可行性的评估 |
6. 与开发人员协作,为功能需求、系统特性和用例设置优先级 |
7. 审阅需求文档,评估原型 |
8. 发现需要变更需求时,及时与开发人员沟通 |
9. 按照开发组织的变更控制过程提出需求变更 |
10. 尊重需求分析员在需求工程中使用的过程 |
2.3 关于“签字”
客户和开发人员之间合作伙伴关系的核心是就产品的需求达成一致。很多组织把在需求文档上签字作为客户认可需求的标志。
需求批准过程的所有参与者都应该明白签字意味着什么,否则会出现很多问题
- 问题之一是客户代表把在需求文档上签字视作毫无意义的仪式。
- 另一个关于签字的问题是开发经理把签字作为冻结需求的方法。
签字不仅仅是仪式,更重要的是建立需求协议的基线 。
设置基线是很有意义的,它能给所有主要的涉众带来信心。