百闻|你能给出一些非功能性需求的例子吗?
关注『龙家二大爷』每周用独特的视角为您梳理的软件开发方面的问题,与您随时随地切换新思维!
非功能性需求是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。非功能性需求涉及的范围很广,软件产品本身不是孤立存在的,还涉及到诸多外在环境的影响。非功能性需求必须考虑软件既要可用,又要易用。
性能需求
用户在软件响应速度、结果精度、运行时资源消耗量等方面的要求。性能就是在空间和时间资源有限的条件下,软件系统工作的如何?系统性能需求,有几个典型的指标:响应时间,并发用户数,TPS,资源利用率等。
可靠性需求
用户在软件失效的频率、严重程度、易恢复性,以及故障可预测性等方面的要求。当系统出现故障和用户出现错误的操作后是否支持恢复,当用户在使用过程中遇到错误的时候是否可以立即定位问题,但业务场景和逻辑发生变化的时候系统是否支持,当网络不稳定或使用中异常中断的情况下系统是否都有相应的容错措施,这些都是需要在非功能性需求中考虑到的问题。
易用性需求
用户在界面的易用性、美观性,以及对面向用户的文档和培训资料等方面的要求。易用性同时还涉及到美工和UI界面,人机工程,交互式设计,心理学,用户行为模式等多方面的知识。用户在使用过程中易理解,易操作等。页面描述要清晰,最高境界就是“零手册”,不能让用户理解有歧义,此外,一致性也是很重要的,比如输入内容校验规则,页面展示风格,类似模块的交互等等。
安全性需求
用户在身份认证、授权控制、私密性等方面的要求。是否存在SQL注入攻击,如何防范XSS攻击等。
兼容性需求
用户对软件系统运行环境的要求,比如是否需要兼容IE8、IE9,这也是比较头大的问题,需要一开始就要确认清楚,而不是开发过程中再去考虑。
外部接口
用户对待开发软件系统与其他软件系统或硬件设备之间的接口的要求。
在产品开发之前,建议把产品需要考虑的非功能性需求列一个清单,而不是再开发完成之后,再去梳理应该要去考虑补全各种非功能性需求和安全问题。