当前位置: 首页 > news >正文

软考-系统架构设计师 系统架构评估详细讲解

个人博客:blogs.wurp.top

一、核心概念:为什么需要架构评估?

1. 定义

系统架构评估是在系统构建之前,通过系统化的方法,分析软件架构是否满足特定质量属性目标(如性能、安全、可用性),并识别潜在风险、敏感点和权衡点的过程。

2. 目的与价值

  • 降低风险:在投入大量开发和运维成本之前,发现架构设计中的重大缺陷。
  • 验证决策:确认架构决策能够支持关键的非功能需求。
  • 促进沟通:为所有利益相关者(管理者、客户、开发、测试、运维)提供一个讨论架构和达成共识的平台。
  • 指导改进:为架构的改进和优化提供明确的方向。

核心思想“早发现,早治疗”。在架构阶段修复一个问题的成本,远低于在编码、测试甚至上线后修复的成本。


二、架构评估方法论

评估不是随意的评审,而是有严格流程和方法的。最著名和常用的方法是 ATAM

1. ATAM - 架构权衡分析方法 (Architecture Tradeoff Analysis Method)

这是软考中要求掌握的重点方法。ATAM 的核心是 “权衡”,它承认没有完美的架构,任何决策都是在不同质量属性之间进行取舍。

ATAM 的参与角色

  • 评估小组:由外部或内部架构专家组成,负责引导评估过程。
  • 项目决策者:包括项目经理、首席架构师、产品经理等,有权做出项目决策。
  • 架构涉众:包括开发、测试、运维、用户代表等,他们的利益与架构密切相关。

ATAM 的九个步骤(四阶段)

第一阶段:演示与评估

  1. ATAM方法演示:评估小组向项目参与者介绍ATAM的过程和目标。
  2. 业务动机演示:项目决策者介绍系统的业务目标主要功能最重要的质量属性目标
  3. 架构演示:首席架构师详细阐述当前的架构设计,包括关键决策和设计思路。

第二阶段:调查与分析
4. 确定架构方法:评估小组基于架构师的演示,识别并记录出架构中使用的主要架构模式、风格和技术(如微服务、缓存、负载均衡)。
5. 生成质量属性效用树这是ATAM的核心步骤。

  • 效用:代表系统对涉众的整体价值。
  • 效用树:一个分层结构,用于细化、排序和量化质量属性目标。
  • 根节点:系统的总体效用。
  • 质量属性节点:第一层子节点(如性能、安全性、可用性)。
  • 细化场景节点:第二层子节点,将质量属性细化为更具体的场景(如“在高并发下保持低延迟”)。
  • 叶子节点:每个场景都被赋予一个优先级(高、中、低) 和一个支持该场景的难度/风险估计(高、中、低)
  • 作用:效用树帮助团队聚焦于高优先级、高风险的场景,这些是评估的重点。

第三阶段:测试
6. 分析架构方法:评估小组针对效用树中高优先级的场景,逐一拷问架构设计。

  • 问题示例:“为了实现‘5秒内完成订单’这个性能场景,架构中采用了哪些具体机制?(如数据库分库分表、异步消息队列)这些机制是否足够?”
  1. 头脑风暴并确定场景优先级:邀请所有涉众提出更多他们关心的场景(不限于已列出的),然后通过投票方式确定这些新场景的优先级。
  2. 再次分析架构方法:对投票产生的高优先级新场景,重复第6步的分析过程。

第四阶段:报告
9. 结果展示:评估小组向项目决策者展示最终的评估结果。核心输出包括:

  • 已文档化的架构方法
  • 已确定并设置优先级的场景(来自效用树和头脑风暴)。
  • 效用树
  • 风险决策:指那些可能无法满足某个重要质量属性的架构决策。
  • 非风险决策:指那些经过分析被认为是良好的、能有效支持某个质量属性的决策。
  • 敏感点:指一个或多个组件的属性,它对某个质量属性有显著影响。(例如,缓存大小是性能的敏感点)。
  • 权衡点:指影响多个质量属性的架构决策,通常是权衡发生的地方。(例如,引入数据加密提高了安全性,但可能降低了性能;采用强一致性协议提高了一致性,但牺牲了可用性)。

2. SAAM - 软件架构分析方法 (Software Architecture Analysis Method)

  • 特点:比ATAM更早、更简单,是ATAM的前身。
  • 关注点:主要评估架构的可修改性(可维护性)。
  • 核心过程
    1. 开发场景(描述可能发生的变更)。
    2. 对场景进行分类(直接场景 vs. 间接场景)。
    3. 执行场景评估(评估变更所需的工作量)。
    4. 揭示交互(评估场景之间的耦合程度)。

三、架构评估中的核心概念(必考)

