写点什么

确定非功能需求

  • 2011-07-01
  • 本文字数:1289 字

    阅读完需:约 4 分钟

非功能需求一般和系统的状态有关而与系统需要提供的功能无关。通常是系统的“ ilities”功能,比如可扩展性(scalability)、互操作性(interoperability)、可维护性(maintainability)、移植性(portability)、性能和安全性都包括在此类。敏捷团队经常纠结于定义和估算项目的非功能需求。

Mike Cohn 建议几乎所有的非功能需求都能以用户故事表述。他给出了几个例子展示非功能需求能够适用标准的用户故事模板

幸运的是约束 / 非功能需求能很容易的按用户故事处理。这里给出几个例子:

  • 作为客户,我要在从 Windows 95 之后的所有版本的 Windows 上运行产品。
  • 作为 CTO,我要(新)系统使用我们已有的订单数据库而不是创建新数据库,这样我们就不用再多维护一个数据库了。
  • 作为用户,我要网站在 99.999% 的时间是可访问的,这样我就不会感到沮丧并找其它的网站来用。

然而,Mike 也警告说用户故事模板只是用来作为一个思考工具。不应该用一个固定的模板来记录所有的非功能需求。

Jason 建议不要试图在用户故事级别记录非功能需求,团队应该把它们作为(项目)大图景的一部分。按照 Jason 所说,在他的团队,他们尝试过在每个单独的用户故事级别记录非功能需求,但是没起到作用。他提到,

我喜欢把这些非功能需求(NFR)用户故事写在墙上并在工作区都能看到,这样可以提醒团队在给出估算时考虑这些约束的因素。

Mike 还提出一种明确的方法来估算非功能需求。按他所说,非功能需求与两个成本相关联

  • 初始遵循(非功能需求)成本——团队满足非功能需求所用的工作量。比如,在 sprint 5 花在性能测试上的工作量。
  • 持续遵循(非功能需求)成本——在以后的 sprint 中满足非功能需求的工作量。

一旦团队接受非功能需求作为项目的一部分(就像我们团队在 sprint 5 中做的),他们需要把持续达到非功能需求作为项目的提示。我认为这种成本就像上税。进行性能测试(或者说遵从任何非功能需求)产生了一些额外的开支(税)。这种开支,或者说税,是必须定期付出的。

为了估算,Mike 认为这两种成本需要单独考虑。初始遵循成本应该和任何其它的用户故事或产品 backlog 中的任务一样被估算。持续遵循成本,团队和 product owner 需要决定多久要进行一次遵循验证工作。

例如,假设团队和 product owner 同意每四个两周的 sprint 中进行一次性能测试。团队估算每次第四个 sprint 有六个点的工作要做。那就是大约每个 sprint1.5 点。如果团队的速度(velocity)是 30 个点,1.5 点可以认为是大约 5% 的税。

Nick Xldis 对遵循成本进行了一次非常有意思的观察。据 Nick 所说,

如果这种税持续增长,那你的架构或流程上就有问题了,需要格外关注。这是对于技术债的很好的晴雨表。

Scott Ambler 通过提升一个独立测试团队的能力分享了管理非功能需求的想法。

Kassab、Olga、Maya 和 Alain 介绍了 NFR 大小测量方法(NFSM)来减少估算非功能需求中的不确定性。

因此,处理非功能需求可能不是痛苦的挣扎。关键是尽早处理它们并关注持续成本。

注意:关于非功能需求这一术语的使用有很多想法和争论。Mike Cohn 称其为约束而 Tom Glib 强烈建议称之为质量需求

查看英文原文: Nailing Down Non-Functional Requirements

2011-07-01 08:323221
用户头像

发布了 32 篇内容, 共 93407 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

阿里巴巴云原生

阿里云 云原生 服务网格 容器服务

GaussDB技术解读系列:高安全之密态等值

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

2023-08-28:用go语言编写。给你一个正整数数组nums, 同时给你一个长度为 m 的整数数组 queries。 第 i 个查询中,你需要将 nums 中所有元素变成 queries[i] 。

福大大架构师每日一题

福大大架构师每日一题

移动应用高级语言开发——并发探索

OpenHarmony开发者

OpenHarmony

科兴未来 | 2023年SCIP绿色化学化工创新创业大赛!

科兴未来News

低代码平台:IT开发的一种重要方式

树上有只程序猿

系统开发 低代码开发 JNPF 传统开发

阿里云 X 森马 AIGC T 恤设计大赛开启!穿什么由你定,赢 Airpods,作品定制联名T恤

阿里巴巴云原生

阿里云 云原生 AIGC

AI 狂飙,云端 IDE 如何书写未来?TVP 吐槽大会邀您来论道

CODING DevOps

Elasticsearch最佳实践:如何保证你的数据安全

腾讯云大数据

Elastic Search

HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力

HarmonyOS开发者

HarmonyOS

响应式编程——初识 Flux 和 Mono

emanjusaka

Java 响应式编程 后端

Apache IoTDB:更适合工业物联网场景的新型数据库,存、查、用不再是难题

Apache IoTDB

想解决技术债,你要先学会如何量化它

互联网工科生

程序员 敏捷开发 技术债 敏捷宣言

OSCS开源安全周报第 57 期:Smartbi windowUnloading限制绕过导致远程代码执行

墨菲安全

网络安全 安全漏洞 oscs

[ K8s Operator 开发完整教程-1 ] kind创建本地K8s集群

baiyutang

云原生 k8s operator PaaS

K8s Operator 开发完整教程

baiyutang

云原生 k8s operator PaaS

与信创国产化高度适配的低代码开发框架

力软低代码开发平台

软件测试/测试开发丨Web自动化测试策略

测试人

Python 程序员 软件测试 自动化测试 测试开发

报名开启丨邀你一起探索云端 AI 新兴技术和发展模式

TRaaS

《揭秘软件开发文档:你的项目管理必备利器》

金陵老街

开发文档

如果你越来越冷漠

Chris Zhang

快手StreamLake:构建大算力基础设施体系,应对视频和大模型挑战

Geek老T

大模型 AIGC

鹏云块存储在多副本情况下,如何兼顾数据一致性和效率?

鹏云网络

分布式系统 数据强一致性 副本一致性 分布式存储,

确定非功能需求_研发效能_Vikas Hazrati_InfoQ精选文章