【软考备考】 架构评估质量属性:性能、可用性、安全性、可修改性、可测试性、易用性等详细介绍

第一部分:架构评估概述

1. 什么是架构评估?

架构评估是一个在系统被构建之前,用于分析系统架构是否满足特定质量目标的过程。其核心目的是早期发现风险,避免在开发后期或部署阶段因架构缺陷导致高昂的修改成本。

简单来说:在盖楼之前,请专家团审查设计图,看它是否满足抗震(可用性)、防火(安全性)、空间布局合理(可修改性)等要求。

2. 主要评估方法

在软考中,最需要掌握的是 ATAM

  • SAAM :较早的方法,主要用于评估可修改性

  • ATAM架构权衡分析方法。这是软考的重点和常考点。

    • 核心思想 :质量属性之间是存在权衡关系的,不可能所有属性都达到最优。提高性能可能会牺牲可修改性,增强安全性可能会影响易用性。ATAM的目的就是揭示这些权衡点,并帮助决策者做出明智的选择。
3. ATAM 评估流程

ATAM的流程可以概括为四个阶段和九个步骤,但其核心产出物非常明确。

核心参与角色

  • 评估小组:外部的架构专家。

  • 项目决策者:项目经理、客户代表等。

  • 架构师:系统架构的设计者。

关键产出物

  1. 架构决策质量属性效用树

    • 这是ATAM的核心。它将系统的"效用"(整体目标)分解为具体的质量属性目标 ,并对其进行优先级排序

    • 结构质量属性 -> 刺激(在什么情况下) -> 响应(系统应该如何反应) -> 优先级(高、中、低)

    • 示例

      • (安全性) -> (受到SQL注入攻击时) -> (系统在1分钟内检测并阻断,且不泄露任何用户数据) -> (高)

      • (性能) -> (在双十一高峰期,每秒处理10万笔下单请求时) -> (系统响应时间保持在2秒以内) -> (高)

  2. 风险、非风险、敏感点、权衡点

    • 风险:可能导致无法满足质量属性要求的架构决策。

    • 非风险:经过验证的、能保证质量属性实现的良好决策。

    • 敏感点:一个或多个构件的特性,它对某个质量属性有显著影响。

      • 示例 :加密算法的强度是安全性的一个敏感点。
    • 权衡点 :影响多个质量属性的架构决策,并且这些影响是冲突的。

      • 示例 :为提高性能 而引入数据缓存,但可能会引入脏数据,从而降低可用性数据一致性。这就是一个典型的权衡点。

第二部分:核心质量属性详解

以下是在软考和实际架构设计中最为关键的几个质量属性。

1. 性能
  • 定义:系统在给定资源和时间限制下完成指定任务的能力。

  • 刺激源:内部或外部的事件触发。

  • 架构战术/决策

    • 引入并发:使用多线程、异步处理。

    • 资源调度:采用先进先出、固定优先级、动态优先级调度算法。

    • 增加资源:更快的硬件、更多的服务器。

    • 负载均衡:将请求分发到多个服务器。

    • 缓存:在内存中存储频繁访问的数据,减少对慢速存储的访问。

    • 减少计算开销:优化算法,减少中间步骤。

2. 可用性
  • 定义:系统在需要时能够正常运行和访问的比例。通常用"几个9"来衡量(如99.999%)。

  • 刺激源:系统故障(硬件、软件、网络)。

  • 架构战术/决策

    • Ping/Echo:心跳检测,监控组件是否存活。

    • 异常处理:捕获并处理错误,防止系统崩溃。

    • 主动冗余:主备模式,备机同步运行,随时准备接管。

    • 被动冗余:备机不处理业务,只在主机故障时启动。

    • 事务:使用ACID事务保证操作的原子性,从错误状态恢复。

    • 进程监控:监控进程状态,失败时能自动重启。

3. 安全性
  • 定义:系统保护自身数据和资源免受未经授权的访问和攻击的能力。

  • 刺激源:恶意攻击者。

  • 架构战术/决策

    • 身份认证:确认用户身份(如用户名/密码、双因子认证)。

    • 授权:控制已认证用户能访问哪些资源(如RBAC模型)。

    • 审计:记录用户操作,用于事后追溯。

    • 数据加密:对存储和传输的数据进行加密。

    • 限制暴露点:使用防火墙、API网关,减少系统对外暴露的攻击面。

    • 入侵检测:实时监控并识别攻击行为。

