非功能需求 in 系统分析与设计
-
适合性:与规定任务能否提供一组功能,以及这组功能的适合程度有关的软件属性,例如面向任务系统中由子功能构成的功能是否合适,表容量是否合适等等。
-
准确性:与能否得到正确或者相符的结果或者效果有关的软件属性。
-
互操作性:与其他指定系统进行交互的能力有关的软件属性。
-
依从性:使软件遵循有关的标准约定法规及类似规定的软件属性。
-
安全性:即与防止对程序技术局的非授权的故意或者意外访问的能力有关的软件属性。如用户权限、动态口令、数据库字段加密等。
-
成熟性:与有软件故障引起失效的频度有关的软件属性。
-
容错性:与在软件故障或违反指定接口的情况下维持规定的性能水平的能力有关的软件属性。如离线录入支持等。
-
易恢复性:与在是小发生后重建其性能水平并恢复直接受影响数据的能力,以及为达到此目的所需时间和努力有关的软件属性。如表单数据自动保存等。
-
易理解性:与用户为人质逻辑概念即其应用范围所花的努力有关的软件属性。
-
易学习性:与用户为学习软件应用所花的努力有关的软件属性。
-
易操作性:与用户为操作和运行控制所花的努力有关的软件属性。如带首字母筛选功能的下拉列表等。
-
时间特性:与软件执行器功能时响应和处理时间及吞吐量有关的软件属性。如数据缓存等。
-
资源特性:与在软件执行其功能时所使用的资源数量及其使用时间有关的软件属性。如数据压缩等。
-
易分析性:与为诊断缺陷或者失效原因及为判定待修改的部分所需努力有关的软件属性。如日志记录系统等。
-
易改变性:与进行修改排除错误或者适应环境变化所需努力有关的软件属性。
-
稳定性:与修改所造成的未预料结果的风险有关的软件属性。
-
易测试性:与确认已修改软件所需的努力有关的软件属性。
-
适应性:与软件无需采用有别于为该软件准备的活动和手段就可能适应不同的规定环境有关的软件属性。如全球技术支持等。
-
易安装性:与在指定的环境下安装软件所需努力有关的软件属性。如在线更新、安装包自动生成等。
-
遵循性:使软件遵循与可移植性有关的标准或约定的软件属性。
-
可替换性:与软件在该环境中用来替代指定的其他软件的机会和努力有关的软件属性。
软件产品的需求可以分为功能性需求和非功能性需求,其中非功能性需求是常常被轻视,甚至被忽视的一个重要方面。其实,软件产品非功能性定义不仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是使产品在非功能性需求面前捉襟见肘,甚至淹没功能性需求给用户带来的价值。
所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。下面对其中的某些指标加以说明。
1.系统的完整性
系统的完整性指为完成业务需求和系统正常运行本身要求而必须具有的功能,这些功能往往是用户不能提出的,典型的功能包括联机帮助、数据管理、用户管理、软件发布管理和在线升级等。
并不是所有的系统都必须包括以上所有的功能,而是可以根据产品的使用环境和企业的产品发展决策进行挑选。例如,在线升级、软件发布管理适用于具有Internet或内网环境的软件产品;数据管理对于产生数据存储的产品则是必须的,设计人员不应假设用户同时是一个合格的DBA。而且系统所产生信息的分布和关系,也不是DBA所应该了解的内容。因此完整的系统应该包括数据备份、恢复、日志管理及垃圾数据清除等基本功能,哪怕这些功能的核心只是一条语句或命令;用户管理功能是另一项必不可少的功能,它定义哪些用户可以以什么样的功能使用系统。好的用户管理功能不仅可以有效控制用户对系统的使用,使系统处于一个安全且负载合理的运行状况,还能提高系统的应用适应性。
2.系统的可扩充性与可维护性
指系统对技术和业务需求变化的支持能力。当技术变化或业务变化时,不可避免将带来系统的改变。不仅要进行设计实现的修改,甚至要进行产品定义的修改。好的软件设计应在系统架构上考虑能以尽量少的代价适应这种变化,常用的技术有面向对象的分析与设计及设计模式。
3.技术适应性与应用适应性
系统的适应性与系统的可扩充性和可维护性的概念相似,也表现产品的一种应变能力,但适应性强调的是在不进行系统设计修改的前提下对技术与应用需求的适应能力,软件产品的适应性通常表现为产品的可配置能力。好的产品设计可能要考虑到运行条件的变化,包括技术条件(网络条件、硬件条件和软件系统平台条件等)的变化和应用方式的变化,如在具体应用中界面的变化、功能的剪裁、不同用户的职责分配和组合等。
对以上重要的非功能性需求进行逐一分析后,即可开始进行产品功能设计。实际上,非功能性需求定义将反映到系统的功能设计中,表现为系统的架构。