软件研发过程中常用图形总结
身处IT行业,工作中从始至终都离不开各种图,需求分析岗位、软件开发岗位、架构师岗位、测试岗位等都有各自最常用的图形。对这些图形我们更多时候是作为使用者去看图,很少去仔细思考这些图都有哪些种类、具体怎么划分、各自有什么作用、什么场景下该用什么图。现在本文就结合网络资料,加上个人的使用理解,说一说这些图形的事情。
用例图
定义和示例:
用例图顾名思义就是表示用例的图,它描述了使用人、具体用例以及边界之间的关系。由于它是从使用者的角度来表示软件系统的图形,同时也不会描绘系统内部的实现细节,因此与其它类型的图形相比,用例图是最简单和最容易看懂的。
作用
-
用于获取需求:这是与需求提出方关系最密切的图,提出方对软件系统的使用要求直接的体现在了用例图中。
-
指导研发和测试:是测试人员设计测试场景的一个重要参考依据。
应用场景
更多的用在需求分析人员与需求提出方前期的需求沟通和确认。
类图
定义和示例:
类图是一种静态的结构图,描述了软件系统(面向对象的软件系统)中类的集合、类的属性和类之间的关系。它是系统分析和设计阶段的重要产物,也是系统编码和测试阶段的重要参考模型。类图是面向对象建模的主要组成部分,也是面向对象编程的起点和依据。
作用:
-
对系统分析人员来说,他可以通过类图来表示系统分析后的软件系统中包括哪些类型、类型需要有哪些属性和方法、类型之间有什么组合关系。
-
对软件设计和编码人员来说,他可以参考类图,直观的了解到软件系统的结构和轮廓。再根据类型定义和类型关联关系,编写出更准确、更符合需求规格的软件。
-
对测试人员来说,类图可以辅助对软件系统的理解,有利于规划和设计出更全面的测试用例场景。
应用场景:
系统需求分析阶段展示需求分析成果、编码设计和实现阶段的重要参考依据、测试人员前期设计测试用例场景的抓手。
实体关系图(ER图)
定义和示例
是表示实体类型(或者叫对象)、属性、联系(Relationship)的一种图形,它主要描述的是软件系统中的实体类型有哪些属性、与其它实体类型的关系。
注意:区分实体关系图与类图的关键是理解它们之间的描述视角是不同的:类图的描述对象是编码层面的类型,而实体关系图的描述对象则是数据模型中的实体。搞清楚这一点,就很容易的理解他们的区别:
- 实体关系图中的实体和类图中的类型虽然很多时候比较相似,但并没有硬性的直接关系。
- 实体关系图只表述实体的属性,而不关心实体的行为。但是类图中却饱含了所描述的类型的属性和行为。
作用
描述数据模型的结构和关联关系()。
应用场景
应用在数据库设计阶段的数据模型建模。
流程图
定义和示例
由几种简单的符号和线条组成的图形,早期在表示算法思路和前后步骤场景得到广泛应用。得益于图像的形象和直观,流程图逐渐演变出了很多种形态。
作用
用于表示操作处理的顺序和分支逻辑。
应用场景
描述业务逻辑的步骤、描述算法逻辑等
泳道图
定义和示例
泳道图是描述某个动作发生在某个角色下的一种图形,是流程图的一种演变。由于横向和纵向的组织关系看起来像泳池的泳道,因此形象的称之为泳道图。
作用
- 清晰的区分某个流程动作所属的职责部门
- 也能够表述清楚业务流程的流转过程
应用场景
-
用于多部门(多系统)的职责划分
-
特别适合于梳理长流程、长链路复杂业务的流转过程
时序图
定义和示例
它侧重于描述对象和操作之间的时间顺序关系,重点在消息(事件)的传递过程。
从结构上它和泳道图有些像,在某些情况下也确实可以通用。但是在实际应用过程中,泳道图更擅长处理分支较多的场景。而时序图则更多用于业务流程链路长、跨多对象但是分支单一的场景,如APP发起支付的内部处理流程。
作用
能够描述处理操作中的消息在不同对象之间的传递过程。
应用场景
表述长链路的业务逻辑过程、梳理嵌套层次较多的软件代码。
架构图
定义和示例
架构图顾名思义就是用来展示一个系统的架构的。架构图是站在一个更高的视角来表达软件系统,它表现是系统整体的组成结构、各子元素之间的关系。架构图虽然看起来风格多样、内容不一,但是根据内容与视角的不同,可以大致划分为:
-
业务架构图:不关心技术实现,只对系统的功能进行归类和组织。这类图看起来比较易懂,画起来也相对容易。要求画图人员对系统功能需要非常熟悉、清晰的区分各业务模块的边界,此类架构图一般由产品经理或系统分析师制作。
-
应用架构图:此类图与业务架构图相反,主要描述的就是系统的技术层面,展示系统应用的技术组成和逻辑关联。通过应用架构图,可以了解到系统的技术组成和实现方案。这一类图主要由架构师来制作,面向的用户也主要是架构师与研发技术人员。
-
物理架构图:此类型的架构图关注的是系统的物理部署情况,尤其现在流行的系统上云的大环境下,过去普通的单体应用可能会在上云后”拆分的“七零八落,物理架构图就是为了描述组成系统的物理硬件的分布和组织情况。这个图主要面向的是运维工程师、实施工程师及部分技术架构师。
-
其它还有数据架构图、开发架构图在实际应用种并不多见,本文不再展开。
作用
- 划分目标系统边界
- 将目标系统的结构可视化
应用场景
对外展示系统的架构、新入职人员(研发、测试等)的培训、规划或重构系统时使用。
总结
本文针对IT研发过程种经常使用到的一些图进行了分类介绍,主要目的在于说明各种图形的定义和作用,以便于大家在需要画图时能够清晰明确的搞清楚自己想要的是哪一种图形。本文没有针对具体作图方法和作图技巧详细展开,建议在平时看图用图的过程中多多思考积累,针对个人所需有针对性的展开学习、实践。