生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

确定非功能需求

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

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

关注

评论

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

基于 Flink CDC 的现代数据栈实践

Apache Flink

大数据 flink 实时计算

互联网工程师Java面试题及答案整理(2023速成版,7天就能吃透)

采菊东篱下

java面试

中船互联与嘉为科技共同打造“IT运维管理”融合解决方案

嘉为蓝鲸

自动化运维 IT 运维 中船集团

【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案

HMS Core

HMS Core

python统计程序耗时 | python小知识

AIWeker

Python python小知识 三周年连更

SpringBoot2.x系列教程——整合使用JPA

会踢球的程序源

Java

代码质量难评估?一文带你用 SonarQube 分析代码质量!

Java你猿哥

架构师 代码 SSM框架 sonar

从「搭子」文化,看融云如何助力垂类社交应用增长

融云 RongCloud

融云 Z世代 通讯 交友 搭子

Unity 之 月签到累计签到代码实现(ScriptableObject应用 | DoTween入场动画)

陈言必行

Unity 三周年连更

我在 20 年的软件工程师生涯中学到的 20 件事

宇宙之一粟

翻译 软技能

Spring Boot 实现接口幂等性的 4 种方案

做梦都在改BUG

Java Spring Boot

HummerRisk V1.0 :架构升级说明

HummerCloud

开源 云安全 云原生安全

大型SRE组织设计与建设落地,且看腾讯蓝鲸如何做?

嘉为蓝鲸

腾讯 运维自动化 蓝鲸

治理告警风暴,告警降噪的一些典型手段

龙渊秦五

告警风暴 告警降噪

揭秘云原生时代企业可观测体系落地实践

嘉为蓝鲸

云原生应用 云原生(Cloud Native) 可观测宇宙

把脉分布式事务的模型、协议和方案

小小怪下士

Java 分布式 分布式事务 后端

字节跳动正式开源分布式训练调度框架 Primus

字节跳动开源

开源 算法 流批一体

测试工程师为什么要关注研发效能?

思码逸研发效能

软件工程 研发效能 测试工程师

Flomesh 软负载 FLB GA 版本发布

Flomesh

负载均衡 云原生 Pipy

多家大厂CTO鼎力推荐的微服务架构设计模式真的硬核

小小怪下士

Java 程序员 微服务 后端

阿里P7了!全靠死磕这份阿里全彩版"并发编程笔记",大厂必备!

Java你猿哥

Java 并发编程 架构师 java面试 Java工程师

改写同事代码——血压操作集锦第一弹

Java你猿哥

Java IDEA java编程 SSM框架 表单设计

Redis删除键命令: 新手用del,老手用unlink,有何区别?

Java你猿哥

Java redis SSM框架 Java工程师 delete

开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果

小红书技术REDtech

推荐 广告 小红书

多云转晴:Databend 的天空计算之路

Databend

90%的Java开发人员都会犯的5个错误

做梦都在改BUG

Oracle 23c 新特性实操体验优质文章汇总

墨天轮

数据库 oracle sql 新版本/特性解读

3月寒窗!啃透美团保姆级分布式进阶技术手册,4月终入美团定L8

Java你猿哥

Java 分布式 SSM框架 分布式数据 分布式消息

阿里全新推出:微服务突击手册,把所有操作都写出来了

Java你猿哥

微服务 微服务架构 Spring Cloud SSM框架

FastAPI 快速开发 Web API 项目: 连接 MySQL 数据库

宇宙之一粟

Python FastApi 三周年连更

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

Java你猿哥

Java 分布式 SSM框架 分布式核心原理解析 分布式开发

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