软件架构设计师案例分析大题总结
系统架构下午大题第一大题必做二到五题建议选24 或者25 作答软件架构设计师下午案例分析按题目拆解版第一题 系统架构设计与评估25分第一问12分左右很大概率考系统质量效用树题目会给一个业务场景例如医疗系统电商系统银行系统政务系统让你构建效用树。效用树标准结构Utility ├──性能 │ ├──安全性 │ ├──可用性 │ ├──可修改性 │ ├──易用性 │ └──可测试性必须会写质量属性性能安全性可用性可修改性易用性可测试性运行期系统运行时体现性能安全性可用性易用性开发期开发维护时体现可修改性可测试性质量属性场景模板六要素刺激源、刺激、环境、制品、响应、响应度量6大质量属性场景示例1. 性能Performance刺激源 用户 刺激 1000并发访问 环境 系统正常运行 制品 订单系统 响应 处理请求并返回结果 响应度量 平均响应时间≤2秒2. 安全性Security刺激源 黑客 刺激 非法访问系统 环境 系统运行中 制品 用户数据库 响应 识别并拒绝访问 响应度量 未发生数据泄露3. 可用性Availability关注系统故障后的恢复能力。刺激源 服务器 刺激 服务器宕机 环境 系统运行中 制品 业务系统 响应 自动切换到备用服务器 响应度量 5分钟内恢复服务或者刺激源 数据库服务器 刺激 数据库故障 环境 高峰期运行 制品 电商系统 响应 切换到主备数据库 响应度量 业务中断时间≤30秒4. 易用性Usability关注用户是否容易使用系统。刺激源 新用户 刺激 首次使用系统 环境 系统正常运行 制品 用户界面 响应 快速完成注册和下单 响应度量 5分钟内完成操作或者刺激源 普通用户 刺激 查询订单 环境 系统运行中 制品 前端界面 响应 引导用户完成查询 响应度量 操作步骤≤3步5. 可修改性Modifiability关注需求变更时修改系统的难易程度。刺激源 开发人员 刺激 新增支付方式 环境 系统维护阶段 制品 支付模块 响应 增加新支付渠道 响应度量 修改代码量≤5个模块或者刺激源 业务部门 刺激 新增会员等级规则 环境 系统升级阶段 制品 会员管理系统 响应 完成规则扩展 响应度量 开发时间≤2天6. 可测试性Testability关注系统是否容易测试。刺激源 测试人员 刺激 执行功能测试 环境 测试环境 制品 订单模块 响应 完成自动化测试 响应度量 测试覆盖率≥90%或者刺激源 测试工程师 刺激 执行接口测试 环境 系统集成测试阶段 制品 微服务系统 响应 快速定位问题 响应度量 缺陷定位时间≤10分钟万能模板刺激源 某个生成该刺激的实体 刺激 XXX事件发生 环境 系统运行中/维护阶段/测试阶段 制品 XXX系统模块 响应 系统采取XXX措施 响应度量 XXX指标达到要求性能、安全性、可用性、可修改性是最常考的四个质量属性如果是为了软件架构设计师考试6分教材上的定义必须会背但确实比较抽象。我建议用“谁、在什么情况下、对什么、做了什么、效果如何”来理解六要素。满分答案考试版质量属性场景用于描述系统在特定条件下对某种刺激的响应方式是质量属性需求的标准化表达方式。一个完整的质量属性场景由六个要素组成1. 刺激源Source产生刺激的实体即谁发起了该事件。刺激源可以是用户外部系统运维人员黑客攻击者硬件设备例如用户提交订单、攻击者发起恶意请求。2. 刺激Stimulus作用于系统的事件或条件即发生了什么事情。例如用户访问系统数据库故障系统并发量激增网络中断3. 环境Environment刺激发生时系统所处的状态或运行环境。常见环境正常运行状态高并发状态故障状态系统维护状态网络异常状态例如系统正处于业务高峰期。4. 制品Artifact受到刺激影响的对象即刺激作用于系统的哪个部分。可以是整个系统数据库Web服务器微服务模块缓存组件例如订单服务模块。5. 响应Response系统接收到刺激后采取的行为或处理措施。例如返回查询结果自动切换备用节点记录日志拒绝非法访问触发告警6. 响应度量Response Measure用于衡量响应效果的指标是判断质量属性是否满足要求的依据。例如响应时间 ≤ 2秒系统可用性 ≥ 99.9%故障恢复时间 ≤ 5分钟吞吐量 ≥ 1000TPS一句话记忆法考试特别好用六要素本质上回答了六个问题要素回答的问题刺激源谁干的刺激发生了什么环境在什么情况下发生制品影响了谁响应系统怎么做响应度量做得怎么样即谁刺激源在什么情况下环境做了什么事刺激作用于什么对象制品系统如何处理响应处理效果如何衡量响应度量。用一个完整例子理解性能质量属性场景在系统运行期间1000名用户同时访问订单查询功能订单服务能够在2秒内完成处理并返回结果。对应六要素要素内容刺激源用户刺激1000个并发查询请求环境系统正常运行期间制品订单查询服务响应系统处理请求并返回结果响应度量平均响应时间 ≤ 2秒架构师考试阅卷最喜欢的表述答题时最后补一句质量属性场景通过“刺激源、刺激、环境、制品、响应和响应度量”六个要素对系统质量需求进行结构化描述使质量属性需求能够被分析、设计、验证和测试。这句话基本就是标准教材语言阅卷老师看见就知道你掌握了质量属性场景的核心思想。考试标准答案可以直接写质量属性场景是对质量属性需求的结构化描述由六个要素组成1刺激源Source产生刺激的实体如用户、外部系统等。2刺激Stimulus作用于系统的事件或条件如用户请求、系统故障等。3环境Environment刺激发生时系统所处的状态如正常运行、高负载运行等。4制品Artifact受到刺激影响的对象可以是整个系统或系统中的某个组件。5响应Response系统接收到刺激后采取的行为或处理措施。6响应度量Response Measure用于衡量响应结果的指标如响应时间、吞吐量、可用性等。对于架构师考试我建议记成谁 → 干什么 → 什么时候 → 影响谁 → 怎么处理 → 处理得怎么样对应刺激源 → 刺激 → 环境 → 制品 → 响应 → 响应度量评分点一般每个场景2分质量属性名称1分场景描述1分第一题 第二问13分左右考法一出现最多架构风格识别题目会给系统描述让你回答采用什么架构风格为什么适合优缺点必背架构风格架构风格主要特点主要优点主要缺点适合领域管道-过滤器风格过滤器相对独立。功能模块复用可维护性和可扩展性较强具有并发性模块独立性高。不适于交互性强的应用对于存在关系的数据流必须进行协调。系统可划分清晰的模块模块相对独立有清晰的模块接口。面向对象风格力争实现问题空间和软件系统空间结构的一致性。高度模块化实现封装代码共享灵活易维护可扩充性好。增加了对象之间的依赖关系。多种领域。事件驱动风格系统由若干子系统构成且称为一个整体系统有统一的目标子系统有主从之分每一个子系统有自己的事件收集和处理机制。适合描写系统组容易实现并发处理和多任务可扩展性好具有类层次结构简化代码。因为树型结构所以削弱了对系统计算的控制能力各个对象的逻辑关系复杂。一个系统对外部的表现可以从它对事件的处理表现出来。分层风格各个层次的组件形成不同功能级别的虚拟机多层相互协同工作而且实现透明。支持系统设计过程中的逐级抽象可扩展性好支持软件复用。不同层次之间耦合度高的系统很难实现。适合功能层次的抽象和相互之间低耦合的系统。数据共享风格采用两个常用构件中央数据单元和一些相对独立的组件集合。中央数据单元实现了数据的集中以数据为中心。适合于特定领域。适合于专家系统等人工智能领域问题的求解。解释器风格系统核心是虚拟机。可以用多种操作来解释一个句子灵活应对自定义场景。适合于特定领域。适合于模式匹配系统与语言编译器。闭环控制风格通过不断的测量被控对象认识和掌握被控对象将控制理论引入体系结构构建。将控制理论引入到计算机软件体系结构中。适合于特定领域。该系统中一定存在有目标的作用、信息处理闭环控制过程。架构风格关键词管道-过滤器数据流、流水线面向对象封装、继承、多态事件驱动发布订阅、消息通知分层MVC、三层架构数据共享数据中心、黑板模型解释器DSL、编译器、规则引擎闭环控制反馈控制、自动调节典型案例对应管道-过滤器编译器词法分析→语法分析→语义分析→代码生成面向对象ERP、OA、电商系统事件驱动RocketMQ、Kafka、GUI事件处理分层架构Spring Boot 三层架构Controller → Service → DAO数据共享风格专家系统、知识库系统解释器风格SQL解释器、正则表达式引擎、规则引擎闭环控制风格自动驾驶、温控系统、工业控制系统软考案例分析最喜欢考的通常是分层架构、事件驱动、管道-过滤器、面向对象这四种需要重点掌握。建议熟记下面这篇博文 八、软考-系统架构设计师笔记-系统质量属性和架构评估https://blog.csdn.net/qq_37883866/article/details/136590430第二题 结构化分析设计 or 面向对象分析设计25分推荐必选。常考ER 图、数据流图DFD 和 UML 图对比项UML 类图ER 图全称Unified Modeling LanguageEntity-Relationship Diagram主要用途面向对象分析与设计数据库概念设计建模对象类Class实体Entity属性类属性实体属性方法有方法操作无方法关系关联、聚合、组合、继承、依赖等联系1:1、1:N、M:N关注重点系统结构与行为数据结构与数据关系面向思想面向对象面向数据最终产物类设计、代码实现数据库表设计– 主要分为下面三大类① 结构化分析与设计DFD、数据字典、结构化设计、模块结构图、变换分析、事务分析② 面向对象分析与设计UML、用例图、类图、时序图、状态图、活动图……③ 数据库设计E-R图、关系模式、规范化、事务、数据库设计第一问9分数据流图DFD补图 UML 用例图 顺序图 活动图 状态图设计模式的识别必考元素外部实体方框加工圆形数据流箭头数据存储双平行线数据平衡原则高频考点父图输入子图输入 父图输出子图输出常见错误新增输入新增输出遗漏数据流第二问9分ER图补图必考实体属性联系联系类型1:1 1:N M:N高频考点M:N转化例如学生 课程必须变成学生 选课 课程主键必须唯一不能为空第三问7分数据字典四个组成数据项 数据结构 数据流 数据存储各阶段作用需求分析统一数据定义概要设计数据库设计依据详细设计程序设计依据维护阶段数据参考标准第三题 嵌入式系统25分一般不推荐。第一问实时操作系统RTOS特点实时性 可靠性 确定性第二问任务调度常考抢占式 非抢占式第三问中断必须会中断响应 中断处理 中断返回第四题 软件体系结构设计数据库25分推荐。第一问Web系统架构经典答案表现层 业务层 数据层或者前端层 网关层 服务层 数据库层第二问Redis近5年非常高频。缓存穿透请求不存在的数据解决布隆过滤器 缓存空值缓存击穿热点Key失效解决互斥锁 永不过期缓存雪崩大量缓存同时失效解决随机过期 多级缓存第三问负载均衡常见Nginx LVS HAProxy作用提高并发 提高可用性 故障转移数据库 主从复制、分库分表、负载均衡、 四大属性ACID参考文章https://deepjava.blog.csdn.net/article/details/163759483?spm1011.2415.3001.5331第五题 中间件与新技术Web应用 AI相关技术25分推荐。第一问架构图分析考察模块职责 调用关系 部署关系第二问MongoDB特点文档数据库 Schema灵活 水平扩展第三问ES高频答案倒排索引 全文检索 分布式搜索近年新增热点Kafka发布订阅 削峰填谷 异步解耦微服务服务拆分 独立部署 去中心化考前一天只看这张表题目必背内容第一题效用树、质量属性场景6要素、架构风格第二题DFD、数据平衡、ER图、数据字典第三题RTOS、中断、任务调度第四题Web分层、Redis三大问题、负载均衡第五题架构图、MongoDB、ES、Kafka、微服务如果目标是45分通过下午案例实际上最值得投入时间的是第一题必须拿15 第二题拿15 第四题或第五题拿15这是目前通过率最高的答题路线。且第一题快速做掉剩余题目快速读问题选做自己擅长的两个做。列条目回答问题把自己认为对的都写上多写不会扣分少写一定会扣分。