温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

软件质量模型

发布时间:2020-02-27 03:15:27 来源:网络 阅读:8532 作者:longsam 栏目:软件技术

什么是软件质量?

信息源:

  • https://en.wikipedia.org/wiki/Software_quality
  • http://iso25000.com/index.php/en/iso-25000-standards/iso-25010
  • https://www.iso.org/standard/35733.html
  • http://it-cisq.org/standards/
  • http://it-cisq.org/
  • http://www.sacinfo.cn/
  • http://www.sacinfo.cn/s/std_stdInfo?sid=A00008:20:035733#
  • ...

狭义上来说, 软件产品的质量就是满足需求的程度,这里的需求包含功能需求与非功能需求。

但是这样定义只能是软件产品开发公司内部的认知,很多时候产品好不好由最终用户说了算,所以广义上还需要再加一条: 用户体验良好程度。

用户体验带有强烈的主观性,需要大量的反馈数据才能准确评估。

为什么要进行软件质量管理?

代码是人写的,人无完人,人易犯错,而软件开发又是高度复杂的过程,软件存在质量问题是必然的。

但是我们又不希望交互到客户或用户手中的软件漏洞百出,体验极差。

唯一能平衡这两者之间关系的就是合适的软件质量管理。

虽然一个软件的质量达到100%几乎不可能,但是我们的质量管理要冲着100%来,才能保证最终的质量足够好。

所谓足够好,带有一定的主观色彩,特别是用户体验部分,这是合理的。至于最终的足够好到底是多好,则是由质量管控人员设定的。

对于足够好的描述,纬度必须足够充分,数据足够量化,这是下面软件质量评估要讲的内容。

如何评估软件产品的质量?

要进行软件质量评估,必须具备如下前提:

  • 目标质量有足够清晰明确的描述
  • 合适的评估手段

对于第一点,需要对软件质量进行合理的纬度划分,以及每个维度的合理量化,称为软件质量模型。

对于第二点,则需要合适评估工具与评估流程。

软件质量模型(software quality model)

软件质量与评估如此重要,自然有机构已经对此做过深入研究,相应的软件质量模型也达到一定标准。

比较著名的是ISO/IEC的SQuaRE, 和CISQ。

SQuaRE定义了较为面面俱到的软件质量标准,CISQ则侧重于软件质量的评估,后者基于SQuaRE,但是只选取了其中主要的4种质量特性再加上自己定义的size特性。

对于完整的SQuaRE和CISQ质量模型,如果读者感兴趣,可以从ISO官网查看或下载。本文将依据SQuaRE和CISQ,结合自身经验,进行裁剪和定制,最终形成的质量特性入下:

  • 功能适宜性(functional suitability)
    • 功能完整性(functional completeness)
    • 功能正确性(functional correctness)
    • 功能方便性(functional appropriateness): 用户通过软件完成其目标的方便程度
    • 界面舒适性(UI comfort)
    • 操作流畅性(smooth): 强调界面过度的平滑程度
  • 可靠性(Reliability)
    • 可用性(availability): 正常交互/数据下,软件维持正常功能的能力
    • 容错性(fault tolerance): 异常交互/数据下,软件维持正常功能的能力
    • 可恢复性(recoverability): 在已经出现异常或错误的情况下,软件恢复数据,状态与功能的能力
  • 性能(performance efficiency)
    • 时间特性(time behaviour): 时间相关的性能
    • 资源占用率(resource utilization):rom, ram, cpu, gpu, port等
    • 容量(capacity): 软件能力在空间上的边界
  • 安全性(security)
    • 机密性(confidentiality): 数据或功能只给授权用户访问的能力
    • 问责性(accountability): 操作与数据可被追踪的能力
  • 可维护性(maintainability)
    • 可分析性(analysability): 易于被分析的能力
    • 可修复性(fixability): 已知问题易于被修复的程度
    • 可更新(updatable): 更新的方便程度
    • 可扩展性(extensibility): 不重新发版的情况下,进行能力替换或扩展
    • 可配置性(configurability)

以上特性实际上只有两个等级的划分,对于实际操作来说,还处于一种抽象的层面,要进行真正的评估,还需要进一步细化为通用的checklist。

  • 功能适宜性: 功能完整性
    • 是否覆盖所有主要case
    • 需求明确提出的case覆盖比例
    • 隐含case覆盖量
  • 功能适宜性: 功能正确性
    • 所有case(明确与隐含)的正确比例
  • 功能适宜性: 功能方便性
    • 所有case的完成步骤的简化程度
  • 功能适宜性: 界面舒适性
    • 页面布局的合理程度
    • 页面配色的合理程度
    • 页面图形与元素设计的合理程度
  • 功能适宜性: 操作流畅性
    • 界面变化的动画化程度
    • 动画时间的合理程度
    • 动画的流畅程度
    • 动画的平滑程度
  • 可靠性: 可用性
    • 所有正常case正确执行的程度
  • 可靠性: 容错性
    • 异常case时,能够自我保护
    • 异常case后,正常case能够正常执行
  • 可靠性: 可恢复性
    • 出现未捕获异常时功能能够自动恢复正常
    • 出现为捕获异常时数据能够自动恢复正常
    • 一个case出现偶现错误时,重新进入能够恢复正常
    • 一个case出现错误时,不影响其他case
  • 性能: 时间特性
    • 操作响应时间
    • 多计算任务处理时间
    • IO任务处理时间
    • 操作吞吐率
    • 数据吞吐率
  • 性能: 资源占用
    • rom
    • ram
    • port
    • cpu
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI