软件质量属性

软件质量属性

  • 软件质量属性的概念
    • 质量属性的含义
    • 软件质量属性分类
    • 质量属性场景(重要)
  • 功能正确性
  • 设计时质量属性
    • 1.概念完整性
    • 2.可维护性
    • 3.可重用性
  • 运行时质量属性
    • 1.可用性(重要)
    • 2.互操作性
    • 3.可管理性
    • 4.性能
    • 5.可靠性(重要)
    • 6.可伸缩性
    • 7.安全性
  • 系统质量属性
    • 1.可支持性
    • 2.可测试性
  • 用户质量属性
    • 1.易用性
  • 其他质量属性

软件质量属性的概念

质量属性的含义

软件质量属性(Quality Attribute)指的是一个系统的可度量、可测试的属性,这些属性会影响到系统的运行时行为、系统设计方式以及用户的体验等。质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量

属于非功能性需求,并不被功能所决定

质量属性之间可能相互抑制,要保证高优先级的质量属性

软件质量属性分类

软件质量属性_第1张图片

质量属性场景(重要)

下图为质量属性需求说明:
软件质量属性_第2张图片
软件质量属性_第3张图片
举例说明:
在生活中,常见的驾驶加速操作就可用质量属性场景描述,如下图所示:
软件质量属性_第4张图片
刺激源是司机,刺激是踩油门,环境是超车、爬坡,制品是动力系统,响应是发动机转速提高,响应度量是时速表

功能正确性

正确性是软件按照需求正确执行任务的能力

设计时质量属性

1.概念完整性

①概念完整性的质量属性场景
软件质量属性_第5张图片
②概念完整性常见问题及解决方案

  • 缺乏一致的开发过程
  • 软件生命周期中参与的不同小组之间缺乏协作和沟通
  • 缺乏设计和编码标准
  • 存在一些已有(遗留)的系统

2.可维护性

①可维护性的质量属性场景
软件质量属性_第6张图片
②可维护性常见问题及解决方案

  • 组件和层之间过度的依赖,以及对具体类不恰当的耦合都会增加替换、更新和修改的难度/考虑把系统设计为定义明确的层或关注点或者考虑通过使用抽象(比如抽象类或接口)
  • 使用直接的通信方式,使得组件和层的物理部署进行改动变得困难/考虑通过设计一些使用插件模块或适配器的接口,实现插件式架构
  • 对于诸如身份验证和授权等特性,如果依赖自定义的实现,那么会阻碍重用性和可维护性/尽可能使用平台内置的功能和特性来避免这个问题
  • 组件和片段逻辑代码不够内聚,使得替换变得困难,并且造成了对其它组件不必要的依赖/需要将组件设计成**“高内聚,低耦合”**
  • 缺乏文档,会阻碍重用、管理以及将来的升级/应该确保提供了文档/至少也应该介绍应用程序的整体结构

3.可重用性

①可重用性的质量属性场景
软件质量属性_第7张图片
②可重用性常见问题及解决方案

  • 使用了不同的代码或组件在多个地方实现相同的功能/要检查应用程序设计并确定公共功能,在独立的组件中实现这些功能以便重用;检查应用程序设计确定诸如验证、日志和身份验证等横切(cross)关注点,在独立组件中实现这些功能
  • 使用了多个相似的方法来实现相似的任务/应该使用一个方法,通过参数的变化来实现行为的变化
  • 使用了几个系统来实现相同特性或功能,而不是在另外一个系统中,或是跨多个系统、跨应用程序中的不同子系统来共享或重用功能/考虑通过服务接口从组件、层以及子系统暴露功能,供其他层和系统使用。考虑使用平台无关的数据类型和数据结构,这样不同的平台都可以访问和识别

运行时质量属性

1.可用性(重要)

①可用性公式表示
定义了系统正常运转并发挥功能的时间比例
通过总的系统失败时间在预定义周期中的百分比来衡量

可用性与系统故障及其后果相关,可表示为:
软件质量属性_第8张图片
其中,MTBF为平均故障间隔时间,MTTR为平均修复时间
如下为MTBF的计算方法:
软件质量属性_第9张图片
例题:
软件质量属性_第10张图片
现在要求求可用性的大小:
如图可知,在运行期间一共宕机12次,也就是说出了12次的故障,总故障时间为112.5小时,所以MTTR(平均修复时间)=9.4,MTBM为总的运行时间除以故障的次数也就是平均故障间隔时间,等于683.4
软件质量属性_第11张图片

②可用性涉及的关键问题及解决策略

