目录
4+1视图,即逻辑视图,过程视图,实现视图,部署视图,+用例视图。
- 为什么不用一个视图?
针对多个用户,即终端用户,设计人员,开发人员,测试人员,集成人员而言,4+1视图更精准对应到用户,清晰全面 - 为什么是4+1视图而不是5大视图?
4个视图类似并列关系,从架构设计的4个不同角度设计;用例视图是需求的抽象,正向驱动另外四大视图的设计,逆向检查另外四个视图的正确性和完整性。
逻辑视图
逻辑视图主要关注的是业务逻辑,也就是软件系统的功能性。它描述了系统中的功能元素,功能服务,业务域对象,以及他们之间的交互。
逻辑视图主要通过以下几种UML图来表达:
- 类图(Class Diagram):展示系统中的类、接口以及他们之间的静态关系,如继承、依赖、关联和聚合等。
- 对象图(Object Diagram):是类图的实例,展示了系统中的对象以及他们之间的关系。
- 包图(Package Diagram):展示系统的模块结构,描述类和包的依赖关系。
- 组件图(Component Diagram):展示系统的组件以及它们之间的关系。
- 部署图(Deployment Diagram):展示系统的物理架构和部署情况。
过程视图
过程视图描述了系统的动态行为,包括系统的并发性和同步性,关注的是系统的运行时行为。
过程视图通常包含一系列的进程以及它们之间的交互。这些进程可能是并发执行的,也可能需要进行同步。过程视图展现了系统的动态行为,如进程的创建,销毁,调度,以及进程之间的同步和通信等。
通常使用以下几种UML图来表达:
- 活动图:展示系统中各个活动的执行流程和它们之间的关系,通常用于表示并发和同步。
- 顺序图:展示对象之间的交互顺序,可用于表示进程或线程之间的通信。
- 状态图:展示系统或系统中某个部分在其生命周期内可能处于的状态,以及由一个状态转换到另一个状态的事件或条件
- 协作图(通信图):展示对象间的交互关系,可以用于表示进程或线程之间的通信
开发视图
开发视图主要关注程序或系统的实际组织,提供了程序员需要的详细信息,用以理解,构建和测试系统的软件。开发试图主要包括:
- 源码管理:详细说明如何管理和组织源码
- 软件架构:描述了软件的组织架构,包括软件组件和它们之间的关系
- 数据库架构:描述了数据存储的方式,包括数据库模式和其他相关信息
- 测试:描述了如何测试软件,包括测试策略和测试计划
- 构建:描述如何构建和部署软件,包括构建工具和部署过程
开发视图可以帮助开发人员理解和实现设计,并为后期的维护和迭代提供指导。
通常由以下几种UML来表达:
- 包图(Package Diagram):用于展示系统的模块组织和依赖关系。
- 组件图(Component Diagram):用于描述系统的物理组成部分,包括软件组件、硬件组件、接口和它们之间的关系。
- 类图(Class Diagram):用于描述系统中的类及其相互之间的关系,包括继承、聚合和关联等。
- 对象图(Object Diagram):用于描述系统中的对象及其相互之间的关系,这对于理解和验证系统的静态结构非常有用。
物理视图(部署视图)
物理视图主要关注系统的物理部署及其在硬件上的分布。它描述了系统的硬件组成,网络拓扑,通信和数据传输等信息。物理视图主要包括:
- 硬件架构:描述了系统所运行的硬件设备,包括服务器,工作站,网络设备等
- 网络架构:描述了网络的拓扑结构,以及各节点之间的通信方式
- 部署方案:描述了软件在硬件设备上的部署方式,包括分布式部署,集群部署等
- 安全性:描述了系统的安全策略,包括数据加密,防火墙设置,访问控制等。
- 性能:描述了系统的性能需求,包括处理能力,存储能力,网络带宽等
物理视图可以帮助系统管理员和运维人员理解系统的运行环境,进行有效的部署和管理。
部署视图主要由UML中的部署视图来表达,它用于描述物理硬件的配置和软件组件在硬件上的部署情况。包括节点、设备、连接等元素。
用例视图
用例视图主要描述的是系统与外部交互的过程,也就是系统的功能需求。用例视图通常由一些列的用例或场景组成,每个用例或场景代表了一个特定的功能或业务流程。通过这种视图,可以清晰的展现出系统的主要功能和系统与用户或其他系统的交互过程。
用例视图通常是系统分析和设计的起点,它能够帮助我们理解用户的需求,定义系统的功能。主要使用UML中的用例图来表达,它展示了系统的参与者、用例(系统的功能)以及参与者与用例之间的交互关系。用例图是用来捕获系统需求、描绘用户与系统交互的工具。