• 非功能需求 in 系统分析与设计


      软件产品的需求可以分为功能性需求和非功能性需求,其中非功能性需求是常常被轻视,甚至被忽视的一个重要方面。其实,软件产品非功能性定义不仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是使产品在非功能性需求面前捉襟见肘,甚至淹没功能性需求给用户带来的价值。
     
    所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。下面对其中的某些指标加以说明。
    1、功能性
    功能性指与一组功能及其指定的性质有关的一组属性,这里的功能是指满足明确或者隐含的需求的那些功能。具体包括:
    • 适合性:与规定任务能否提供一组功能,以及这组功能的适合程度有关的软件属性,例如面向任务系统中由子功能构成的功能是否合适,表容量是否合适等等。
    • 准确性:与能否得到正确或者相符的结果或者效果有关的软件属性。
    • 互操作性:与其他指定系统进行交互的能力有关的软件属性。
    • 依从性:使软件遵循有关的标准约定法规及类似规定的软件属性。
    • 安全性:即与防止对程序技术局的非授权的故意或者意外访问的能力有关的软件属性。如用户权限、动态口令、数据库字段加密等。
    对于这组非功能需求来说,绝大部分是满足功能需求的情况,他并不需要采用额外的措施,而安全性是一个例外,它会涉及具体的技术性功能需求。
     
    2、可靠性
    可靠性之与在规定的一段时间和条件下软件维持其性能水平的能力有关的一组属性。具体包括:
    • 成熟性:与有软件故障引起失效的频度有关的软件属性。
    • 容错性:与在软件故障或违反指定接口的情况下维持规定的性能水平的能力有关的软件属性。如离线录入支持等。
    • 易恢复性:与在是小发生后重建其性能水平并恢复直接受影响数据的能力,以及为达到此目的所需时间和努力有关的软件属性。如表单数据自动保存等。
    这类非功能需求通常是全局的,他除了与系统运行环境、平台选择、代码质量相关之外,还会涉及部分技术性功能需求,他别是容错性、易恢复性的实现都需要一些具体的功能来支持。
     
    3、易用性
    易用性是与一组规定或者潜在的用户为使用其软件所需做的努力和对这样的使用所作的评价有关的一组属性。具体包括:
    • 易理解性:与用户为人质逻辑概念即其应用范围所花的努力有关的软件属性。
    • 易学习性:与用户为学习软件应用所花的努力有关的软件属性。
    • 易操作性:与用户为操作和运行控制所花的努力有关的软件属性。如带首字母筛选功能的下拉列表等。
    这类非功能需求是与UI设计、联机帮助系统有着直接关系的,易理解性和易学习性通常和界面导航、联机帮助有关,课归纳为界面友好性;易操作性则会和界面元素设计有关。也就是说这类属性会关联到具体的技术性功能需求。
     
    4、效率
    效率是指与在规定的条件下软件的性能水平与所使用资源量有关的一组属性。具体如下:
    • 时间特性:与软件执行器功能时响应和处理时间及吞吐量有关的软件属性。如数据缓存等。
    • 资源特性:与在软件执行其功能时所使用的资源数量及其使用时间有关的软件属性。如数据压缩等。
    这部分实际上就是通常所说的性能需求,他有一大部分是局部性的,在每个用力的描述中应该指出;另外它又会引申出一些相关的技术性功能需求,例如数据缓存等。
     
    5、维护性
    维护性是指与进行指定的修改所需的努力有关的一组属性。具体包括:
    • 易分析性:与为诊断缺陷或者失效原因及为判定待修改的部分所需努力有关的软件属性。如日志记录系统等。
    • 易改变性:与进行修改排除错误或者适应环境变化所需努力有关的软件属性。
    • 稳定性:与修改所造成的未预料结果的风险有关的软件属性。
    • 易测试性:与确认已修改软件所需的努力有关的软件属性。
    这部分通常是开发团队最容易投入时间和成本的地方,诸如动态属性支持、UI界面生成、流程引擎等都是为了提高系统的可维护性,因此它显然是会引申出相关的技术性功能需求的。
     
    6、可移植性
    可移植性是指与软件可从某一环境转移到另一环境的能力有关的一组属性。具体包括:
    • 适应性:与软件无需采用有别于为该软件准备的活动和手段就可能适应不同的规定环境有关的软件属性。如全球技术支持等。
    • 易安装性:与在指定的环境下安装软件所需努力有关的软件属性。如在线更新、安装包自动生成等。
    • 遵循性:使软件遵循与可移植性有关的标准或约定的软件属性。
    • 可替换性:与软件在该环境中用来替代指定的其他软件的机会和努力有关的软件属性。
    这部分除了需要通过选择正确的开发工具、平台来支持外,也会涉及一些技巧性的功能需求,如全球语言支持等。
     
    ===============================我是分割线=======================================================

    软件产品的需求可以分为功能性需求和非功能性需求,其中非功能性需求是常常被轻视,甚至被忽视的一个重要方面。其实,软件产品非功能性定义不仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是使产品在非功能性需求面前捉襟见肘,甚至淹没功能性需求给用户带来的价值。

    所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。下面对其中的某些指标加以说明。

    1.系统的完整性

    系统的完整性指为完成业务需求和系统正常运行本身要求而必须具有的功能,这些功能往往是用户不能提出的,典型的功能包括联机帮助、数据管理、用户管理、软件发布管理和在线升级等。

    并不是所有的系统都必须包括以上所有的功能,而是可以根据产品的使用环境和企业的产品发展决策进行挑选。例如,在线升级、软件发布管理适用于具有Internet或内网环境的软件产品;数据管理对于产生数据存储的产品则是必须的,设计人员不应假设用户同时是一个合格的DBA。而且系统所产生信息的分布和关系,也不是DBA所应该了解的内容。因此完整的系统应该包括数据备份、恢复、日志管理及垃圾数据清除等基本功能,哪怕这些功能的核心只是一条语句或命令;用户管理功能是另一项必不可少的功能,它定义哪些用户可以以什么样的功能使用系统。好的用户管理功能不仅可以有效控制用户对系统的使用,使系统处于一个安全且负载合理的运行状况,还能提高系统的应用适应性。

    2.系统的可扩充性与可维护性

    指系统对技术和业务需求变化的支持能力。当技术变化或业务变化时,不可避免将带来系统的改变。不仅要进行设计实现的修改,甚至要进行产品定义的修改。好的软件设计应在系统架构上考虑能以尽量少的代价适应这种变化,常用的技术有面向对象的分析与设计及设计模式。

    3.技术适应性与应用适应性

    系统的适应性与系统的可扩充性和可维护性的概念相似,也表现产品的一种应变能力,但适应性强调的是在不进行系统设计修改的前提下对技术与应用需求的适应能力,软件产品的适应性通常表现为产品的可配置能力。好的产品设计可能要考虑到运行条件的变化,包括技术条件(网络条件、硬件条件和软件系统平台条件等)的变化和应用方式的变化,如在具体应用中界面的变化、功能的剪裁、不同用户的职责分配和组合等。

    对以上重要的非功能性需求进行逐一分析后,即可开始进行产品功能设计。实际上,非功能性需求定义将反映到系统的功能设计中,表现为系统的架构。

  • 相关阅读:
    [转] iphoneX、iphoneXS、iphoneXSMax、iphoneXR适配
    [转] 以 async/await 为例,说明 babel 插件怎么搭
    [转] 使用Node.js实现简易MVC框架
    [转] vue异步处理错误
    [转] 谈谈前端异常捕获与上报
    everything 13问
    Mysql 工具mysqlbinlog
    Mysql 删除日志
    Mysql 错误 ERROR 1 (HY000) at line 1: Can't create/write to file '/home/kaizenly/cfg_dict.csv' (Errcode: 13
    Mysql 问题集
  • 原文地址:https://www.cnblogs.com/daocaowu/p/3399060.html
Copyright © 2020-2023  润新知