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 与应用分机