③可用性的质量属性场景
软件质量属性_第12张图片
④场景样例
在正常操作期间,进程收到了一个未曾预料到的消息。该进程通知操作人员收到了这一消息,并继续操作(没有停机)
根据质量属性场景对该情况进行分析:
刺激源为系统外部,刺激是未曾预料到的消息,制品是进程,环境是正常操作,响应是通知操作人员继续操作,响应度量是没有停机
软件质量属性_第13张图片

2.互操作性

①互操作性的质量属性场景
软件质量属性_第14张图片
②互操作性的关键问题

3.可管理性

①可管理性是指查看和修改指定系统或软件状态的能力,它描述了系统管理员管理应用程序的难易程度
②可管理性的四个方面
系统配置
系统优化
系统诊断
系统防护
③可管理性的质量属性场景
软件质量属性_第15张图片

4.性能

①性能的质量属性场景
软件质量属性_第16张图片
②影响性能的关键问题

5.可靠性(重要)

①可靠性函数
软件质量属性_第17张图片
θ可以是MTBF或MTTF(mean time to failure,平均失效前时间)
根据概率论,可靠度有以下性质:
R(0)=1表示产品在开始处于良好状态
R(t)是时间t的单调递减函数,即t增大,R(t)减小,当时间t充分大时可靠度的值趋于零
0≤R(t)≤1,即无论任何时刻,可靠度的值永远介于0和1之间。

例题:
软件质量属性_第18张图片
时间统一换算为小时,t的单位要和MTBF的单位对应
软件质量属性_第19张图片
②软件缺陷、软件错误、软件故障
③可用性和可靠性比较
可靠性通常低于可用性,因为可靠性要求系统在[0,t]的整个时间段内正常(必须是连续)运行
可用性大于或等于可靠性,对于可用性,要求就没有那么高,系统可以发生故障,然后在时间段[0,t]内修复。修复以后,只要系统能够正常运行,它仍然计入系统的可用性
④可靠性的质量属性场景
软件质量属性_第20张图片
⑤影响可靠性的关键问题

6.可伸缩性

①可伸缩性定义
可伸缩性是一种衡量软件系统适应系统规模(用户数量、数据量、网络节点)增长的能力,目标是在负载增加情况下维护系统的可用性、可靠性和性能
②垂直伸缩、水平伸缩
③可伸缩性的质量属性场景
软件质量属性_第21张图片

7.安全性

①安全性定义
安全性指系统防止恶意行为或系统设计的使用方式之外行为,以及防止信息泄露和丢失的能力
②安全性的质量属性场景
软件质量属性_第22张图片
安全性场景样例
一个经过身份验证的个人,试图从外部站点修改系统数据;系统维持了一个审核跟踪,并在一天内恢复了正确的数据
刺激源是通过了身份验证的个人,刺激是试图修改系统数据,环境是在正常操作下,响应是系统保持审核跟踪,响应度量是在一天内恢复校正数据
③影响安全性的关键问题

系统质量属性

1.可支持性

①可支持性定义
可支持性是系统在不正常工作的情况下提供信息以确定和解决问题的能力
②可支持性涉及的关键问题
缺乏调试信息
缺乏故障排查工具
缺乏跟踪工具
缺乏健康监控
③可支持性的质量属性场景
软件质量属性_第23张图片

2.可测试性

①可测试性定义
软件可测试性是指通过测试(通常是基于运行的测试)揭示软件缺陷的容易程度
②可测试性的质量属性场景
软件质量属性_第24张图片
可测试场景样例
单元测试人员在一个已完成的系统构件上执行单元测试,该构件为控制其行为和观察其输出提供了一个接口,在3小时内测试了85%的路径
刺激源是单元测试人员、刺激是执行单元测试、制品是系统构件、环境是在构件完成时、响应是构件具有控制行为的接口,并且构件的输出是可观察的、响应度量是在3小时内测试了85%的路径

用户质量属性

1.易用性

①易用性定义
易用性是一种有关用户体验(User Experience)质量的描述

易用性包含:

  • 易理解性:文档、功能名称、图标、提示信息等
  • 易学习性:文档详尽、操作一目了然
  • 易操作性:人机界面友好、界面设计科学合理以及操作简单等
    ②易用性质量属性场景
    软件质量属性_第25张图片
    易用性场景样例
    想把错误的影响降到最低的用户,希望在运行时取消用户的操作,取消在1秒内发生
    刺激源是用户、刺激是把错误的影响降到最低、制品是系统、环境是运行时、响应是希望取消当前操作、响应度量是取消在1秒内完成
    ③影响易用性的关键问题

其他质量属性

你可能感兴趣的:(软件体系结构,软件工程)