4. 可修改性
  • 定义:系统能够以高性价比、低风险的方式被变更的容易程度。包括可维护性、可扩展性、可移植性等。

  • 刺激源:开发者需要增加/修改功能、适配新平台等。

  • 架构战术/决策

    • 高内聚/低耦合:这是最核心的原则。模块内部高度相关,模块之间依赖关系简单。

    • 抽象:使用接口、抽象类来定义契约,隐藏实现细节。

    • 信息隐藏:模块只暴露必要的接口,隐藏其内部数据和实现。

    • 语义一致性:将功能相关的类放在同一个模块中。

    • 使用中间件:通过消息队列、API网关等解耦服务。

    • 模块化分层架构微服务架构 都是提升可修改性的宏观架构风格。

5. 可测试性
  • 定义:软件发现故障并隔离其根本原因的容易程度。

  • 刺激源测试人员/开发者执行测试用例。

  • 架构战术/决策

    • 记录/回放:记录系统状态和输入,便于回放和调试。

    • 抽象:将接口与实现分离,便于实现Mock和Stub。

    • 提供专用接口:为测试提供特殊的钩子或接口,用于注入测试数据或检查内部状态。

    • 内置监控:在系统中内置健康检查和性能指标接口。

6. 易用性
  • 定义:用户学习和使用系统所需的努力程度。

  • 刺激源:用户与系统交互。

  • 架构战术/决策

    • MVC/MVP/MVVM模式:将用户界面逻辑与业务逻辑分离,使得UI可以独立修改和测试。

    • 用户操作模型化:将用户的常见操作流程封装成清晰的模型。

    • 运行时自定义:允许用户在运行时调整界面布局、主题等。

    • 分离UI与后端:前后端分离架构,使得前端可以专注于用户体验的优化。


第三部分:软考考点与应试技巧

  1. 概念辨析:必须清晰理解每个质量属性的定义、刺激源和典型架构战术。能够区分相似概念,例如:

    • 性能 vs 可用性:性能关心"快不快",可用性关心"有没有"。

    • 可修改性 vs 可测试性:可修改性关心"改起来方不方便",可测试性关心"测起来容不容易"。

  2. ATAM流程与核心产物

    • 一定会考效用树的概念和作用。

    • 一定会考敏感点权衡点风险的定义和识别。给你一个场景,要能判断属于哪一类。

    • 例题 :"为了提高系统响应速度(性能),架构师决定将所有业务模块部署在同一进程中,但这导致任何一个模块的bug都会导致整个系统崩溃。这个决策在ATAM评估中被称为?" 答案:权衡点(在性能和可用性之间权衡)。

  3. 场景分析题(大题)

    • 题目会描述一个系统的背景和需求(例如:"一个大型电商平台,需要应对秒杀活动,保证7x24小时可用,并且要防止恶意刷单")。

    • 问题1:请列出该系统重点需要关注的质量属性,并说明理由。

      • :性能(应对高并发请求)、可用性(7x24小时)、安全性(防止恶意刷单)。
    • 问题2:针对某个质量属性,提出至少两种架构设计决策(战术)。

      • :针对性能,可以采用(1)引入Redis缓存,减少数据库压力;(2)使用负载均衡,将用户请求分发到多台应用服务器。
    • 问题3:指出设计中可能存在的权衡点。

      • :引入复杂的缓存机制虽然提升了性能,但也增加了数据不一致的风险(牺牲了数据一致性),并使得系统架构更复杂,降低了可修改性。
  4. 关联记忆

    • 将架构战术与具体的架构模式/技术关联起来。例如:

      • 微服务 -> 高内聚低耦合 -> 提升可修改性 ,但可能因网络调用增加而影响性能

      • 缓存 -> 提升性能 ,但可能引发数据一致性问题。

      • 主从复制 -> 提升可用性性能(读),但存在主从延迟。

相关推荐
hello_2505 小时前
容灾架构术语:RPO和RTO
架构
JH30735 小时前
B/S架构、HTTP协议与Web服务器详解
前端·http·架构
杨筱毅5 小时前
【架构】MVP 对比 MVVM
架构
骇客野人5 小时前
【软考备考】物联网架构:感知层、网络层、平台层、应用层详解
物联网·架构
AI模块工坊8 小时前
AAAI 2025 | 即插即用,川大Mesorch刷新SOTA,用「介观」Transformer架构终结图像造假
人工智能·深度学习·计算机视觉·架构·transformer
周杰伦_Jay8 小时前
【OpenManus深度解析】MetaGPT团队打造的开源AI智能体框架,打破Manus闭源壁垒。包括架构分层、关键技术特点等内容
人工智能·深度学习·opencv·架构·开源
The Open Group8 小时前
小企业的大架构:TOGAF®标准如何助力突破初创瓶颈
架构
sorryhc9 小时前
开源的SSR框架都是怎么实现的?
前端·javascript·架构
自由的疯10 小时前
Java 如何学习 Jenkins?
java·架构