一、场景视图
场景视图用于描述系统的角色与行为用例间的关系,反映系统的最终需求和交互设计,通常由用例图表示。
通过用例视图的设计过程,可以正确的识别系统的用户和其它系统(Actor)、系统边界(Boundary)和用例(Use Case),并对系统的功能场景进行充分的分析,以确定系统提供的功能可以满足用户需求,而其它4个视图都是需要围绕着这些信息进行设计。
二、逻辑视图
用于描述系统的功能需求,即系统给用户提供哪些服务以及描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系统如何构建的过程,通常由UML的组件图和类图来表示。
逻辑视图不仅包括用户可见的功能,还包括为实现用户功能而必须提供的功能模块。
组件图主要是给内部开发人员看的,怎么去做代码的组织和构建。其用途有:
- 描述了系统由哪些组件/服务组成
- 理清了组件之间的关系和依赖
- 为软件开发如何分解交付提供了框架
三、物理视图
物理视图用于描述系统软件到物理软硬件的映射关系,反映出系统的组件是如何部署到一组可计算机器节点上,用于指导软件系统的部署实施过程。物理环境可能是服务器、PC机、移动终端等物理设备;软件环境可以是虚拟机、容器、进程或线程。部署视图就是对这个部署信息进行描述。
四、处理流程视图
处理流程视图用于描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程与数据流程,通常由时序图和流程图表示。
时序图就是接口调用的时间关系,也是开发人员表达接口内部细节的主要工具。
但用例图只是刻画业务行为,并没有刻画领域模型、单据和领域的划分,所以信息量其实很少。流程图可以刻画业务的核心流程,也可以在流程图的节点周围画上对应的产品功能、模型或者产生的单据。如果在流程图上再加上“用户角色”,刻画xx角色在xx阶段做了xx操作。就是一张“操作动线”
五、开发视图
开发视图用于描述系统的模块划分和组成,以及细化到内部包的组成设计,服务于开发人员,反映系统开发实施过程。
对逻辑架构元素,描述其代码位置,可以是代码仓位置,或代码目录,或是开源软件的版本信息等;系统的构建,即如何将代码编译成二进制交付件(比如.so/.bin)。这个构建信息需要包括构建依赖、构建工具链、构建环境信息等。