释放办公激情,效能触手可及嘉为IT咨询培训0
非功能性需求——性能需求分析
软件的非功能性需求是衡量软件质量很重要的一个因素,同时也决定了功能相似的条件下不同软件的价格。
比如,一个同时能处理一万用户请求的网站的技术要求和一个没考虑过这方面问题的网站相比就有天壤之别。
然而实际工作中,非功能性需求却常常被忽略,或者制定得非常随意。
那么非功能性需求应该怎么制定,又如何验收呢?
下面我们以常见的非功能性需求——性能需求为例,介绍一下非功能性需求应该怎么制定和验证。
在许多网站开发项目中我们都会在合同或者招标说明中看到“本网站必须能同时满足多少用户的使用”,这就是一个针对性能的非功能性需求,不过这个需求定义的非常不专业。
首先,对于一个服务器系统来说同时在线的用户,或者并发用户数并不是一个清晰的概念。
在线用户或者更具体的——和服务器保持连接的用户,如果不进行操作,那么除了占用一点服务器内存外没有任何开销。
用户只有执行了向服务器发起请求在操作,服务器才需要消耗CPU、硬盘、网络和更多的内存资源来响应这些请求。
因此性能指标应该使用每秒请求数来标定。
虽然每秒请求数通常和并发用户数成正比,但由于应用不同、用户使用方式不同等原因。
即使是同类型网站并发用户数和每秒请求数的比例也有很大的差别。
具体的数字是多少就需要进一步的需求分析才能确定。
其次,这个需求没有限定系统响应时间。
响应时间是性能需求中另一个重要指标。
正确的性能需求是通常以一定平均响应时间条件下服务器的极限指标来描述的。
好了,我们知道制定性能需求需要每秒请求数和响应时间两个数值。
那么这两个数值如何制定才合理呢?需要注意的是性能指标不是越高越好,高性能通常需要复杂的实现技术、更高的部署成本和更多的维护工时。
因此制定性能需求绝对不能拍脑袋。
做性能需求分析通常有这么几个步骤:
1、确定参照系统
2、测量参照系统的性能指标
3、预测目标系统
4、计算目标系统性能指标
参照系统是一个和目标系统类似并且已经存在的系统。
通常将要被目标系统替换的老系统就是一个很好的参照系统。
需要注意的是如果新系统的业务或者技术基础变化很大,那么旧系统未必是一个好的参照系统。
测量参照系统的性能指标通常比较容易,比如对于IIS网站来说,打开日志记录至少一个业务周期(比如一周)或者几个典型时段的数据,然后可以使用各种专业工具进行分析。
从这些日志我们很容易得到所谓的用户数和每秒请求数的关系,以及系统响应时间等参数。
简单的统计有时甚至通过自行编写的程序来完成。
有了基本的参照数据,那么接下来拍脑袋决定的目标系统预测也会相对靠谱。
最后计算目标系统的指标就是一些普通的算术问题了。