目录
其他质量属性Other Quality Attributes Outline
1. Other Important Quality Attributes
2.Other Categories of Quality Attributes
0.前言
本系列文章旨在软件设计与体系结构的知识点,资料来源四川大学授课内容,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。加粗部分为重点。

易用性Usability
易用性Usability定义:易用性与用户完成预期任务的难易程度以及系统提供的用户支持类型有关;易用性是提高系统质量最便宜、最简单的方法
易用性的组成:
- Learning system features学习系统的特点
- Using a system efficiently有效使用系统
- Minimizing the impact of errors将错误的影响降至最低
- Adapting the system to user needs使系统适应用户需求
- Increasing user’s confidence and satisfaction提高用户的信心和满意度
易用性的通用质量属性:
用户下载了一个新的应用程序,并在试用两分钟后有效地使用了它。
3.易用性的战术
运行时易用性策略的目标是让用户完成预期任务
3.1 分离用户界面Separate the User Interface
①建筑师使系统可用,以便于通过原型对用户界面进行实验
②建立多个原型,让真正的用户体验界面并提出反馈意见
③最好的方法是设计软件,使用户界面可以快速更改
分割的方法:
①增强语义连贯性、封装和共同定位相关责任,从而实现用户界面责任的本地化
②限制依赖性,当用户界面发生变化时,最大限度地减少对其他软件的连锁反应
③推迟绑定,让你做出关键的用户界面选择
MVC 是一种主流分离模式
3.2 两种易用性战术
①支持用户主动性:用户主动提出请求,系统反馈处理结果
②支持系统主动性:系统维护用户模型,主动响应用户请求
- Cancel取消:当用户发出取消命令时,系统必须监听该命令,cancel包括:被取消的命令必须终止、必须释放被取消命令使用的任何资源、必须通知与取消命令协作的组件
- Undo撤销:为了支持撤消操作,系统必须保持足够的系统状态信息,以便恢复之前的状态。但并非所有操作都能轻易撤销,例如发射火箭。
- Pause/Resume暂停/回复:当用户启动了一个长期运行的操作时,提供暂停和恢复操作的功能通常非常有用。
- 要有效地暂停长期运行的操作,就必须具备暂时释放资源的能力,以便将资源重新分配给其他任务
- Aggregate聚合:当用户执行重复操作或以相同方式影响大量对象的操作时,提供将低级对象聚合为一个组的功能是非常有用的,这样操作就可以应用于该组。
- 聚合就像批处理文件一样
- Maintain Task Model维护任务模型:任务模型用于确定上下文,以便系统了解用户正在尝试什么并提供帮助。
- Maintain User Model维护用户模型:该模型明确表示用户对系统的了解、用户在预期响应时间方面的行为,以及用户或某类用户特有的其他方面
- Maintain System Model维护系统模型:系统维护自身的明确模型,用于确定预期的系统行为,以便向用户提供适当的反馈。
4.易用性的设计
The design for Usability include:Allocation of responsibilities责任分配;Coordination model协调模式
Data model数据模型;Mapping among architectural elements架构要素之间的映射;Resource management资源管理;Binding time绑定时间;Choice of technology技术选择
其他质量属性Other Quality Attributes Outline
1. Other Important Quality Attributes
①Variability可变性
可变性是可修改性的一种特殊形式。它指的是系统及其支持工件(如需求、测试计划和配置规范)支持以预先计划的方式生成一系列彼此不同的变体的能力
可变性用于软件产品线;产品线是指核心资产适应产品线范围内不同产品环境的能力
②Portability可移植性
可移植性是可修改性的一种特殊形式。它指的是为在一个平台上运行而构建的软件可以很容易地修改为在另一个平台上运行。
要实现可移植性,就要尽量减少软件中的平台依赖性,将依赖性隔离到明确的位置,并将软件编写成可在 "虚拟机 "上运行的软件
③Development distributability开发分布性
开发分布性是指设计软件以支持分布式软件开发的质量。
如今,许多系统都是通过全球分布式团队开发的。
分布式开发必须克服协调问题;设计系统时应尽量减少团队间的协调;代码和数据模型都需要实现最低限度的协调
④Scalability (elasticity)可扩展性(弹性)
可扩展性是可修改性的一种特殊形式。两种可扩展性:
横向可扩展性是指为逻辑单元增加更多资源
纵向可销售性是指为物理单元增加更多资源
可扩展性必须解决如何有效利用新增资源的问题;有效意味着额外资源可显著提高系统质量,无需为增加资源付出过多努力,也不会中断运行。
在云环境中,横向可扩展性被称为弹性elasticity。弹性是一种使客户能够从资源池中添加或删除虚拟机的特性。
⑤Deployability可部署性
可部署性与可执行文件如何到达主机平台以及随后如何调用有关。
部署方案将涉及更新类型(推送或拉取)、更新形式(媒介,如 DVD 或互联网下载。
⑥Mobility移动性
移动性涉及移动问题和平台的承受能力(如尺寸、显示屏类型、输入设备类型、带宽的可用性和容量以及电池寿命)。
移动性方面的问题包括:电池管理;断开连接后的重新连接;支持多平台所需的不同用户界面数量
⑦Monitorability可监控性
可监控性涉及运维人员在系统执行过程中监控系统的能力。
监控软件内部状态,如队列长度、平均事务处理时间和各种组件的健康状况。
问题:该质量属性属于哪个质量属性?
⑧Safety安全性
软件安全是指软件有能力避免进入会造成或导致参与者受损、受伤或丧生的状态。
安全性涉及危险故障的预防和恢复;安全性策战术与可用性战术重叠
2.Other Categories of Quality Attributes
除产品质量外,还有一些其他类型的质量属性可以衡量最终产品以外的其他方面的好坏:架构的概念完整性;在使用的质量;适销性Marketability
2.1 Conceptual Integrity of the Architecture
概念完整性是指体系结构设计的一致性,它有助于提高体系结构的可理解性,减少混淆错误。概念完整性要求在架构中以相同的方式完成相同的事情
在具有概念完整性的架构中,少即是多
2.2 Quality in Use
使用中的一些质量如下:
有效性Effectiveness:正确地构建系统(需求)和构建正确的系统(用户意愿)
效率Efficiency:开发一个系统所需的精力和时间
无风险Freedom from risk:产品或系统对经济状况、人类生命和健康等的影响程度。
2.3 Marketability适销性
有些系统因其架构而广为人知,而这些架构有时也有其自身的含义
当前构建基于云的系统的热潮告诉我们,对架构的认知可能比架构所带来的品质更重要
3.是否要使用标准的质量属性表
该标准列出了以下质量属性:
功能适用性Functional suitability(功能完整性、正确性和适当性)
性能效率Performance efficiency(时间行为、资源利用率和容量)
兼容性Compatibility(共存互操作性)
易用性Usability(适宜性、可识别性、可学习性、可操作性、用户错误预测、用户界面美学、可访问性)
可靠性Reliability(成熟度、可用性、容错性、可恢复性)
可移植性Portability(适应性、可安装性、可替换性)
安全性Security(保密性、完整性、不可抵赖性、责任性、真实性)
可维护性Maintainability (模块性、可重用性、可分析性、可修改性、可测试性)
4.处理 "X 能力": 引入新的质量属性
4.1 处理未知的质量属性
①捕捉新质量属性的应用场景:通过与利益相关者面谈来捕捉情景,从而建立一套属性特征库
②汇集新质量属性的设计方法
③为新质量属性建模
④为新质量属性制定一套战术
有两个来源可用于为任何质量属性推导战术:
模型Model:列举模型参数,针对每个参数,列举架构决策(战术)
专家Experts:采访该领域的专家,然后总结
⑤为新质量属性构建设计检查表