本博客地址:https://security.blog.csdn.net/article/details/136565452
一. 软考系统质量属性
1、软件系统质量属性是一个系统的可测量或可测试的属性,基于软件系统的生命周期,可将软件系统的质量属性分为开发期质量属性和运行期质量属性
2、开发期质量属性
 ● 易理解性:指设计被开发人员理解的难易程度
 ● 可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称灵活性
 ● 可重用性:指重用软件系统或某一部分的难易程度
 ● 可测试性:对软件测试以证明其满足需求规范的难易程度
 ● 可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度
 ● 可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度
3、运行期质量属性
 ● 性能:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等
 ● 安全性:软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力
 ● 可伸缩性:当用户数和数据量增加时,软件系统维持高服务质量的能力
 ● 互操作性:软件系统与其他系统交换数据和相互调用服务的难易程度
 ● 可靠性:软件系统在一定的时间内持续无故障运行的能力
 ● 可用性:系统在一定时间内正常工作的时间所占比例
 ● 鲁棒性:软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性
4、面向架构评估的质量属性
 ● 性能:处理任务所需时间或单位时间内的处理量
 ● 可靠性:【容错】出现错误后仍能保证系统争取运行,且自行修正错误。【健壮性】错误不对系统产生影响,按既定程序忽略错误
 ● 可用性:正常运行的时间比例
 ● 安全性:系统向合法用户提供服务并阻止非法用户的能力
 ● 可修改性:【可维护性】局部修复使故障对架构的负面影响最小化。【可扩展性】因松散耦合更易实现新特性/功能,不影响架构。【结构重组】不影响主体进行的灵活配置。【可移植性】适用于多样的环境(硬件平台、语言、操作系统等)
 ● 功能性:需求的满足程度
 ● 可变性:总体架构可变
 ● 互操作性:通过可视化或接口方式提供更好的交互操作体验
5、可用性。提升可用性的策略可以从以下几个方面考虑:
 ● 错误检测:心跳、Ping/Echo、异常。
 ● 错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。
 ● 错误避免:服务下线、事务、进程监控器。
6、性能。提升性能的策略可以从以下几个方面考虑:
 ● 资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
 ● 资源管理:并发机制、增加资源。
 ● 资源仲裁:先来先服务、固定优先级、动态优先级、静态调度。
7、可修改性。提升性能的策略可以从以下几个方面考虑:
 ● 局部化修改:高内聚低耦合、预测变更、使模块通用。
 ● 防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
 ● 推迟绑定时间:运行时注册、多态、配置文件。
8、安全性。提升安全性的策略可以从以下几个方面考虑:
 ● 抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。
 ● 检测攻击:入侵检测系统。
 ● 从攻击中恢复:恢复状态、识别攻击者。
9、质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。
二. 系统架构评估
1、系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策,通常分为:
 ● 基于调查问卷或检查表的方法:缺点是很大程度上依赖于评估人员的主观判断。
 ● 基于场景的评估方法:应用在架构权衡分析法(ATAM)和软件架构分析方法(SAAM)中。
 ● 基于度量的评估方法:建立质量属性和度量之间的映射原则→在软件文档中获取度量信息→分析推导系统质量属性。
2、系统架构评估中的重要概念
 ● 敏感点:实现质量目标时应注意的点,是一个或多个构件的特性。
 ● 权衡点:影响多个质量属性的敏感点。
 ● 风险承担者或利益相关人:影响体系结构或被体系结构影响的群体。
 ● 场景:确定架构质量评估目标的交互机制,一般采用触发机制、环境和影响三方面来描述。
3、软件架构分析方法(SAAM)的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估。
4、架构权衡分析法(ATAM)主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。传统的 ATAM 可以分为 4 个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。现代的 ATAM 方法采用效用树对质量属性进行分类和优先级排序。用 ATAM 方法评估软件体系结构分为演示和介绍、调查和分析、测试和报告。
5、演示是使用 ATAM 评估软件体系结构的初始阶段,包括 3 个步骤:
 ● 介绍 ATAM:描述 ATAM 评估过程。
 ● 介绍业务驱动因素:着重业务视角,提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。
 ● 介绍要评估的体系结构:侧重可用性以及体系结构的质量要求。
6、调查和分析是使用 ATAM 技术评估架构第 2 阶段,对一些关键问题彻底调查,包括 3 个步骤:
 ● 确定架构方法:涉及能够理解系统关键需求的关键架构方法。
 ● 生成质量属性效用树:确定最重要的质量属性,并确定优先次序。
 ● 分析体系结构方法:彻底调查和分析,找出处理相应质量属性架构的方法。包括 4 个主要阶段:调查架构方法→创建分析问题→分析问题的答案→找出风险、非风险、敏感点和权衡点。
7、系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。敏感点是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。权衡点是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
8、测试是使用 ATAM 技术评估架构第 3 阶段,包括:
 ● 头脑风暴和优先场景:将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较。
 ● 分析架构方法。
9、报告是使用 ATAM 技术评估架构第 4 阶段,包括:
 ● 提供评估期间收集的所有信息,呈现给利益相关者。
10、成本效益分析法(CBAM)分为:整理场景→对场景进行求精→确定场景的优先级→分配效用→架构策略涉及哪些质量属性及响应级别→使用内插法确定期望的质量属性响应级别的效用→计算各架构策略的总收益→根据受成本限制影响的 ROI 选择架构策略。
11、其他评估方法。
 ● SAEM 方法:将软件架构看作一个最终产品以及涉及过程中的一个中间产品,从外部质量属性和内部质量属性阐述的评估模型。
 ● SAABNet 方法:辅助架构的定性评估,帮助诊断软件问题的可能原因,分析架构中的修改给质量属性带来的影响、预测架构的质量属性,帮助架构设计人员做决策。SAABNet 度量的对象包括架构属性、质量准则和质量因素。
 ● SACMM 方法:首先基于内核定义差异度量准则来计算两个软件架构之间的距离,然后分析对象之间的相似性。
 ● SASAM 方法:通过对预期架构和实际架构进行映射和比较来静态地评估软件架构。
 ● ALRRA 方法:是软件架构可靠性风险评估方法,使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素。
 ● AHP 方法:把定性分析和定量计算相结合,对各种决策因素进行处理。
 ● COSMIC+UML 方法:针对不同表达方式的软件架构,采用统一的软件度量 COSMIC 方法来进行度量和评估。