软件构造基础及过程Part2——质量指标

本文深入探讨软件系统的质量特性,包括外部和内部质量因素,以及重要外部质量因素如正确性、健壮性、可扩展性、可重用性、兼容性、效率、可移植性、易用性、功能性、及时性等。同时,分析了圈复杂度、耦合度等内部质量因素,并讨论了质量属性之间的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

软件系统的质量特性Quality properties
  • External vs. internal quality factors 外部和内部质量因素
  • Important external quality factors 重要的外部质量因素
  • Tradeoff between quality factors 质量因素之间的权衡
软件构造的五个关键质量目标
  • Easy to understand: elegant and beautiful code / understandability –易于理解:优雅美观的代码/可理解性
  • Ready for change: maintainability and adaptability –准备好改变:可维护性和适应性
  • Cheap for develop: design for/with reuse: reusability –开发成本低:设计/重用:可重用性
  • Safe from bugs: robustness –避免错误:健壮性
  • Efficient to run: performance –高效运行:性能
目标:

了解软件构造关心的质量因素
理解质量目标无法完成的后果
了解课程中每个质量因素对应的构造技术

正文

外部质量因素与内部质量因素的差异与关系:
  • 诸如速度或易用性等质量,其在软件产品中的存在与否可由其用户检测(不仅是实际与最终产品交互的人,还包括购买软件或外包其开发的人)。
  • 外部质量是用户能够感受到的,影响用户的使用
  • 其他适用于软件产品的质量,例如模块化或可读性,都是内部因素,仅对访问实际软件文本的计算机专业人员可见。内部质量影响使用代码的相关人员,影响软件本身和开发者
  • 只有外部因素才重要
  • 但实现这些外部因素的关键在于内部因素:为了让用户享受可见的品质,设计师和实施者必须采用内部技术,以确保隐藏的品质。
  • External quality factors affect users. 外部质量因素影响用户。
  • Internal quality factors affect the software itself and its developers. 内部质量因素影响软件本身及其开发人员。
  • External quality results from internal quality. 外部质量源于内部质量。
External quality factors 外部质量因素
1. Correctness 正确性
  • 正确性是软件产品能够正确的执行任务的能力,是首要的质量目标。保证正确性的途径是有条件的
  • 一个软件系统设计多个层面,所以不可能仅仅靠每个构件和属性的正确性来保证整体的正确性,各层之间是相互依赖的
  • 假定一个软件系统是分层开发的,每层都要确保自己是正确的,同时假定其调用的低层也是正确的
  • 保证正确性的途径:测试(Testing)和调试(Debugging)
  • 防御性编程,如Typing(类型化/静态类型检查)和Assertions(断言),旨在帮助构建从一开始就正确的软件,而不是将其调试成正确的软件。(防患于未然)
  • 正式方法:“检查”、“保证”和“保证”—正式项目规范和验证的数学技术研究生课程
2. Robustness 健壮性
  • 健壮性是软件系统对异常情况做出适当反应的能力
  • 正确性解决了系统在其规范所涵盖的情况下的行为,而健壮性描述了在该规范之外发生的事情
  • 健壮性是确保如果出现此类情况,系统不会导致catastrophic(灾难性)事件;它应生成适当的错误消息,干净地终止执行,或进入所谓的graceful degradation(优雅降级)模式。
  • 健壮性同abnormal case(异常情况)相关,异常或非异常取决于程序的规格说明,异常情况是程序的规格说明中没有涉及的部分

abnormal case(异常情况):

  • 异常情况只是规范中没有涉及的情况。异常情况是程序的规格说明中没有涉及的部分
  • “正常”在这个意义上并不意味着“可取”,而是简单地“计划在软件设计中”
  • 尽管一开始错误输入被称为正常情况似乎是矛盾的(相反的),但任何其他方法都必须依赖主观标准,因此是无用的
  • 判断是否是异常的标准,不取决于客观的正确标准,而取决于程序的规格说明
