软件系统建模工具_UML
Catalogue
1. UML介绍
关键词:系统建模、系统分析与设计、统一建模语言、软件建模与系统设计
1.1 UML概念(What)
UML 的全称是 Unified Modeling Language,即统一建模语言。
1.2 可以做什么?(Where-应用场景)
- 软件开发项目:项目启动阶段,用例图可用于明确系统的功能需求和用户期望; 类图有助于设计系统的类结构和它们之间的关系,为编程实现提供清晰的蓝图。
- 企业信息系统规划:组件图和部署图能描绘系统的组件构成和物理部署情况,辅助企业IT基础设施的规划和优化。
- 数据库设计:通过类图和实体关系图(ERD)的结果,可以有效的设计数据库的表结构和关系。
- 业务流程建模:活动图可清晰地展示复杂的业务流程,帮助发现流程中的瓶颈和优化点。
- 系统集成:序列图和协作图有助于理解不同系统之间的交互方式和消息传递,从而实现高效的系统集成。
- 技术选项和架构决策:基于UML图对系统的描述,可以更有针对性地选择合适的技术框架和架构模式。
1.3 为什么用UML?(Why-重点)
首先 随着软件系统的复杂度越来越高,并且软件开发迭代过程中往往有许多角色参与和使用,怎样从不同角色视角更好理解这个软件系统?
其次,对软件系统以及各个模块组件清晰的理解有助于大家建立相同的认识便于软件生命周期过程中沟通和协作和减少理解偏差,有助于软件设计人员更准确设计更好的系统。
而UML工具包含不同的图表(模型),提供不同的角度来让各个角色更清晰的认识系统。各角色人员包括系统分析师、设计师、程序员、测试人员、客户、技术文件撰稿人员。
那UML都有哪些图表呢,以及重要常用的有哪些呢?接下来详细介绍
1.4 UML图表类型
大致分为结构性图表和行为性图表
1.4.1 结构性图表
七中结构性图表包括:
- 类图 (Class Diagram)
- 组件图 (Component Diagram)
- 部署图 (Deployment Diagram)
- 对象图 (Object Diagram)
- 包图 (Package Diagram)
- 复合结构图 (Composite Structure Diagram)
- 轮廓图 (Profile Diagram)
1.4.2 行为性图表
行为性图表显示了系统中对象的动态行为 ,可用以表达系统随时间的变化。行为性图表有七种类型:
- 用例图 (Use Case Diagram)
- 活动图 (Activity Diagram)
- 状态机图 (State Machine Diagram)
- 序列图 (Sequence Diagram)
- 通訊圖 (Communication Diagram)
- 交互概述图 (Interaction Overview Diagram)
- 时序图 (Timing Diagram)
2. UML图表
其中最常用和最重要的2个是类图和时序图。
2.1 结构性图表
2.1.1 类图
(Class Diagram)
类图是一切面向对象方法的核心建模工具。描述了系统中对象的类型以及它们之间存在的各种静态关系。
1. 关系
类图有三种主要的关系
- 关联:代表类型之间的关系(一个人为公司工作,一间公司有多个办事处)
- 继承:传为实例关系图(ERD)应用于面向对象设计而设的一种关系。 它在面向对象设计中的继承概念相互呼应。
- 聚合:面向对象设计中的一种对象组合的形式。
各种关系的强弱顺序:泛华=实现>组合>聚合>关联>依赖
- 关联(Association):表示类之间的联系,可以是单向的或双向的,具有名称、角色和多重性等属性。例如:学生和课程之间存在关联,一个学生可以选择多门课程,一门课程可以有多个学生选修。
- 聚合(Aggregation):表示整体与部分的关系,部分可以独立于整体存在。比如,汽车和轮胎,轮胎可以从汽车上拆下来而任然存在。
- 组合(Composition):表示整体与部分的关系,但部分不能独立于整体存在。例如,房子和房间,房间不能脱离房子而单独存在。
- 集成/泛华(Generalization):表示子类与父类的关系,子类继承父类的属性与方法。比如,哺乳动物是动物的子类。
- 实现(Realization):类与接口之间的关系,表示类实现了接口中定义的操作。例如,一个具体的排序类实现了排序接口定义的排序方法。

在 UML 类图的描述中,一般在较为宽泛地提及类之间的联系时,可以使用“relation”这个统称(draw.io中不同的线段表示)。
而使用具体的关系类型,如关联、聚合、组合、继承、实现等,通常基于以下情况:
当需要清晰准确地描述类之间联系的特定性质和约束时,应使用具体的关系类型:
- 如果强调类之间是一种普通的连接和交互,没有明确的整体部分关系或层次关系,就使用关联。
- 当要表明整体和部分之间部分可以独立存在于整体的关系,使用聚合。
- 若要突出整体和部分之间部分不能独立于整体存在的强拥有关系,就用组合。
- 对于表示类之间的层次分类,子类继承父类的特性,采用继承(泛化)关系。
- 当类需要实现某个接口定义的方法和行为时,使用实现关系。
例如,如果只是简单地说“这些类之间存在某种关系”,可以用“relation”。但如果要详细说明“学生类继承自人员类”“汽车类和发动机类是组合关系”,就会使用具体的关系类型。