系统架构设计师案例分析题——软件架构设计篇

重中之重,本题争取拿下25满分~

目录

一.核心知识

1.什么是架构风格

2.RUP的9个核心工作流

3.企业应用集成方式

4.软件质量属性

5.SySML系统建模语言9种图

6.云计算架构

7.中间件

8.构件、连接件、软件重用

9.层次型架构的缺点

10.架构开发方法ADM

11.微服务架构的优缺点

11.云原生架构

12.SOA面向服务架构

13.DSSA特定领域软件架构

二.案例考察扩展

1.应用网关的作用(和微服务架构息息相关)

2.ABSD

3.风险点、敏感点、权衡点

4.质量属性的设计策略

5.遗留系统处理

6.各种架构风格的优缺点、特点

三.真题

1.2024下半年

2.2024上半年


一.核心知识

1.什么是架构风格

类似于建筑风格,从相同类型的软件系统中抽取其架构的共性,是一种惯用模式,反映了众多系统共有的结构和语义。

  1. 软件架构为软件系统提供了一个机构、行为和属性的高级抽象
  2. 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约数

2.RUP的9个核心工作流

  • 业务建模:为目标组织开发一个构想,基于这个构想在用例和对象模型中定义组织过程、角色和责任
  • 需求:描述系统应该做什么,与开发人员和用户达成共识
  • 分析与设计:对需求进行需求分析,设计则是设计类、接口、包,诸如生成类图,对类进行分组、构件打包
  • 实现:主要是进行软件开发的过程,以组件形式实现类与对象,最后成为可执行的系统
  • 测试:对系统进行功能测试,主要分为功能测试和非功能测试,功能测试又分为白盒测试、黑盒测试等。非功能测试分为性能测试、可用性测试等。
  • 部署:对软件进行打包,并部署在服务器上
  • 配置与变更管理:控制项目中的产物,追踪软件创建过程中的版本。
  • 项目管理:平衡冲突,管理风险,克服各种约束并确保成功交付。
  • 环境:提供软件开发环境、包括过程和工具。

3.企业应用集成方式

EAI分为4个集成:

  • 界面集成:把各应用的界面集成起来,形成统一入口,有整体的感觉。
  • 数据集成:控制集成和过程集成的基础,可以提供企业信息共享能力。
  • 控制集成:多个应用系统进行绑定,像一个系统一样输入和产生输出数据,实现多个系统功能的叠加。
  • 过程集成:为实现整体的业务目标,定义、关联管理不同的业务古城,实现信息交换、降低成本,包括过程管理、工程建模和工作流。

4.软件质量属性

  • 性能:系统的响应能力,即要经过多长时间才能对某个事件做出响应,火灾在某段事件内系统所能处理的事件的个数。
  • 可靠性:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力
  • 可用性:系统能够正常运行的时间比例。
  • 安全性:是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
  • 可修改性:指能够快读地以较高的性价比对系统进行变更的能力。
  • 易用性:应有十分友好的用户界面,用户易于使用。

5.SySML系统建模语言9种图

  • 用例图:用于表达系统执行的用例,以及引起用例的行为者和其中的参与者。
  • 活动图:用于指定一种行为,主要关注控制流程,以及输入通过一些了动作转换为输出的过程。
  • 状态机图:用于指定一种行为,主要关注模块的一系列状态,以及响应事件时,状态之间的可能转换
  • 序列图:用于指定一种行为,主要关注模块的组成部分如何通过操作调用和异步信号交互。
  • 时间图:描述系统某个活动状态或属性随时间的变化。
  • 模块定义图:用于表示模块和值类型之间的元素,以及那些元素之间的关系。
  • 内部模块图:用于指定单个模块的内部结构。
  • 参数图:用于表述一种或多种约束。
  • 需求图:用于表示基于文字的需求之间的7种关系(包含、跟踪等,不重要的知识点)

6.云计算架构

