4+1视图模型 考试重点
架构描述
用逻辑、进程、开发、物理四视图,加上场景视图,从多利益相关者角度描述软件架构。
结构示意
flowchart TB
S[场景视图 +1]
S --- L[逻辑视图]
S --- P[进程视图]
S --- D[开发视图]
S --- PH[物理视图]
讲解视频
知识说明
Kruchten 的 4+1 模型强调:单一图纸无法服务所有人。逻辑视图讲功能分解(类/包);进程视图讲运行时并发;开发视图讲模块与代码组织;物理视图讲部署与网络;场景(+1)用若干用例把各视图串起来验证。
考试常问:各视图关注点、典型制品(类图、部署图等)、为何需要多视图。
特点
- 多视图
- 面向不同利益相关者
- 场景贯穿验证
- 与 UML 制品对应
优点
- 沟通对象清晰
- 减少「一张图打天下」
- 便于评审与追溯需求
局限
- 维护多份视图有成本
- 视图间可能不一致
适用
架构设计文档 重大系统评审 课程实验的架构说明
例子展示 —— RBAC 实验系统用 4+1 写设计说明
问题
只交一张包图,老师看不到并发登录、如何部署到实验室机器、用例如何走通。
做法
逻辑:用户-角色-权限类图;进程:登录会话与权限缓存;开发:controller/service/dao 模块;物理:浏览器-应用-MySQL;场景:管理员授权、学生登录访问菜单。
flowchart LR
subgraph 逻辑
U[User] --> R[Role] --> P[Permission]
end
subgraph 物理
B[浏览器] --> A[实验机应用]
A --> DB[(MySQL)]
end
// 逻辑视图关注的领域模型(示意)
class User { String id; Set<Role> roles; }
class Role { Set<Permission> perms; }
class Permission { String code; }
# 场景:管理员给角色授权
def grant(role, permission):
role.permissions.add(permission)
# 再配合部署图说明 MySQL 与应用分机