UML(Unified Modeling Language,统一建模语言)是一种标准化的图形化建模语言,用于可视化、规范和文档化软件系统的设计。UML 提供了一套通用的符号和规则,帮助开发者、架构师和团队成员更好地理解和沟通软件系统的结构和行为。
UML 的主要用途
- 需求分析:帮助团队理解系统需求。
- 系统设计:描述系统的结构和行为。
- 文档化:生成系统设计的文档。
- 沟通:促进团队成员之间的协作和理解。
- 代码生成:某些工具可以从 UML 图生成代码。
常见的 UML 图类型
UML 包含 14 种图,分为两大类:
-
结构图(描述系统的静态结构)
- 类图(Class Diagram):描述类及其关系。
- 对象图(Object Diagram):展示对象及其关系。
- 组件图(Component Diagram):描述系统的组件及其依赖关系。
- 部署图(Deployment Diagram):展示系统的物理部署结构。
- 包图(Package Diagram):展示包及其依赖关系。
- 复合结构图(Composite Structure Diagram):展示类的内部结构。
- 结构对象图(Structural Object Diagram):展示对象的静态结构。
-
行为图(描述系统的动态行为)
- 用例图(Use Case Diagram):描述系统的功能和用户交互。
- 活动图(Activity Diagram):展示流程和活动。
- 状态图(State Diagram):描述对象的状态及其转换。
- 时序图(Sequence Diagram):展示对象之间的交互顺序。
- 通信图(Communication Diagram):展示对象之间的交互关系。
- 交互概览图(Interaction Overview Diagram):结合活动图和交互图。
- 时序图(Timing Diagram):描述对象随时间的变化。
UML 图的特点
- 标准化:UML 是一种国际标准(ISO/IEC 19505)。
- 通用性:适用于各种软件开发方法(如面向对象、敏捷开发等)。
- 可扩展性:支持自定义符号和规则。
- 工具支持:许多工具(如 Visio、StarUML、PlantUML)支持 UML 图的绘制。
UML 的应用场景
- 软件开发:需求分析、设计、文档化。
- 系统架构:描述系统的整体结构。
- 业务建模:描述业务流程和规则。
- 教育和培训:帮助学习者理解系统设计。
以下是一些常见的 UML 图的示例,包括 类图 和 用例图,这些是最常用的 UML 图类型之一。
1. 类图(Class Diagram)示例
类图用于描述系统的静态结构,展示类及其关系(如继承、关联、依赖等)。
示例:图书馆管理系统
+----------------+ +----------------+ +----------------+
| Library | | Book | | Member |
+----------------+ +----------------+ +----------------+
| - books: List | | - title: String| | - name: String |
| - members: List| | - author: String| | - borrowedBooks: List |
+----------------+ ---------------- ++ +----------------+
| + addBook(book: Book): void | | + borrowBook(member: Member): void |
| + removeBook(book: Book): void | | + returnBook(member: Member): void |
+----------------+ +----------------+ +----------------+
关系:
Library
包含多个Book
(一对多关系)。Library
包含多个Member
(一对多关系)。Member
可以借阅Book
(关联关系)。
2. 用例图(Use Case Diagram)示例
用例图用于描述系统的功能和用户(参与者)如何与系统交互。
示例:图书馆管理系统
plaintext+----------------+ +----------------+ +----------------+
| Member | | System | | Librarian |
+----------------+ +----------------+ +----------------+| | || | || +----------------+ | +----------------+ || | Borrow Book |<-----+ | Add Book | || +----------------+ +----------------+ || | || +----------------+ | +----------------+ || | Return Book |<-----+ | Remove Book | || +----------------+ +----------------+ || | |+--------------------------+ +----------------+ || | Search Book | |+----------------+ || | |+--------------------------+ +----------------+ || | View Reports | |+----------------+ |
关系:
- 参与者:
Member
:可以借书和还书。Librarian
:可以添加书、删除书、搜索书和查看报告。
- 用例:
Borrow Book
:成员可以借书。Return Book
:成员可以还书。Add Book
:管理员可以添加书。Remove Book
:管理员可以删除书。Search Book
:管理员和成员都可以搜索书。View Reports
:管理员可以查看报告。
3. 时序图(Sequence Diagram)示例
时序图用于描述对象之间的交互顺序。
示例:用户登录系统
Participant User
Participant System
Participant DatabaseUser -> System: Enter username and password
System -> Database: Verify credentials
alt Valid credentialsDatabase --> System: Return successSystem --> User: Login successful
else Invalid credentialsDatabase --> System: Return failureSystem --> User: Login failed
end
关系:
- 用户输入用户名和密码。
- 系统将请求发送到数据库。
-库 数据验证凭据并返回结果。 - 系统根据结果向用户反馈。