5个层次:

  • 管理层:提供对所有层次云计算服务的管理功能
  • 用户访问层:方便用户使用云计算服务,提供相应的访问接口
  • 应用层:提供软件服务,如商业智能,saas
  • 平台层:paas,平台即服务,提供各种中间件和数据库系统
  • 资源层:提供虚拟化的资源,隐藏物理资源的复杂型,如iaas

7.中间件

中间件是一种独立的系统软件或服务程序,可以帮助分布式应用在不同的技术之间共享资源。

作用:

  • 负责客户机与服务器之间的连接和通信
  • 提供应用层不同服务之间的互操作机制
  • 提供多层架构的应用开发和运行的平台
  • 屏蔽硬件、操作系统、网络和数据库的差异
  • 提供应用的负载均衡和高可靠性、安全机制与管理功能
  • 提供一种通用的服务去执行不同的功能,避免重复的工作和使应用之间高效协作

8.构件、连接件、软件重用

  • 构件即组件,是一个功能相对独立的、具有可重用价值的软件单元。
  • 连接件事一种架构元素,通过对构件之间交互规则的建模来实现构件之间的连接。
  • 软件重用师使用已有的软件产品来开发新软件系统的过程。

构件的三个特性:独立部署单元、没有外部可见状态、作为第三方那的组装单元。

系统构件组装分为三个不同的层次:定址、集成、扩展。

9.层次型架构的缺点

  • 层与层之间可能难以抽象和划分
  • 分层增加了系统的复杂性,使得系统变得庞大
  • 不同层次之间的耦合度高的系统难以实现

10.架构开发方法ADM

ADM生命周期:准备、需求管理、架构愿景、业务架构、信息系统架构、技术架构、机会和解决方案、迁移规划、实施治理、架构变更管理。

11.微服务架构的优缺点

优点:

  • 职责单一、独立性强
  • 容错能力强
  • 松耦合,易拓展
  • 技术异构

缺点:

  • 测试和运维均复杂
  • 分布式环境下的数据一致性更为复杂

11.云原生架构

设计原则:

  • 服务化原则:使用微服务架构进行系统开发
  • 弹性原则:可以根据业务自动伸缩或者扩容
  • 韧性原则:面对异常的抵抗能力
  • 自动化原则:通过自动化运维工具进行部署
  • 可观测原则:通过日志、链路追踪和度量
  • 零信任原则:默认不信任内部或者外部的任何人、系统、设备
  • 架构持续演进原则:业务高速迭代的情况下架构与业务的平衡

12.SOA面向服务架构

面向服务架构(SOA)是一种软件设计范式,旨在通过将应用程序功能分解为可重用的独立服务,提升系统的灵活性和可维护性。

  • 服务为核心:功能单元以“服务”形式封装,每个服务具备明确的业务目标(如用户管理、订单处理),并通过标准化接口(如REST、SOAP)暴露功能。
  • 松耦合:服务间依赖最小化,通过接口契约交互,内部实现细节对调用者透明。例如,支付服务升级无需修改调用它的订单服务。
  • 标准化通信:使用通用协议(HTTP、消息队列)和数据格式(XML、JSON),确保跨平台互操作性。如Java服务可通过RESTful API与.NET服务通信。
  • 服务自治:服务独立部署、管理和扩展。例如,高并发的身份验证服务可单独集群部署,无需牵连库存服务。
  • 可组合性:通过编排服务构建复杂流程。例如,电商下单流程可组合库存检查、支付、物流服务实现。

关键优势

  • 复用性:单点登录服务可被多个系统复用,减少重复开发。

  • 敏捷性:业务规则变更时,仅需修改对应服务(如税率计算服务)。

  • 异构集成:将遗留系统(如COBOL主机)封装为服务,融入现代架构。

  • 可扩展性:热门服务(如推荐引擎)可独立横向扩展。

13.DSSA特定领域软件架构

特性:

  • 严格定义的问题域和解决域,不可越界
  • 具有普适性
  • 对整个领域进行适度的抽象
  • 架构在该领域中需要具备可重用的元素

创建步骤:

  • 定义领域范围
  • 定于领域数据字典
  • 定义设计和需求约束
  • 产生特定领域架构
  • 产生、搜集可重用的构件

二.案例考察扩展

