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

【2025软考高级架构师】——软件架构设计(4)

摘要

本文主要介绍了几种软件架构设计相关的概念和方法。包括C2架构风格的规则,模型驱动架构(MDA)的起源、目标、核心模型及各模型之间的关系;软件架构复用的概念、历史发展、维度、类型及相关过程;特定领域架构(DSSA)的定义、基本活动及产出物、类型等。

1. 软件架构概念

架构的本质

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

架构的作用

  1. 软件架构是项目干系人进行交流的手段。
  2. 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
  3. 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。

软件架构设计是【降低成本】、【改进质量】、【按时和按需交付产品】的关键因素。架构设计就是需求分配,即将满足需求的职责分配到组件上。

2. 软件架构设计与生命周期

2.1. 软件设计中4+1 视图是哪些?

2.1.1. 逻辑视图(Logical View)

  • 目的:描述系统的功能需求和静态结构,关注“系统做什么”。
  • 核心内容
    • 类图(Class Diagram)
    • 用例图(Use Case Diagram)
    • 对象图(Object Diagram)
  • 应用场景:定义模块划分、类职责、接口设计等。例如,在电商系统中,定义用户、订单、商品等核心类及其关系。
  • 示例:(用户类与订单类关联,订单类包含商品列表)

2.1.2. 开发视图(Development View)

  • 目的:描述系统的代码结构,关注“开发者如何组织代码”。
  • 核心内容
    • 组件图(Component Diagram)
    • 包图(Package Diagram)
    • 构建工具链(如 Maven/Gradle 配置)
  • 应用场景:划分模块边界、依赖管理、代码复用。例如,将电商系统分为用户服务、订单服务、支付服务等独立模块。
  • 示例:(用户服务模块依赖数据库访问模块)

2.1.3. 进程视图(Process View)

  • 目的:描述系统的运行时行为,关注“系统如何动态协作”。
  • 核心内容
    • 活动图(Activity Diagram)
    • 状态图(State Diagram)
    • 线程/进程交互图
  • 应用场景:分析并发、同步、通信机制。例如,电商系统下单时的库存扣减与支付异步处理流程。
  • 示例:(用户下单后触发库存检查进程和支付进程并行执行)

2.1.4. 物理视图(Physical View)

  • 目的:描述系统的物理部署和硬件拓扑,关注“系统如何运行在真实环境中”。
  • 核心内容
    • 部署图(Deployment Diagram)
    • 网络拓扑图
    • 服务器配置(如负载均衡、数据库集群)
  • 应用场景
    设计服务器架构、数据库分片、缓存策略。例如,电商系统部署在 AWS 上,使用 RDS 数据库和 CDN 加速静态资源。
  • 示例:(用户请求通过负载均衡器分发到多台 Web 服务器)

2.1.5. +1 场景视图(Use Case View)

  • 目的:通过典型场景串联其他视图,关注“系统如何应对用户需求”。
  • 核心内容
    • 用例图(Use Case Diagram)
    • 用户故事(User Story)
    • 场景描述(Scenario Description)
  • 应用场景:验证架构设计是否满足关键业务场景。例如,电商系统的“下单支付”场景需覆盖库存扣减、支付成功回调等流程。
  • 示例:(用户登录→选择商品→提交订单→支付→生成订单)

2.2. 架构描述语言ADL

3. 基于架构的软件开发方法(ABSD)

  • ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计。
  • ABSD方法有三个基础。
    • 第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
    • 第二个基础是通过选择架构风格来实现质量和业务需求;
    • 第三个基础是软件模板的使用。
  • 视角与视图:从不同的视角来检查,所以会有不同的视图。
  • 用例用来捕获功能需求、特定场景【刺激、环境、响应】用来捕获质量需求。

4. 软件风格

4.1. 数据流风格

4.2. 返回调用风格

4.3. 独立构建风格

4.4. 虚拟机风格

4.5. 数据为中心风格

4.6. 闭环控制架构

4.7. C2风格

5. 模型驱动架构(MDA)

6. 软件架构复用

7. 特定领域架构(DSSA)

博文参考

相关文章:

  • 关于 LLB 的问题
  • 【JAVA】使用Unirest.post模拟post接口,返回状态码403,报错Invalid CORS request
  • 【首发】类脑智能体:通往通用智能体之路-当前智能体的能力调研
  • 简述谷歌A2A协议
  • 迷你世界脚本脚本常见问题
  • mongodb 4.0+多文档事务的实现原理
  • 表单数据校验方法
  • 有ts文件却无法ts出来解决办法
  • LeetCode 2999.统计强大整数的数目:上下界数位DP
  • 【渗透测试】Vulnhub靶机-Mordor: 1.1-详细通关教程
  • SpringAi 会话记忆功能
  • Linux扩展名相关知识
  • 信息安全管理与评估广东省2023省赛正式赛题
  • Python中数值计算、表格处理和可视化的应用
  • React基础知识一
  • 【项目管理】第13章 项目资源管理-- 知识点整理
  • 【github】github不能访问了,Access to this site has been restricted.
  • 反序列化漏洞介绍与挖掘指南
  • 拜特科技签约惠生工程,携手打造高效资金管理系统
  • FTXUI 笔记(五)——基本交互组件
  • 免签国+1,中乌(兹别克斯坦)互免签证协定6月生效
  • 科技部等七部门:优先支持取得关键核心技术突破的科技型企业上市融资
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 多家中小银行存款利率迈入“1时代”
  • 最高降价三成,苹果中国iPhone开启大促销,能拉动多少销量?
  • 菲律宾举行中期选举