没有任何地方说你必须放弃所有先前的知识才能敏捷。FURPS +卡 (Functionality / Usability / Reliability / Performance / Security)是我在很久以前的非敏捷年代中发现有用的工具的一个很好的例子,并且在敏捷项目的背景下仍然有用。
在敏捷中,我们没有提到要求; 相反,我们谈论故事。故事实际上是对客户需求的提醒(一般意义上的要求)。我们将通过不断的讨论将这些需求细化为产品。通过执行代表每个故事的验收标准的测试,我们对我们运送软件产品的能力充满信心。
为了计划发布周期,必须发生一系列故事列表以表示可交付产品。积压的故事当然必须包括所有客户的功能需求,以及他们的非功能需求。非功能?许多“真正的”客户不会考虑这些事情。
由HP的Robert Grady设计的FURPS + (Functionality / Usability / Reliability / Performance / Security) 首字母缩略词提供了更多关于非功能性故事的含义,并提供了一种分类此类需求的好方法。这里的细分提出了一些围绕潜在需求的代表性问题
-
功能 Functionality - 客户想要的!请注意,这包括与安全相关的需求。(特性,功能,安全性)
-
可用性 Usability - 从必须使用产品的人的角度来看,产品的有效性如何?它在美学上是否可以接受?文档准确完整吗? (人为因素,帮助,文档)
-
可靠性 Reliability - 最大可接受的系统停机时间是多少?故障是否可预测?我们能证明结果的准确性吗?系统是如何恢复的?(故障频率,可恢复性,可预测性)
-
性能 Performance - 它必须有多快?什么是最长响应时间?吞吐量是多少?什么是内存消耗?(响应时间,吞吐量,准确性,可用性,资源使用)
-
安全性 Security - 它是可测试的,可扩展的,可维护的,可安装的和可配置的吗?可以监控吗?(适应性,可维护性,国际化,可配置性)
功能性和非功能性要求
- 非功能性需求描述了系统提供的服务或功能的整体系统约束的其他所需属性,如时序约束,开发过程的约束,标准等。产品成本(如何衡量)成本?)
- 性能(效率,响应时间?启动时间?)
- 可移植性(目标平台?),二进制或字节码兼容性?
- 可用性(停机时间可以接受多少?)安全性(可以防止入侵?)
- 安全性(可以避免对人员或环境造成损害吗?)可维护性(在OO环境中:可扩展性,可重用性)非功能性需求可能比功能需求更为关键。如果不满足这些要求,系统就没用了。
功能要求示例
- 用户应能够搜索所有初始数据库集或从中选择一个子集。
- 系统应为用户提供适当的查看器以读取文档存储中的文档。
- 每个订单都应分配一个唯一标识符(ORDER_ID),用户应能够将其复制到帐户的永久存储区域。
非功能性分类
- 产品要求 - 规定所交付产品必须以特定方式运行的要求,例如执行速度,可靠性等。
- 组织要求 - 组织政策和程序的结果要求,例如使用的过程标准,实施要求等。
- 外部要求 - 由系统及其开发过程外部因素引起的要求,例如互操作性要求,立法要求等。
非功能性分类
- 产品要求 - 规定所交付产品必须以特定方式运行的要求,例如执行速度,可靠性等。
- 组织要求 - 组织政策和程序的结果要求,例如使用的过程标准,实施要求等。
- 外部要求 - 由系统及其开发过程外部因素引起的要求,例如互操作性要求,立法要求等。
了解更多