这9种图形工具分别是用例图、类图、对象图、活动图、状态图、序列图、协作图、构件图、部署图。
1、用例图是用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
2、类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。 类图又包含了几种关系:
-
关联(Association):
- 关联表示两个类之间的连接,描述了它们之间的静态关系。关联可以是双向的或单向的,也可以有角色(role)和多重性(multiplicity)的概念。
- 例如,一个订单类和一个顾客类之间可能存在关联,表示订单与顾客之间有某种联系。
-
-
聚合(Aggregation):
- 聚合表示整体与部分之间的关系,强调整体对象可以包含部分对象,但它们的生命周期可以是独立的。聚合用空心的菱形表示。
- 例如,一个汽车类与轮胎类之间可能存在聚合关系,表示汽车包含轮胎,但轮胎可以独立于汽车存在。
-
-
组合(Composition):
- 组合也表示整体与部分之间的关系,但强调整体对象负责部分对象的生命周期。组合用实心的菱形表示。
- 例如,一个公司类与雇员类之间可能存在组合关系,表示雇员是公司的一部分,其生命周期受公司管理。
-
-
依赖(Dependency):
- 依赖表示一个类的变化可能会影响到另一个类。依赖关系用带箭头的虚线表示。
- 例如,如果一个类的方法使用了另一个类的对象作为参数,那么它们之间存在依赖关系。
-
-
继承(Inheritance):
- 继承表示一个类继承另一个类的特征和行为。子类(派生类)继承父类(基类)的属性和方法。继承关系用带空心三角形的实线表示。
- 例如,猫和狗可以是动物类的子类,继承了动物类的属性和方法。
-
这些关系有助于在类图中捕捉系统的结构,强调类之间的静态联系。在实际应用中,这些关系可以组合使用,形成复杂的系统结构。合理使用这些关系有助于设计出灵活、可扩展且易维护的系统。
3、对象图,它与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
4、活动图是描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
5、状态图是描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
6、序列图(顺序图)是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
7、协作图是和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
8、构件图 (组件图)是描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
9、部署图 (配置图)是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。
通过深入研究每种图的目的、结构和应用,我们可以更好地理解如何利用UML来捕捉、分析和设计复杂系统。
首先,用例图是系统的功能需求的视觉化表示。用例图以参与者和用例为中心,展示了系统如何与外部实体互动。参与者代表外部实体,而用例则表示系统的功能单元。这有助于识别系统的关键功能和与外部实体的交互,是在项目初期进行需求分析的有力工具。
类图则关注系统的静态结构。它展示了系统中的类、类之间的关系以及类的属性和方法。通过类图,我们可以理解系统中对象的组织结构,包括继承、关联、聚合和组合关系。这对于建模系统的静态视图和设计系统的对象模型非常重要。
时序图和协作图则关注系统的动态行为。时序图描述了对象之间的交互顺序,强调消息的传递。协作图同样描述对象之间的协作关系,侧重于强调对象之间的消息传递和协作。这两种图形工具非常有助于理解系统中的时序和交互模式,尤其在描述系统中的活动流程和对象协作方面。
状态图关注对象的状态和状态之间的转换。通过状态图,我们能够捕捉对象的生命周期和状态变化条件。这对于理解系统中对象的行为和状态转换非常重要,特别是在建模状态机的情境下。
活动图则关注系统中的活动和动作,展示它们之间的关系。它对于建模系统的业务流程和操作流程非常有用,尤其是在描述并发活动和流程控制时。
部署图和组件图则关注系统的物理结构。部署图描述了软件和硬件组件的物理部署,展示了软件如何映射到物理硬件上。组件图则描述了系统中组件及其之间的关系,有助于理解系统的组件结构和依赖关系。这两种图形工具对于系统的物理架构和模块化设计非常关键。
最后,对象图展示了特定时间点的对象实例及其之间的关系,是类图的实例化。通过对象图,我们能够在系统设计的早期验证类图的准确性和完整性,确保系统在实现阶段符合设计的预期。
综合来看,这9种UML图形工具为软件工程师和系统分析师提供了一套强大的工具,帮助他们更好地理解和描述系统的各个方面。这些图形工具不仅在项目的不同阶段提供了标准化的视图,还为团队提供了一种共享和交流复杂系统结构和行为的方式。通过运用这些工具,团队可以更加有效地进行系统设计、实现和维护,确保项目的成功完成。
(文中的图片例图摘自https://blog.csdn.net/u012500848)