
软考高级系统架构设计师备考写着方便自己看如果有发现不对或少得的地方可以多多指正谢谢各位兄弟。一、软件系统质量属性1. 质量属性的两大分类生命周期维度分类核心定义包含属性通俗案例开发期质量属性软件开发阶段关注的特性易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性易理解性新接手老项目的开发人员1周就能理清核心逻辑说明系统易理解性好可扩展性电商大促前无需重构核心链路就能新增「预售锁库存」功能说明可扩展性强运行期质量属性软件运行阶段关注的特性性能、安全性、可伸缩性、互操作性、可靠性、可用性、鲁棒性可伸缩性短视频平台用户从1亿涨到5亿仅通过扩容服务器就维持了流畅体验说明可伸缩性好鲁棒性用户输入错误格式的手机号提交订单系统不会崩溃而是弹出友好提示说明鲁棒性容错性强真题提示该分类是单选基础题直接选「开发期运行期」即可。2. 面向架构评估的6类核心质量属性这部分是案例、论文的高频考点需要掌握定义、衡量指标、设计策略和典型案例质量属性核心要点案例性能定义系统对事件的响应能力指标响应时间、吞吐量设计策略优先级队列、并发机制、资源调度医院挂号系统把急诊预约请求放入最高优先级队列优先处理就是性能优化的典型实践可靠性定义系统抵御错误、持续运行的能力指标MTTF平均失效等待时间、MTBF平均失效间隔时间失效率恒定且修复快时二者几乎相等设计策略冗余、心跳检测金融核心交易系统采用双活数据中心一个中心故障后另一个秒级接管就是提升可靠性的设计可用性定义系统正常运行时间占总时间的比例指标故障间隔时间、故障恢复速度设计策略冗余、Ping/Echo机制云服务器承诺99.99%可用性即全年宕机时间不超过52分钟安全性分为4类机密性信息不泄露给未授权方、完整性信息不被非法篡改、不可否认性收发行为不可抵赖、可控性信息传播可被管控设计策略入侵检测、身份认证、权限控制微信聊天记录仅收发双方可见是机密性转账后无法否认自己发起过交易就是不可否认性可修改性包含4类可维护性修复缺陷的难易度、可扩展性新增功能的难易度、结构重组重构构件关系的难易度、可移植性跨环境迁移的难易度设计策略接口-实现分离、抽象、信息隐藏把支付模块的接口和具体实现分离后续新增数字人民币支付方式仅需修改实现类不影响其他模块就是可修改性好的体现互操作性定义与其他系统交换数据、调用服务的难易度政务服务平台可以直接调取公安的身份信息、税务的纳税信息无需用户重复提交材料就是互操作性强的体现真题提示区分可靠性和可用性可靠性关注「不出错」可用性关注「出错了多久能恢复」。3. 质量属性场景精准描述质量需求的工具由6个要素组成是论文中描述需求的核心工具要素定义淘宝新增直播功能的案例刺激源发起请求的实体淘宝后端开发人员刺激触发的变更条件需要新增直播带货功能环境场景发生的背景系统处于日常运行态制品被修改的对象淘宝APP后端服务响应系统采取的动作快速定位修改点完成开发测试并上线响应度量可量化的结果本次修改耗时2人月未影响其他现有功能二、系统架构评估核心知识1. 架构评估三大核心概念概念核心定义案例敏感点实现一个特定质量属性时构件需要具备的特性要实现高安全性加密模块必须具备高强度加密算法支持这就是安全性的敏感点权衡点同时影响多个质量属性的特性是多个敏感点的交集提高加密等级会提升安全性但会增加CPU开销降低性能此时加密等级就是典型的权衡点风险承担者利益相关人所有受架构影响的角色架构师需要平衡业务方要快速上线、运维方要系统稳定、安全部门要合规的多方诉求场景风险承担者对系统交互的简短描述用「刺激、环境、响应」三要素刻画评估可修改性时场景可描述为「系统运行态下开发人员要新增报表导出功能3人月内完成上线且无副作用」真题提示题干中如果一个决策同时影响2个及以上质量属性直接选「权衡点」。2. 主流架构评估方法方法核心特点案例SAAM基于场景的架构分析方法最早的架构评估方法核心聚焦可修改性评估OA系统架构时先梳理「新增请假审批流程」「修改考勤规则」等场景逐一评估架构对这些场景的支持程度ATAM架构权衡分析方法SAAM的升级版核心关注性能、安全性、可修改性、可用性四大质量属性用「效用树」做优先级排序评估电商大促架构时先通过效用树把「10万并发下响应3秒」性能、「支付数据零泄露」安全性、「大促前可快速新增优惠券功能」可修改性、「故障30秒内自动恢复」可用性列为最高优先级场景再逐一分析架构支持能力CBAM成本效益分析法在ATAM基础上增加成本核算按ROI投资回报率选择最优架构评估发现两个优化方案A投入100万提升20%性能B投入80万提升15%性能10%可用性计算ROI后选择B更符合业务利益真题提示① ATAM效用树的层级为树根→质量属性→属性分类→质量属性场景叶子节点② ATAM核心关注的四大属性是「性能、安全性、可修改性、可用性」是单选必考题其余SAEM、AHP等评估方法仅需了解不做高频考点。三、中间件技术核心考点1. 基础定义与特点中间件是处于操作系统和应用系统之间的系统级软件作用是屏蔽底层异构环境不同OS、数据库、网络的差异实现分布式系统的资源共享和协同工作。核心特点①不是单一软件是一类产品②不仅实现系统互连更实现应用互操作③核心优势是网络通信能力。案例Java应用要访问Oracle数据库不需要自己写底层网络交互代码只需要通过JDBC中间件即可完成操作。2. 两大核心支持支持类型核心作用案例交互支持协调分布式环境下组件间的通信提供消息队列、RPC、ORB等机制屏蔽底层网络细节微服务之间通过RabbitMQ消息队列异步传输订单数据无需关心TCP协议细节公共服务提供可复用的通用能力如事务管理、安全服务、负载均衡、容错等通过Redis实现分布式锁通过Nginx实现流量负载均衡都是中间件提供的公共服务3. 常见中间件分类分类作用典型案例通信处理消息中间件实现跨平台可靠数据传输IBM MQSeries金融系统跨行转账靠它保证数据不丢失事务处理中间件协调分布式事务的顺序、一致性和负载均衡BEA Tuxedo电商下单「减库存扣余额」的分布式事务靠它保证原子性数据存取中间件统一不同数据库的访问接口JDBC、ODBC应用更换数据库时无需修改大量代码Web服务中间件提供Web应用的运行时容器Tomcat、JBossJava Web应用都部署在这类中间件中运行安全中间件提升系统安全等级SSL/TLS浏览器地址栏的「小锁」就是它实现的传输加密跨平台中间件实现不同语言系统的互操作CORBAC编写的后台服务和Java编写的客户端可以无缝交互