在评估过程中,会提炼出以下几个关键概念,用于描述架构的特性:

  1. 场景 (Scenario):评估的基本单位,用于具体化质量属性需求(如前文所述的质量属性场景)。
  2. 敏感点 (Sensitivity Point)
    • 定义:架构中一个或多个组件的属性,当它发生变化时,会对一个质量属性产生显著影响。
    • 例子:“缓存的大小是系统响应时间的敏感点。” 增大缓存可能显著提高响应速度。
  3. 权衡点 (Trade-off Point)
    • 定义:架构中的一个属性,它与多个质量属性密切相关,并且这些影响是相互冲突的。
    • 例子:“是否对数据库连接进行加密是一个权衡点。” 加密提高了安全性,但增加了CPU开销,可能降低性能
  4. 风险 (Risk)
    • 定义:根据当前架构设计,某个重要的质量属性目标可能无法实现的决策。
    • 例子:“为了追求开发速度,系统没有设计容灾方案,这是一个风险,威胁到系统的可用性。”
  5. 非风险 (Non-Risk)
    • 定义:经过评估,被认为是良好的、能有效支持某个质量属性的架构决策。
    • 例子:“使用负载均衡器来分发Web请求,这是一个非风险决策,它很好地支持了系统的可扩展性可用性。”

四、软考考点总结与应用

  1. 选择题

    • 直接考查架构评估的目的和价值
    • 考查 ATAM 和 SAAM 方法的定义、特点和区别。
    • 考查 ATAM 的九个步骤,特别是效用树的作用。
    • 考查敏感点、权衡点、风险、非风险的定义和区别,并能根据小案例进行判断。
    • 考查评估中的参与角色及其职责。
  2. 案例分析题

    • 题目描述一个架构设计,并给出一些质量属性要求。
    • 问题:请使用ATAM方法,对该架构进行评估,并说明评估的重点和可能输出的结果。
    • 答题套路
      1. 阐述ATAM流程:简述将按照演示、调查、测试、报告四个阶段进行。
      2. 构建效用树:根据案例中的质量要求,虚拟一个简单的效用树(例如,性能-高并发场景-高优先级/高风险)。
      3. 识别关键概念
        • 敏感点:指出案例中影响某个质量属性的关键参数(如数据库连接池大小)。
        • 权衡点:指出案例中存在的架构决策冲突(如为了数据一致性采用分布式事务,牺牲了性能与可用性)。
        • 风险:指出案例中可能无法满足需求的决策(如单点数据库设计对可用性构成风险)。
      4. 提出建议:基于评估结果,提出架构改进方向。
  3. 论文题

    • 可能围绕“论软件架构评估在某项目中的应用”、“ATAM方法与软件质量保证”、“架构设计中的权衡策略”等主题。
    • 写作时,必须:
      • 清晰描述项目背景和关键的架构决策
      • 详细论述你如何组织或参与一次ATAM评估(角色、步骤)。
      • 重点分析评估中发现的权衡点风险,以及你是如何决策和解决这些问题的。
      • 总结架构评估为项目带来的实际价值(如避免了哪些潜在问题)。

总结

对于软考架构师,掌握系统架构评估的关键在于:

  • 树立评估意识:将架构评估视为与架构设计同等重要的必备环节。
  • 精通核心方法:深刻理解并能阐述 ATAM 的全过程,特别是效用树的分析。
  • 清晰辨析概念:能准确区分敏感点、权衡点、风险和非风险,这是分析问题的语言。
  • 具备实践能力:能将理论方法应用于实际案例,进行分析、诊断和提出改进建议。
http://www.dtcms.com/a/469747.html

相关文章:

  • Redis 黑马skyout
  • 【Unity】构建超实用的有限状态机管理类
  • redis基础命令和深入理解底层
  • Java中第三方报告库-Allure
  • 高端公司网站建设连云港做网站制作
  • Google 智能体设计模式:优先级排序
  • 网站做不做百度云加速手游代理平台哪个好
  • 【国内电子数据取证厂商龙信科技】邮件如何取证?
  • 手机网站模板 psd做网站建设分哪些类型
  • 做网站需要哪些框架网站没备案可以访问吗
  • Git下载和安装教程(附安装包)
  • go的学习2---》并发编程
  • 高端网站建设企业公司网页版qq空间登录入口官网
  • 麒麟系统安装达梦数据库遇到的问题
  • VScode怎么使用Jupyter并且设置内核
  • LwIP UDP RAW
  • VI-SLAM定位方案对比
  • TCP/IP 协议族—理论与实践(一)
  • 手持小风扇MCU方案,智能风扇方案设计开发
  • 网站设计深圳网站建设公司网页设计与制作100例怎么写
  • Linux -- 网络层
  • 建设班级网站 沟通无限网络黄页进入有限公司
  • Labview项目01:标准可配置序列测试框架
  • 拌合楼软件开发(23)监测客户端在线情况并联动企业微信提醒客户端离线和恢复
  • 雄安网建 网站建设莞城微信网站建设
  • 基于Python的交通数据分析应用-hadoop+django
  • [特殊字符] 教程|打造一个 Telegram 币圈波场交易记录检测机器人
  • 高弹性不锈钢材质在技工钳应用中的优势分析
  • 东土科技连投三家核心企业 发力具身机器人领域
  • 建设行政主管部门官方网站张槎建网站服务