最近越来越意识到非功能需求的重要性,比如最近我们要实施一个系统,我们通常是开发应用系统给别人用,有意思的是这次我们要用别人给我们开发的系统,这个系统的功能挺好的,但是最让人无法忍受的是慢,页面的响应时间让人无语,快还是慢就属于非功能性需求。
之前黎叔就建议过我们在写功能需求之外还要写非功能需求,比如:
保存操作必须在1秒内完成。
非功能需求其实比功能需求更重要,举几个例子:
系统接口相关的需求可以写成“处理一个消息的平均时间不超过1s”,因为消息处理过慢会导致消息堆积,消息堆积会使系统的很多功能无法正常使用。
报表相关的需求可以写成“支持10000条数据下载,下载时间不超过20s”,我们就碰到好几次用户下载把系统搞挂的情况。
系统的可用性,我们经常是用户告诉我们出问题了,我们才知道系统出问题了,我们是否可以在用户发现问题之前发现并解决问题?我们是否有预防性措施防止系统出问题?比如自动销毁、重启和扩容等。
非功能性需求里面的快和稳定是最重要的两个方面,稳定的意思是用户在使用的过程中系统不会突然不能用了,或者结果和预期的不相符。快是指系统的响应很快,就像谷歌搜索一样,结果可以秒回。
从目前的趋势上看,功能性需求会持续下降,正好可以在非功能性需求上发力,因为非功能需求比功能需求更重要。