当前位置: 首页 > 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)

博文参考

http://www.dtcms.com/a/130658.html

相关文章:

  • 关于 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 笔记(五)——基本交互组件
  • redission锁释放失败处理
  • 2025阿里云AI 应用-AI Agent 开发新范式-MCP最佳实践-78页.pptx
  • 利用 Genspark 和 AI IDE 一键配置 Java 开发环境
  • java异常 与 泛型<T>
  • 使用python获取电脑硬盘信息
  • GO语言-数据类型
  • 一种基于学习的多尺度方法及其在非弹性碰撞问题中的应用
  • 单双线程的理解 和 lua基础语法
  • C语言中冒泡排序和快速排序的区别
  • 输出流-----超级详细的在程序中向文件.txt中写入内容