1、UML图(Unified Modeling Language)
统一建模语言。通过使用可视化表示,我们能够更好地理解软件或业务流程中可能存在的缺陷或错误。
1.1、行为UML图
1.1.1、活动图
用途
活动图可能是进行业务流程建模的最重要的UML图。在软件开发中,它通常用于描述不同活动和动作之间的流程。这些流程可以是顺序的也可以是并行的。它们描述了一个活动
使用、消费或产生的对象,以及不同活动之间的关系。以上所有内容对业务流程建模至关重要。
案例
案例:输出一个发布文章的活动图。
分析:
1、确定流程:发布文章
2、识别参与者:
作者、编辑、出版商
3、列出需要完成的所有活动/任务
写文章、发布草稿、审查草稿、修改草稿、发布修正草稿,审核终稿,发布文章
4、开始创建图标:命名起始点,插入第一个活动,使用连接器连接活动
5、在合适的的地方继承决策和合并符号
6、在合适的地方集成传出/传入符号
7、在合适的地方添加注释
8、验证最终活动是否完成了该过程并将连接到终端节点
产品经理比较喜欢输出这种图,如果没有,可以考虑自己先通过活动图梳理一遍需求。
活动图绘制详细教程:UML教程:如何为您的业务中的任何流程或结构建模
1.1.2、用例图
用途
用例图更多的是用来收集系统的需求,帮忙梳理正在构建的系统,也可以作为阐述系统上下文的图。
用例图用于收集系统的需求,包括内部和外部的。当分析系统以收集其功能更的时候,可以使用用例并识别参与者。用例图的目的如下:
- 收集系统的需求;
- 获取系统的外部视图;
- 确定影响系统的外部和内部因素;
- 展示参与者之间的互动关系,模拟系统的上下文。
用例图
使用参与者
和用例
对系统的功能进行建模;
用例
是系统
需要执行的一组操作,服务和功能;
系统
是正在开发或操作的东西,例如网站;
参与者
是在系统内定义的角色下操作的人或实体。
案例
订单系统的用例图
1.1.3、状态机图
用途
状态图最重要的目的是模拟对象从创建到终止的生命周期。用于给系统的对象建模,以及识别负责状态变化的事件。
案例
国际象棋的状态图
1.1.4、序列图
用途
序列图描述了参与者和对象之间发生的消息和交互的顺序。只有在需要或其他对象想要与它们通信时,才能激活Actor或对象。所有通信都按时间顺序表示。
案例
客户发送订单时序图
1.1.5、通信图
What is Communication Diagram?
用途
通信图曾经被称为协作图。顾名思义,这种UML图的主要焦点是对象(参与者)之间的通信。
由于核心组件是在对象之间交换的消息,因此我们可以像制作序列图一样构建通信图。两者之间的唯一区别是通信图中的对象显示为关联连接。
在两种类型的交互图中,序列图似乎比通信图使用得多。那么,为什么要使用通信图?首先,它们对于可视化协作执行特定任务的对象之间的关系非常有用。这很难从序列图中确定。此外,通信图还可以帮助您确定静态模型
的准确性(即类图)。
案例
以下是网上商店的通信图,展示了各个对象之间的依赖关系。
1.1.6、交互概述图
用途
UML交互概述图提供了高级抽象和交互模型。它是活动图的变体,其中节点是交互或交互事件。交互概述图侧重于交互控制流的概述,也可以显示图之间的活动流。
案例
上面的例子显示了一个被大学录取的学生。首先,学生必须接受或拒绝录取。接受后,学生必须注册课程并申请住宿。完成这两项后,学生必须向注册商付款。如果未及时收到付款,学生将被注册商排除在外。
1.1.7、时序图
用途
时序图侧重于描述在生命线内和生命线之间沿着线性时间轴变化的条件。
案例
1.2、结构UML图
1.2.1、组件图
用途
组件图是UML中的一种特殊图。目的也与目前讨论的所有其他图不同。它没有描述系统的功能,但它描述了用于实现这些功能的组件。
因此,从该观点来看,组件图用于可视化系统中的物理组件
。这些组件是库,包,文件等。
组件图将正在开发的实际系统分解为各种高级职能。每个组成部分在整个系统中负责一个明确的目标,并且只在需要知道的基础上与其他基本要素相互作用。
案例
1.2.2、类图
用途
类图是一个静态图,用于建模系统的静态视图。静态视图描述了系统的词汇表。
类图也被视为组件和部署图的基础。类图不仅用于可视化系统的静态视图,还用于构建任何系统的正向和反向工程的可执行代码。
通常,UML图不直接映射到任何面向对象的编程语言,但类图是一个例外。
类图清楚地显示了使用Java,C ++等面向对象语言的映射。从实际经验来看,类图通常用于构造目的。
简而言之,可以说,类图用于:
- 描述系统的静态视图;
- 显示静态视图元素之间的协作;
- 描述系统执行的功能;
- 使用面向对象语言构建软件应用程序。
案例
1.2.3、对象图
用途
类图表示由类及其关系组成的抽象模型。然而,对象图表示特定时刻的实例,其本质上是具体的。
这意味着对象图更接近实际的系统行为。目的是捕获特定时刻系统的静态视图。
案例
1.2.4、复合结构图
What is Composite Structure Diagram?
用途
复合结构图是添加到UML 2.0的新工件之一。复合结构图是一个UML结构图,它包含类,接口,包及其关系,并提供软件系统的全部或部分逻辑视图。它显示了结构化分类器或协作的内部结构(包括部件和连接器)。
复合结构图与类图执行类似的角色,但允许您在描述多个类的内部结构,并详细说明它们之间的交互。您可以以图形方式表示内部类和部分,并显示类之间和类之间的关联。
案例
我们有一个Item类,它可以由Order类聚合,Order类由Customer类组成,Customer类本身由StoreManager类组成。我们有很多对象最终会出现在其他对象中。
1.2.5、部署图
部署图用于可视化软件和硬件之间的关系。更具体地说,通过部署图,我们可以构建软件组件(工件)如何部署在硬件组件(称为节点)上的物理模型。
1.2.6、包图
用途
包图用于简化复杂的类图,您可以将类分组到包中。包是逻辑上相关的UML元素的集合。
包图通常用于描述包与其他包或对象之间的层次关系(分组)。
案例
分层结构
1.2.7、配置文件图
What is Profile Diagram in UML?
用途
配置文件图不是典型的UML图类型。事实上,它可以被视为一种可扩展性机制而不是任何其他类型的图表类型。
2、C4模型
The C4 Model for Software Architecture
C4 代表上下文(Context)、容器(Container)、组件(Component)和代码(Code)——一系列分层的图表,可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。可以将其视为代码的谷歌地图。
2.1、系统上下文
梳理正在构建的软件,以及系统与用户及其其他软件系统之间的关系。
描述了一个互联网银行系统的系统上下文
2.2、容器
第 2 层是一个容器图,将软件系统放大,显示组成该软件系统的容器(应用程序、数据存储、微服务等)。技术决策也是该图的关键部分。
以下是互联网银行系统的容器图示例。它显示了互联网银行系统(虚线框)由五个容器组成:服务器端 Web 应用程序、客户端单页面应用程序、移动应用程序、服务器端 API 应用程序和数据库。
2.3、组件
第 3 层是组件图,将单个容器放大,以显示其中的组件。这些组件映射到代码库中的真实抽象(例如一组代码)。相当于UML中的组件图。
下面是一个虚拟的网上银行系统的组件图示例,显示了 API 应用程序中的一些组件(而不是全部)。
2.4、代码
最后,如果你确实想要,或者说有这个必要,可以放大个别组件,以显示该组件的实现方式。
以下是一个虚拟的网上银行系统的 UML 类图示例(部分),显示了组成 MainframeBankingSystemFacade 组件的代码元素(接口和类)。
3、其他常用流程图
3.1、页面流程图
业务流程图重要的是描述谁在什么条件下做了什么事。
而页面流程图是具体到了网站、系统、产品功能设计的时候,表现页面之前的流转关系——用户通过什么操作进了什么页面及后续的操作及页面。
3.2、泳道流程图
4、系统架构图
4 Examples of System Architecture
系统架构图的格式多钟多样,主要分为以下几类:
组件图(模块图)
详细列出系统中所有的组件
分层图
业务层、数据访问层、底层对接网关...
服务图
列出目前的微服务
部署图
References
- 所有你需要了解的UML图
- UML教程:如何为您的业务中的任何流程或结构建模
- Use Case Diagram
- UML - 用例图
- 什么是交互概述图
- What is Timing Diagram?
- UML - Statechart Diagrams
- What is Communication Diagram?
- 类图
- What is Component Diagram?
- What is Composite Structure Diagram?
- What is Package Diagram?
- What is Profile Diagram in UML?
- The C4 Model for Software Architecture
- 用于软件架构的 C4 模型
- 页面流程图
- 泳道流程图:跨职能流程图