重中之重,本题争取拿下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.什么是架构风格
类似于建筑风格,从相同类型的软件系统中抽取其架构的共性,是一种惯用模式,反映了众多系统共有的结构和语义。
- 软件架构为软件系统提供了一个机构、行为和属性的高级抽象
- 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约数
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满分~