1.应用网关的作用(和微服务架构息息相关)

  • 提供统一的入口
  • 权限身份认证等安全管理
  • 流量限流、性能监控
  • 异常重试
  • 服务降级
  • 数据缓存

2.ABSD

ABSD(Architecture-Based Software Design,基于体系结构的软件设计)是一种以软件架构为核心的开发方法,强调通过体系结构驱动设计过程,确保系统满足功能需求、质量属性及业务目标。

核心思想:

体系结构驱动,分层与抽象、复用与模块化

阶段划分:

体系结构需求、体系结构设计、文档化、复审、实现、演化

关键特点:

  • 迭代性与递归性:各阶段可反复迭代
  • 多视图描述:增强设计全面性
  • 质量属性导向:明确非功能性需求,确保架构的健壮性
  • 工具与模板支持

3.风险点、敏感点、权衡点

举例:

  • 敏感点:对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计
  • 权衡点:更改系统加密的级别将会对安全性和性能产生影响
  • 风险点: 可能导致部分业务功能的重复,影响系统的可修改性

4.质量属性的设计策略

  • 性能:优先级队列、引入并发机制、异步处理、CDN加速
  • 可用性:心跳、Ping/echo、冗余设计
  • 可修改性:信息隐藏、松耦合通信
  • 安全性:加密传输、认证授权、审计日志
  • 可靠性:事务机制、幂等设计
  • 易用性:用户反馈迭代、UI一致性设计

5.遗留系统处理

6.各种架构风格的优缺点、特点

过多,篇幅有限,这里不总结,各位自行搜索或者问Deepseek也行,重中之重,无论选择、案例还是论文都有极大概率设计。

三.真题

1.2024下半年

1.给出诸多需求分析的条目,判断属于哪些质量属性。

几乎每次都考,要学会辨析。

2.针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳模式的实现原理,张工认为从资源利用率的角度来看采取心跳模式策略比较合适,简述为什么。

实现原理:

  • ping/echo:通过 ICMP 协议发送一个“Echo Request”消息到目标主机,等待其回复“Echo Reply”。这是一种网络层的连通性测试方法。echo:更广泛地指任何类型的请求-响应模式,用于验证远程服务或组件是否可达和正常工作。这可以是基于HTTP、TCP等协议的简单请求。
  • 心跳模式:客户端定期向服务器发送心跳信号(如HTTP请求),服务器接收到后立即回应。如果连续几次心跳未得到响应,则认为服务器可能出现故障。心跳信号通常包含少量数据,比如时间戳或简单的健康检查信息,以确保不仅网络连接正常,而且应用程序本身也在正确运行。

采取心跳模式的原因:(实际上就是讲述心跳的优点)

  • 针对性强,减少不必要的通信开销;
  • 按需调整频率和内容,优化资源使用,比较灵活;
  • 结合健康检查,提高诊断精度;
  • 支持复杂环境下的高效运作。

2.2024上半年

1.简述微服务架构,并分析优缺点

微服务是一种软件架构风格,将应用程序拆分为多个小型、独立部署的服务,每个服务负责特定功能,通过轻量级通信协议(如HTTP/REST)进行交互。这种架构允许各服务独立开发、测试、部署和扩展,促进敏捷开发和持续交付。

优点:

  • 独立部署:各服务可独立部署,减少对其他模块的影响,提升发布频率和灵活性。
  • 技术多样性:不同服务可以使用不同的技术栈,最适合解决各自的问题。
  • 可扩展性:根据需要单独扩展某个服务,提高资源利用效率。

缺点:

  • 复杂性增加:系统拆分成多个服务后,增加了运维和管理复杂度。
  • 网络通信开销:服务之间的通信依赖网络,可能带来延迟和性能问题。
  • 数据一致性:分布式系统的数据一致性管理更加复杂,需要额外的机制保障数据同步。

2.质量效用树填空

还是有关质量属性的题目,必须拿下。

3.质量属性场景中,使用六元素来描述题目中可用性的两个场景。

