深度解析:多层次与多视图软件架构

多层次 / 多视图软件架构

复制代码
 一篇讲清:是什么、为什么、怎么画、怎么用

很多人把多层次架构 和多视图架构 混为一谈,其实它们是软件架构的两个核心维度:

一个管上下分层 ,一个管多角度拆解。

合在一起,才是一套完整、严谨、可落地的架构描述方法。


一、先一句话分清两者

  • 多层次架构(Layered Architecture)

从底层到上层 的垂直划分,解决:依赖关系、职责隔离、复杂度控制。

  • 多视图架构(Multi-View Architecture)

从不同视角 看同一个系统,解决:不同人关心不同事、沟通统一、架构完整。

一个是结构分层 ,一个是视角拆分。


二、多层次架构(垂直分层)

1. 核心思想

把系统按**"抽象级别"或"依赖方向"**从上到下分成多层:

  • 上层依赖下层

  • 下层不依赖上层

  • 层与层之间通过接口交互

  • 禁止跨层乱调用

目标:高内聚、低耦合、易维护、易替换。

2. 经典多层模型

(1)通用 4 层架构(最常用)

  1. 表现层 / UI 层

界面、交互、前端、可视化

  1. 应用层 / 业务逻辑层

流程、规则、服务编排

  1. 领域层 / 核心逻辑层

业务实体、算法、核心规则

  1. 基础设施层 / 数据&驱动层

数据库、文件、网络、硬件驱动、中间件

(2)工业软件多层架构

  • 设备驱动层

  • 数据采集层

  • 运动控制/算法层

  • 任务调度层

  • 应用接口层

  • UI 交互层

(3)云原生多层

  • 接入网关

  • 微服务层

  • 数据访问层

  • 存储与中间件层

3. 优点

  • 结构清晰,新人易理解

  • 某一层替换不影响其他层(比如换数据库、换UI)

  • 便于分工开发

  • 便于测试、定位问题

4. 缺点

  • 层太多会增加调用链路

  • 设计不好容易出现"跨层调用",导致退化


三、多视图架构(多角度拆解)

1. 核心思想

同一个系统,不同角色看到的内容不一样。

架构师不能只画一张图,必须从多个视角完整描述系统。

最经典、最权威的就是:

"4+1 视图模型" ------ Philippe Kruchten 提出,软件行业标准。

2. 4+1 视图详细解释

1)逻辑视图(Logical View)

  • 面向:架构师、开发人员

  • 关注:模块划分、类、组件、职责、关系

  • 产出:模块图、类图、组件图

  • 一句话:系统由哪些部分组成?

2)开发视图(Development View)

  • 面向:程序员、开发组长

  • 关注:代码结构、工程组织、模块依赖、库、框架

  • 产出:项目结构图、依赖图

  • 一句话:代码怎么组织、怎么编译?

3)进程视图(Process View)

  • 面向:系统工程师、运维

  • 关注:并发、线程、进程、通信、同步、性能

  • 产出:进程线程图、时序图

  • 一句话:系统跑起来怎么并发、怎么交互?

4)物理视图(Physical View)

  • 面向:运维、部署工程师

  • 关注:机器、节点、网络、部署、硬件

  • 产出:部署图、网络拓扑

  • 一句话:软件最终部署在哪些设备上?

+1 场景视图(Scenarios View)

  • 面向:所有人

  • 关注:核心业务流程、用例、关键路径

  • 产出:用例图、时序图

  • 一句话:系统真正跑起来是什么样?

3. 为什么要多视图?

  • 产品经理看场景视图

  • 开发看逻辑视图 + 开发视图

  • 运维看物理视图

  • 性能优化看进程视图

一套视图,统一所有人的语言。


四、多层次 + 多视图 = 完整架构

实际工作中,它们是组合使用的:

  1. 先用多层次把系统垂直切分,保证结构干净;

  2. 再用多视图把每层从不同角度描述清楚;

  3. 最终形成一套完整架构文档。

可以理解为:

  • 多层次 = 建筑的楼层结构

  • 多视图 = 平面图、立面图、水电图、暖通图


五、极简总结

  • 多层次架构 :从上到下分层,管住依赖与职责。

  • 多视图架构 :从多角度拆解,管住沟通与完整度。

真正成熟的软件架构,

一定是多层结构 + 多视图描述共同支撑。


相关推荐
这个DBA有点耶1 小时前
深入 OLTP 锁与并发:从行锁到分布式事务的一致性权衡
数据库·架构·产品
这个DBA有点耶3 小时前
innodb_autoinc_lock_mode的三种模式:批量插入时自增锁的持有逻辑与调优
数据库·架构·代码规范
zhuhai_xigedian4 小时前
源网荷储一体化柜通信层:网络架构与协议矩阵设计
网络·矩阵·架构
yaoteng26414 小时前
PHP 门户接后端接口,字段为什么总是静默丢失?4 个固定动作 + 6 个静默踩坑点
架构
forest_094 小时前
Agent 系列17|多 Agent 实战
人工智能·机器学习·架构·prompt·agi
行者全栈架构师4 小时前
我用 TRAE Work 把桌游之夜搬进了浏览器:一个计分器的从创意到上线
前端·算法·架构
yaoteng26414 小时前
零依赖 Node.js 后端 + PHP 门户 + UniApp 跨端:一张架构地图 + 9 类改动的落点,四端分销系统怎么改
架构
吴建旭 智宅焕5 小时前
智能家居品牌方交付失控的系统性风险与全国交付基础设施架构
架构·智能家居
Thneonl6 小时前
选举之后,数据去哪了:MongoDB rollback 目录里的失踪写入
后端·架构
Thneonl6 小时前
一个 user_id 打爆 Prometheus
后端·架构