博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何定义性能需求
阅读量:5834 次
发布时间:2019-06-18

本文共 1050 字,大约阅读时间需要 3 分钟。

JVM监控解决方案提供商的官方博客上发表了一篇题为《》的文章。文章指出,随着企业信息化程度的提高,业务人员对软件功能性需求的描述越来越好。但涉及到易用性、兼容性或性能等非功能性需求的时候,他们经常会不得要领。比如,他们可能会提出“它的运行速度要快”这样的性能需求。在更好的情况下,他们可能会提出下面这样的性能需求:

\\
  • 在系统中执行的操作,95%的都必须在5秒针内响应;\\t
  • 系统必须支持100并发用户。\

初看上去,这样的需求已经好了很多了。但实际上,它们甚至比只用一个“快”字描述更差。虽然它们包含了一些数字,看上去似乎可以作为开发人员的终极目标。但实际上,这两个需求最多只能为关于性能需求的讨论开一个头。

\\

文章接下来对上述两个需求进行了剖析。

\\

第一个需求没有提出针对其它5%的操作的性能需求。而且,不同的功能对性能的需求也不尽相同。比如,对于功能“显示当前账户余额”和“显示2013年所有的交易”,前者5秒响应可能都略显慢,而后者响应时间再长一些也可以接受。因此,性能需求描述应该:

\\
  • 针对不同的操作类型指定可接受的时间延迟;\\t
  • 将时间延迟相关的需求与负载/吞吐量相关的需求联系起来;\\t
  • 明确时间延迟的测量位置,比如,延迟时间是以客户端为标准,还是以服务器端发送出最后一个字节为标准;\\t
  • 哪些操作的时间延迟不太要紧。\

第二个需求看上去很准确,实际上很笼统。比如,将“100个并发用户”理解成“100个线程处理100个并发操作”。如果每个操作用时1秒,那么系统吞吐量为100 ops/sec;但如果每个操作用时10秒,那么系统吞吐量则只有10 ops/sec。对于后一种情况,我们不能认为它满足“100个并发用户”的需求。因此,需求应该更清楚地描述特定用户的行为,而不是用“并发用户”这样的术语。当然,这里并不是说建议测量吞吐量,因为现实世界的应用程序往往是多功能的,很难使用吞吐量来衡量其性能。

\\

本文还提到了容量规划,即在什么样的前提条件下实现上述性能需求,包括如下三个方面:

\\
  • 系统的数据量;\\t
  • 系统的基础设施限制,比如,CPU、内存等;\\t
  • 系统的部署环境,比如,网络带宽是多少,是否需要离线操作等。\

总之,应该与业务人员紧密合作,制定出可测量的、具体的性能需求。

\\

感谢对本文的审校。

\\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博()或者腾讯微博()关注我们,并与我们的编辑和其他读者朋友交流。

转载地址:http://lfycx.baihongyu.com/

你可能感兴趣的文章
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
Apache配置
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
android HDMI 清晰度 分辨率
查看>>
Codeforces 480C Riding in a Lift dp
查看>>
JQuery发送Put、Delete请求 - 摘自网络
查看>>
Android基于mAppWidget实现手绘地图(九)–如何处理地图对象的touch事件
查看>>
OCP解决问题052-- DROP PROFILE app_user
查看>>
ContentProvider的一些总结
查看>>
关于codeMirror插件使用的一个坑
查看>>
chrome插件演示,经js转让chrome api清除浏览器缓存
查看>>
瞎子摸象与刻舟求剑
查看>>
多个相同name的文本输入框,输入其中一个后,使剩下的不能输入值
查看>>
cocos2d-x于android在call to OpenGL ES API with no current context
查看>>
CentOS升级git
查看>>
HTTP必知必会(转)
查看>>