六元素:

  • 刺激源:某个生成该刺激的实体(人,计算机,其它任何刺激器)
  • 刺激:指当刺激达到系统时需要考虑的条件。
  • 环境:指该刺激在某些条件哪发生。
  • 制品:某个制品被激励,可能是整个系统,也可能是系统的一部分。
  • 响应:指在激励达到后所采取的行动。
  • 响应度量:当响应发生时,应当能够以某种方式对其进行度量。

总的来说,本题相较于其他4者,和课本的结合度最高,争取拿下25满分~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可变参数(Variadic Functions)- 《Go语言实战指南》

Go 语言允许函数接受不定数量的参数,也称“可变参数”。这为构建灵活的函数提供了便利,常用于求和、拼接等操作。 一、语法格式 func 函数名(参数名 ...类型) 返回值类型 {// 函数体 } 可变参数本质上是一个切片(slice)&#xf…

手机换IP真的有用吗?可以干什么?

在当今数字化时代,网络安全和个人隐私保护日益受到重视。手机作为我们日常生活中不可或缺的工具,其网络活动痕迹往往通过IP地址被记录和追踪。那么,手机换IP真的有用吗?它能为我们带来哪些实际好处?本文将为你一一解答…

Linux517 rsync同步 rsync借xinetd托管 配置yum源回顾

计划测试下定时服务 同步成功 是否为本地YUM源内容太少?考虑网络YUM源 单词拼错了 计划后面再看下 MX安装 参考 计划回顾配置YUM源 配置本地YUM源配置外网YUM源配置仓库YUM源(不熟) 参考 参考阿里云 配置完毕 本地yum源配置 先备份 再…

第三部分:内容安全(第十六章:网络型攻击防范技术、第十七章:反病毒、第十八章:入侵检测/防御系统(IDS/IPS))

文章目录 第三部分:内容安全第十六章:网络型攻击防范技术网络攻击介绍流量型攻击 --- Flood攻击单包攻击及防御原理扫描窥探攻击畸形报文攻击Smurf攻击Land攻击Fraggle攻击IP欺骗攻击 流量型攻击防御原理DDoS通用攻击防范技术 ---- 首包丢弃TCP类攻击SYN…

c++成员函数返回类对象引用和直接返回类对象的区别

c成员函数返回类对象引用和直接返回类对象的区别 成员函数直接返回类对象&#xff08;返回临时对象&#xff0c;对象拷贝&#xff09; #include <iostream> class MyInt { public:int value;//构造函数explicit MyInt(int v0) : value(v){}//加法操作,返回对象副本&…

阿里巴巴 1688 数据接口开发指南:构建自动化商品详情采集系统

在电商行业数据驱动决策的趋势下&#xff0c;高效获取商品详情数据成为企业洞察市场、优化运营的关键。通过阿里巴巴 1688 数据接口构建自动化商品详情采集系统&#xff0c;能够快速、精准地采集海量商品信息。本文将从开发准备、接口分析、代码实现等方面&#xff0c;详细介绍…

c语言 socket函数

c语言 socket函数 在 C 语言中,socket 函数是网络编程的核心函数之一,用于创建一个网络套接字(socket),它是网络通信的端点。以下是关于 socket 函数的详细介绍: 函数原型 #include <sys/socket.h>int socket(int domain, int type, int protocol);参数说明 domai…

Linux进程通讯和原子性

在Linux系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;和原子性是并发编程中的核心问题。以下是对这些概念的详细分步解释&#xff1a; 一、进程间通信&#xff08;IPC&#xff09;方法 1. 管道&#xff08;Pipe&#xff09; 匿名管道&#xff1a;用于父子进程等有…

Java二叉树题目练习

Java二叉题目练习 相同的树对称二叉树平衡二叉树二叉树的最近公共祖先二叉树的层序遍历二叉树层序遍历 ||二叉树遍历 相同的树 二叉树的题目大多数时候就可以采用递归的方法写 因为二叉树是由根左子树和右子树组成&#xff0c;每一棵左子树和右子树又可以被看成一颗完整的树&am…

【全网首发】解决coze工作流批量上传excel数据文档数据重复的问题

注意&#xff1a;目前方法将基于前一章批量数据库导入的修改&#xff01;&#xff01;&#xff01;&#xff01;请先阅读上篇文章的操作。抄袭注明来源 背景 上一节说的方法可以批量导入文件到数据库&#xff0c;但是无法解决已经上传的条目更新问题。简单来说&#xff0c;不…

dockerdesktop 重新安装

1、卸载 dockerdesktop 卸载时&#xff0c;最后一步删除镜像文件 会卡住 取消 2、在资源管理器中将镜像文件路径改名 如&#xff1a;e:\docker 修改 e:\docker1 3、重新安装wsl wsl --shutdown 以管理员身份运行hy.bat pushd "%~dp0" dir /b %SystemRoot%\servic…

Linux docker常用命令

1、docker服务相关命令 启动docker服务&#xff1a;systemctl start docker 停止docker服务&#xff1a;systemctl stop docker 重启docker服务&#xff1a;systemctl restart docker 查看docker服务状态&#xff1a;systemctl status docker 设置开机启动docker服务&#xff1…

南京邮电大学金工实习答案

一、金工实习的定义 金工实习是机械类专业学生一项重要的实践课程&#xff0c;它绝非仅仅只是理论知识在操作层面的简单验证&#xff0c;而是一个全方位培养学生综合实践能力与职业素养的系统工程。从本质上而言&#xff0c;金工实习是学生走出教室&#xff0c;亲身踏入机械加…

Java EE初阶——wait 和 notify

1. 线程饥饿 线程饥饿是指一个或多个线程因长期无法获取所需资源&#xff08;如锁&#xff0c;CPU时间等&#xff09;而持续处于等待状态&#xff0c;导致其任务无法推进的现象。 典型场景 优先级抢占&#xff1a; 在支持线程优先级的系统中&#xff0c;高优先级线程可能持续…

MATLAB中heatmap函数

无论对表格还是对矩阵的可视化&#xff0c;都非常好用。 样本特征 高斯核 https://ww2.mathworks.cn/help/matlab/creating_plots/create-heatmap-from-tabular-data.html

win11安装Joplin Server私有化部署(docker)

摘要 本指南将帮助你在 Windows 11 系统 上通过 Docker Docker Compose 完成 Joplin Server 的本地搭建&#xff0c;并实现数据持久化、PostgreSQL 后端支持、用户登录与同步功能。 条件说明✅ 已安装 Docker Desktop for Windows可从 Docker 官网 下载并安装&#xff0c;建议…

嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐

按键控制LED灯 按键控制LED的开发流程&#xff1a; 第一步&#xff1a;使能功能复用时钟 第二布&#xff0c;配置复用寄存器 第三步&#xff0c;配置中断屏蔽寄存器 固件库按键控制LED灯 外部中断EXTI结构体&#xff1a;typedef struct{uint32_t EXTI_Line; …

《Deepseek从入门到精通》清华大学中文pdf完整版

资源介绍&#xff1a; 《DeepSeek&#xff1a;从入门到精通》是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的精心撰写的一份专业文档。该文档以通俗易懂的方 式&#xff0c;全面介绍了DeepSeek的使用方法&#xff0c;为用户提供了极具价值的指导。 这份文档内容丰…

Apache Pulsar 消息、流、存储的融合

Apache Pulsar 消息、流、存储的融合 消息队列在大层面有两种不同类型的应用&#xff0c;一种是在线系统的message queue&#xff0c;一种是流计算&#xff0c;data pipeline的streaming高throughout&#xff0c;一致性较低&#xff0c;延迟较差的过程。 存算分离 扩容和缩容快…

JavaScript vs Python 用于 Web Scraping(2025):终极对比指南

1. 引言 在不断发展的 Web Scraping 领域&#xff0c;选择合适的编程语言对于项目的成功至关重要。虽然 JavaScript 和 Python 在 2025 年仍然是 Web Scraping 领域的热门选择&#xff0c;但它们各自具备不同的优势和挑战。 本指南将深入分析 JavaScript 和 Python 的核心特性…