写点什么

确定非功能需求

  • 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:323505
用户头像

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

关注

评论

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

TikTok安装

箭上有毒

4月日更

LeetCode题解:145. 二叉树的后序遍历,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

精通比特币:为什么它对自由、财务和未来至关重要(上篇)

CECBC

比特币

对话声网 Agora 首席科学家钟声 :声网的未来规划和人才建议

小诚信驿站

采访 调查采访能力考核

如何从零开始学Python:(3)划重点:使用IDLE创建列表时需要注意的地方

广之巅

Python 4月日更

对话声网 Agora 首席科学家钟声 :5G时代到来前景下RTE实时互动技术的应用与发展

麦洛

Java

专访声网首席科学家钟声|倾听不一样的“钟声”,声网实时互动服务

程序员架构进阶

28天写作 4月日更 调查采访能力考核 人物访谈

Ansible 介绍

耳东@Erdong

4月日更

【AI全栈二】视频流多目标多类别无延迟高精度高召回目标追踪

cv君

音视频 目标检测 视频跟踪 引航计划

关于数字人民币、加密货币,央行前行长周小川、副行长李波博鳌论坛发声

CECBC

数字货币

访谈阿里巴巴安全科学家吴翰清

容光

专访 阿里吴翰清 最新网络安全

ElasticSearch 如何使用 TDigest 算法计算亿级数据的百分位数?

程序员历小冰

大数据 elasticsearch 近似算法 TDgigest

领域驱动设计 101- 上下文与持续集成

luojiahu

领域驱动设计 DDD

由 JVM Attach API 看跨进程通信中的信号和 Unix 域套接字

AI乔治

Java 架构 JVM 性能调优

在gitee码云上搭建一个网站

空城机

JavaScript 大前端 gitee 4月日更 搭建网页

【提纲】专访融云CTO杨攀 | 技术型人才的自我修炼

Python研究所

调查采访能力考核

python 变量作用域和列表

若尘

变量 Python编程 作用域

1W字|40 图|硬核 ES 实战

悟空聊架构

全文检索 elasticsearch elastic springboot 实战

MySQL 死锁套路:再来看一例走不同索引更新的例子

AI乔治

Java MySQL 架构

浪潮云洲链全面接入“星火·链网”

工业互联网

《采访彩食鲜 CTO 乔新亮:IT 团队从 100 到 10000 的管理心得》(采访提纲)

程序员历小冰

调查采访能力考核

ARTS- Week 7

steve_lee

【提纲】专访融云 CTO 杨攀 | 物联网城池应用和发展

李孟聊AI

调查采访能力考核

玩一玩Tiktok

箭上有毒

4月日更

Go Goroutine

escray

学习 极客时间 Go 语言 4月日更

模块2的作业

谢博琛

混沌工程=可观测性+探索性测试?

混沌工程实践

云原生 可观测性 混沌工程 测试右移 探索性测试

Python 爬虫实战(一) 爬取自如网租房信息

U2647

python 爬虫 4月日更

Lombok初始使用及遇到的问题

风翱

lombok 4月日更

为什么微服务一定要有 API 网关?

xcbeyond

微服务 api 网关 4月日更

朱嘉明:算力产业正面临着一个十年的长周期

CECBC

数字经济

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