3. Extendibility 可扩展性
  • 可扩展性是指软件易于调整以适应变化的能力
  • 可扩展性问题是规模问题之一。可扩展性同规模型密切相关
  • 对于小程序来说,更改通常不是一个困难的问题;但是随着软件的增长,它变得越来越难适应
  • 大型软件系统通常把维护者视为一个巨大的卡片库,在其中拉出任何一个元素都可能导致整个大厦(大厦)倒塌(越大越难以扩展)
  • 软件是易变的,需要可扩展性
  • 传统方法在最初的总结需求,假设没有变化,因此以适应变化。

两个提高可扩展性的原则:

  1. 简单的体系结构总是比复杂的体系更容易适应变化。
  2. 模块自治性越强,变化时对其余模块影响 越小。
4. Reusability 可复用性
  • 可重用性是软件元素为许多不同应用程序的构造服务的能力
  • 对可重用性的需求来自于对软件系统经常遵循类似模式的观察;应该可以利用这种共性,避免对以前遇到的问题重新设计解决方案
  • 通过捕获这样的模式,可重用的软件元素将适用于许多不同的开发
  • 总结:软件通常会遇到相似的模式,利用共同性,避免重复实现
5. Compatibility 兼容性

兼容性是将软件元素与其他元素结合起来的简单性

  • 兼容性很重要,因为我们不在真空中开发软件元素:它们需要相互作用
  • 难点:不同软件有不同的设定/规定,例如,许多操作系统支持多种不兼容的文件格式。只有当文件格式兼容时,程序才能直接使用另一个结果作为输入
  • 兼容性的关键在于设计的同质性(一致性),以及就程序间通信的标准化约定达成一致

方法包括:

  • 与Unix系统一样,标准化文件格式,其中每个文本文件只是一系列字符
  • 标准化数据结构,如在Lisp系统中,所有数据和程序都由二进制树(在 Lisp 中称为列表)表示
  • 标准化用户界面,如各种版本的Windows、OS/2和MacOS,其中所有工具都依赖于基于标准组件(如Windows、图标、菜单等)与用户进行通信的单一范例
  • 通过定义标准化访问协议,向所有由软件。通过协议来实现更通用的兼容性
6. Efficiency 效率

效率是软件系统对硬件资源尽可能少的需求的能力,但前提是软件的正确性,并且需要与其他目标进行权衡。

7. Portability 可移植性

可移植性是指便于将软件产品转移到各种硬件和软件环境。

8. Ease of use 易用性
  • 用户可以轻松掌握软件的使用,也包括安装、运行和监控的容易度
  • 既方便初学者入门,也不影响熟练的用户直接使用
  • 一个关键是结构要简洁,理解用户,换位思考,站在用户的角度设计软件。
9. Functionality 功能性
  • 增加功能的同时也要防止陷入Featurism (often “creeping featurism”蠕变特征) 程序设计中一种不 适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其 结果是程序极为复杂、不灵活、占用过多的磁盘空间
  • 在质量提升技术的帮助下,可以在整个项目中保持质量水平不变,而不仅仅 是功能性
  • 通常设计时,首先实现一小部分功能并保证各种质量目标,逐渐增加功能并继续保证质量目标
10. Timeliness 及时性

及时性是指软件系统能够在用户需要时或者需要需要之前发布。

10++. Other qualities
  1. Verifiability 可验证性:是否易于验证
  2. Integrity 完整性:软件系统保护其各种组件(程序和数据)免受未经授权的 访问和修改的能力
  3. Repairability 可修复性:便于修复软件的缺点
  4. Economy 经济性:同及时性相伴,是系统能够按照其分配的预算或低于预算完成的能力。
Internal quality factors 内部质量因素
  1. 圈复杂度:用来衡量一个模块判定结构的复杂程度
  2. 耦合度:设计中追求高内聚和低耦合
  3. 可读性、易理解性、清晰度
  4. 复杂度
  5. 体积

内部质量因素通常用作外部质量因素的部分度量。

Tradeoff between quality properties 质量属性之间的权衡

待添加……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值