在软件开发中,很多程序员都将完成需求当作任务目标。但是在验收、代码评审的时候,我们对于程序员来讲,除了能完成外,还有一些其它一些要求条件:例如代码健壮性,可扩展性,性能等等考核指标。
这些其它的条件,其实我们可以理解为非功能性需求。
非功能性需求,我们一般分为以下几个指标:
观感性
简单来说,就是页面的观看舒适度。界面舒适度很大的效果上是来自操作者的反馈。
主要描述了需求外观的期望、情绪和风格。简单点来说就是对页面的视觉感官。
易接受性:色彩是否和当前系统类型一致,例如蓝色偏商务风等。
风格统一性:设计风格是否统一,一看就知道是一个系统的内容,主要考虑人们在多个系统之间进行系统切换的时候,怎样打开多页面不迷失的问题。
易用性
易用性会提高用户习惯的能力和对使用的期望。主要从消费者的生产效率、容错率等方面来考究。
易理解:用户在使用该系统的时候,思维方式和常规人或软件的思维方式一样。例如1+1 结果为2(十进制),而不是10(二进制)
易学习:用户使用该系统所花费的成本是否过高。每个功能是否需要单独学习相关的操作和理解。
易操作:操作和控制该系统是否方便。例如页面排版上,下拉框数据过多的时候,是否有搜索功能等,可以方便快速找到内容。
可执行性
可以理解为执行效率。一般情况下对于可执行性的考核都是从时间维度和空间维度来考量。
时间维度:主要是看运行功能所需的时间。一般使用时间复杂度T(n)来表示。值越大,说明花费的时间越多。
空间维度:主要是看运行功能所需的资源(内存)。一般使用空间复杂度O(n)来表示,和上面一样,值越大,说明使用的内存越大。
可靠性
在规定的时间和条件下,其稳定运行的能力。主要从以下几个方面考量
稳定性:无错运行可以拿到几个9。例如99.99%这种。
容错性:软件在错误的数据和环境下,对于错误的处理能力。
可恢复性:程序在宕机后,多长时间能恢复。
可维护性
程序在上线后,进行修改和跟踪所需要花费的精力。一般从以下几个方面考量
分析性:为跟踪确定bug所花费的精力的长短比例。
扩展性:后续修改代码已有功能所花费的时间的长短比例
测试性:在修改后,验证功能所花费的时间比例。
可移植性
程序从一个环境切换到另外一套环境所需的时间考量
适应性:程序从一个环境切换到另外一个环境下,所需要准备的成本花费比例。例如从window切换到linux。
安装性:在不同环境下安装所花费的成本比例。
替换性:替换其它功能的机会成本
写代码,除了完成需求规定的功能外,还要综合考量在性能、可用性等