定义:需求
需求(Requirement)就是系统(更广义的说法是项目)必须提供的能力和必须遵从的条件[JBR99]
"
Requirements are capabilities and conditions to which the system—and more broadly, the project—must conform".
[JBR99]
UP(Unified Process)提出了一系列的最佳实践,其中之一就是需求管理 (requirement management)。需求管理不主张采用瀑布的观点,即在编程之前项目的第一个阶段就试图完全定义和固化需求。在变更不可避免,涉众医院不明朗的情况下,UP更推崇用"一种系统的方法来寻找、记录、组织和跟踪系统不断变更 的需求"[RUP](Rational Unified Process)
简单言之,就是通过迭代巧妙的进行需求分析,而非草率和随意为之。
需求分析的最大挑战是寻找、沟通和记住(通常是指记录)什么是真正需要的,并能够清楚地讲解给客户和开发团队的成员。
寻求需求可以采用的方法
- 与客户一同编写用例
- 开发者和客户共同参加需求研讨会
- 请客户代理参加焦点小组
- 向客户演示每次迭代的成果以求得反馈
需求的类型和种类
在UP中,需求按照"FURPS+"模型进行分类[Grady92]
- 功能性(Functional):特性、功能、安全性。
- 可用性(Usability): 人性化因素、帮助、文档。
- 可靠性(Reliability):故障频率、可恢复性、可预测性。
- 性能(Performance):响应时间、吞吐量、准确性、有效性、资源利用率。
- 可支持性(Supportability):适应性、可维护性、国际化、可配置性。
FURPS+中的”+“是指一些辅助性的和次要的因素,比如:
- 实现(Implementation):资源限制、语言和工具、硬件等。
- 接口(Interface):强加于外部系统接口之上的约束。
- 操作(Operation):对其操作设置的系统管理。
- 包装(Packaging):例如物理的包装盒。
- 授权(Legal):许可证或者其他方式。
IBM RUP对FURPS+的定义
The FURPS+ System for Classifying Requirements
One such classification system was devised by Robert Grady at Hewlett-Packard. 2 It goes by the acronym FURPS+ which represents:
* Functionality
* Usability
* Reliability
* Performance
* Supportability
The "+" in FURPS+ also helps us to remember concerns such as:
* Design requirements
* Implementation requirements
* Interface requirements
* Physical requirements
UP制品如何组织需求
UP提供了一些需求制品。同所有的UP制品一样,它们都是可选的。其中关键的制品包括:
- 用例模型 :一组使用系统的典型场景。主要用于功能(行为的)需求。
- 补充性规格说明 :基本上是用例之外的所有内容。主要用于所有非功能需求,例如性能或许可发布。该制品也用来记录没有(或者不能表示)为用例的功能特性,例如报表生成。
- 词汇表 :词汇表以最简单的形式定义重要的术语。同时也包含了数据字典 (data directionary)的概念,其中记录了关于数据的需求,流入有效性规则,容许值等。词汇表可以详述任何元素:对象属性、操作调用的参数、报表布局等。
- 设想 :概括了高阶需求,这些需求在用例模型和补充性规格说明中进行细化。设想也概括了项目的业务案例。设想是简短的执行概要文档,用以快速了解项目的主要思想。
- 业务规则 :业务规则(也称为领域规则)通常描述了凌驾于某以软件项目的需求或政策,这些规则是领域或业务所要求的,并且许多应用应该遵从这些规则。领域规则的细节可以记录在补充性规格说明中,但是因为这些规则通常更为持久,并且不止对一个软件项目适用,所以应将其放入集中的业务规则制品(供公司的所有分析员共享),以便在这方面做出的分析工作能够被更好的重用。
总结:UP的推崇迭代和进化式需求,强调了需求的"不断变更 "的重要特性。使用一种系统的方法来寻找、记录、组织和跟踪系统不断变更的需求[RUP]--需求管理(manage requirement)。