de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Hướng dẫn thực hành về 14 loại biểu đồ UML sử dụng Công cụ VPasCode

Các biểu đồ UML thường được nhóm thành cấu trúc biểu đồ, mô tả hệ thống được cấu tạo từ những gì, và hành vi biểu đồ, mô tả hệ thống hoạt động như thế nào. Các ví dụ dưới đây sử dụng một kịch bản cửa hàng trực tuyến duy nhất để có thể so sánh và điều chỉnh. UML 2.5.1 là bản quy phạm chính thức được tham chiếu ở đây.

PlantUML hiển thị trực tiếp nhiều ký hiệu UML. Một số loại biểu đồ chuyên biệt—đặc biệt là profile, cấu trúc tổng hợp, truyền thông và tổng quan tương tác—có thể được biểu đạt bằng cách xấp xỉ thực tế trong PlantUML thay vì sử dụng trình hiển thị biểu đồ chuyên dụng. Các chú thích sẽ chỉ ra những trường hợp đó.

Biểu đồ cấu trúc

1. Biểu đồ lớp

Hiển thị các lớp của hệ thống, dữ liệu và các thao tác của chúng, cũng như các mối quan hệ như liên kết, thừa kế và tổng hợp. Sử dụng nó để thảo luận về mô hình miền hoặc thiết kế hướng đối tượng.

@startuml
class Customer {
  +id: String
  +email: String
  +placeOrder(): Order
}

class Order {
  +number: String
  +status: OrderStatus
  +total(): Money
}

class OrderLine {
  +quantity: int
  +unitPrice: Money
}

class Product {
  +sku: String
  +name: String
}

Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml

Đọc nó:một khách hàng có thể đặt nhiều đơn hàng; một đơn hàng chứa một hoặc nhiều dòng; mỗi dòng tham chiếu đến một sản phẩm. Hình thoi đầy màu biểu thị sự tổng hợp: đơn hàng sở hữu các dòng của nó.

2. Biểu đồ đối tượng

Hiển thị các thể hiện cụ thể và các liên kết tại một thời điểm. Nó hữu ích để minh họa dữ liệu mẫu hoặc giải thích mô hình lớp với một kịch bản cụ thể. Trong PlantUML, hãy sử dụng ký hiệu đối tượng.

@startuml
object "alice:Customer" as alice {
  id = C104
  email = [email protected]
}

object "order:Order" as order {
  number = O9001
  status = PAID
}

object "line:OrderLine" as line {
  quantity = 2
  unitPrice = 19.99
}

object "mug:Product" as mug {
  sku = MUG-01
  name = Travel mug
}

alice -- order
order *-- line
line --> mug
@enduml

3. Biểu đồ thành phần

Hiển thị các phần mềm có thể triển khai hoặc thay thế và các phụ thuộc của chúng. Sử dụng nó để truyền đạt kiến trúc ứng dụng và các ranh giới tích hợp.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider

web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml

4. Biểu đồ cấu trúc tổng hợp

Hiển thị các phần bên trong của một phân loại—như một thành phần hoặc lớp—và cách các phần đó kết nối thông qua các cổng. Nó hữu ích khi sự cộng tác nội bộ quan trọng hơn kiến trúc hệ thống xung quanh.

PlantUML không cung cấp cú pháp cấu trúc tổng hợp chuyên biệt được hỗ trợ phổ biến. Bản phác thảo theo phong cách biểu đồ lớp này truyền đạt các thành phần và kết nối:

@startuml
allowmixing
skinparam componentStyle rectangle

class Car {
}

package "Car" {
  component "engine : Engine" as engine {
    portout p1
  }

  component "transmission : Transmission" as trans {
    portin p2
    portout p3
  }

  component "wheel : Wheel [4]" as wheels {
    portin p4
  }

  p1 -- p2 : drives
  p3 -- p4 : power
}

@enduml

Hãy xem đây là một bản phác thảo cấu trúc; nó không hiển thị các cổng hoặc ngữ nghĩa kết nối UML chính thức.

5. Biểu đồ triển khai

Ánh xạ các sản phẩm phần mềm hoặc dịch vụ lên các nút phần cứng và môi trường thực thi. Sử dụng nó để giải thích nơi phần mềm chạy và các nút thời gian chạy giao tiếp với nhau như thế nào.

@startuml
node "Thiết bị khách hàng" as client {
  artifact "Trình duyệt"
}

node "Đám mây" {
  node "Máy chủ ứng dụng" as appHost {
    artifact "Store API"
  }
  database "Cơ sở dữ liệu đơn hàng" as db
}

cloud "Nhà cung cấp thanh toán bên ngoài" as pay

client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml

6. Biểu đồ gói

Nhóm các phần tử mô hình vào các không gian tên hoặc lớp và hiển thị các phụ thuộc giữa các nhóm đó. Sử dụng nó để giải thích tổ chức mã và định hướng kiến trúc.

@startuml
package "store.web" {
  class CheckoutController
}

package "store.application" {
  class PlaceOrder
}

package "store.domain" {
  class Order
  class Product
}

package "store.persistence" {
  class OrderRepository
}

CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml

7. Biểu hồ sơ

Định nghĩa một phần mở rộng chuyên biệt cho miền sử dụng các biệt danh, giá trị gắn thẻ và các ràng buộc. Sử dụng nó khi một dự án cần một từ vựng mô hình hóa nhất quán vượt ra ngoài UML tiêu chuẩn.

PlantUML có thể hiển thị các khái niệm hồ sơ dưới dạng bản phác thảo theo phong cách UML, nhưng đây không phải là trình hiển thị biểu đồ hồ sơ chuyên biệt.

@startuml
class "«profile» StoreProfile" as Profile
class "«stereotype» «Service»" as Service
class "«stereotype» «Repository»" as Repository
class "«metaclass» Component" as Component

Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends

note right of Service
  tagged value:
  owner: String
end note
@enduml

Biểu đồ hành vi

8. Biểu đồ trường hợp sử dụng

Hiển thị các tác nhân bên ngoài và các mục tiêu hệ thống mà họ tương tác. Sử dụng nó để xác định phạm vi và nắm bắt các yêu cầu chức năng ở mức độ cao.

@startuml
hướng từ trái sang phải
actor Khách hàng
actor "Nhà cung cấp thanh toán" as Provider

rectangle "Cửa hàng trực tuyến" {
  usecase "Duyệt sản phẩm" as Browse
  usecase "Đặt hàng" as Place
  usecase "Thanh toán cho đơn hàng" as Pay
  usecase "Theo dõi đơn hàng" as Track
}

Customer --> Browse
Customer --> Place
Customer --> Track
Provider --> Pay
Place ..> Pay : <<include>>
@enduml

9. Biểu đồ hoạt động

Mô hình hóa quy trình làm việc: các hành động, quyết định, đường song song và việc chuyển giao. Sử dụng nó cho các quy trình kinh doanh, thủ tục vận hành hoặc luồng điều khiển của thuật toán.

@startuml
start
:Chọn sản phẩm;
:Nhập thông tin giao hàng;
:Tính tổng;

if (Sản phẩm có sẵn?) then (có)
  :Xác thực thanh toán;
  if (Thanh toán được phê duyệt?) then (có)
    :Tạo đơn hàng;
    :Gửi xác nhận;
  else (không)
    :Hiển thị lỗi thanh toán;
  endif
else (không)
  :Hiển thị sản phẩm không có sẵn;
endif

stop
@enduml

10. Biểu đồ máy trạng thái

Mô tả các trạng thái mà một thực thể có thể chiếm giữ và các sự kiện hoặc điều kiện gây ra chuyển đổi. Sử dụng nó khi hành vi của một đối tượng phụ thuộc vào trạng thái hiện tại của nó.

@startuml
[*] --> Dự thảo
Dự thảo --> Chờ thanh toán : submit
Chờ thanh toán --> Đã thanh toán : payment approved
Chờ thanh toán --> Đã hủy : payment declined
Chờ thanh toán --> Đã hủy : customer cancels
Đã thanh toán --> Đã giao hàng : dispatch
Đã giao hàng --> Đã giao : delivery confirmed
Đã hủy --> [*]
Đã giao --> [*]
@enduml

11. Biểu đồ trình tự

Hiển thị các tin nhắn được trao đổi giữa các thành tham gia theo thứ tự thời gian. Sử dụng nó để mô tả một kịch bản, luồng gọi API hoặc tương tác giữa các dịch vụ.

@startuml
actor Khách hàng
participant "Cửa hàng Web" as Web
participant "Dịch vụ đơn hàng" as Orders
participant "Dịch vụ thanh toán" as Payments

Customer -> Web : submit checkout
Web -> Orders : create order
Orders -> Payments : authorize payment
Payments --> Orders : approved
Orders --> Web : order confirmation
Web --> Customer : show confirmation
@enduml

12. Biểu đồ truyền thông

Nhấn mạnh vào các đối tượng cộng tác và các liên kết giữa chúng; việc đánh số tin nhắn cho thấy thứ tự của các tương tác. Sử dụng nó khi mạng lưới các thành tham gia cộng tác quan trọng hơn so với một dòng thời gian.

PlantUML không có trình hiển thị biểu đồ truyền thông chuyên dụng trong bộ UML tiêu chuẩn của nó. Bản phác thảo liên kết đối tượng này gán nhãn cho các tin nhắn bằng số thứ tự:

@startuml
object Khách hàng
object WebStore
object OrderService
object PaymentService

Customer --> WebStore : 1: checkout()
WebStore --> OrderService : 1.1: createOrder()
OrderService --> PaymentService : 1.2: authorize()
PaymentService --> OrderService : 1.3: approved
OrderService --> WebStore : 1.4: confirmation
@enduml

13. Biểu đồ tổng quan tương tác

Cung cấp cái nhìn tổng quan về luồng điều khiển ở mức cao của các tương tác, kết hợp luồng kiểu hoạt động với các tham chiếu đến các kịch bản tương tác. Sử dụng nó để hiển thị cách nhiều kịch bản ở mức trình tự được tích hợp vào một quy trình lớn hơn.

Ví dụ PlantUML này sử dụng biểu đồ hoạt động làm tổng quan, với tên kịch bản thay thế cho các tương tác được tham chiếu:

@startuml
skinparam conditionStyle InsideDiamond

title Sơ đồ tổng quan tương tác: Hệ thống xử lý đơn hàng

start

:Khách hàng đặt hàng;

if (Hàng có sẵn không?) then (có)
  
  partition "sd Chuỗi quy trình thanh toán" {
    :Xác thực thanh toán;
    :Trừ tồn kho;
  }
  
else (không)
  
  partition "sd Quy trình đặt hàng sau" {
    :Thông báo cho khách hàng;
    :Tạo yêu cầu nhà cung cấp;
  }
  
endif

fork
  partition "sd Chuỗi quy trình giao hàng" {
    :Đóng gói đơn hàng;
    :Giao đến địa chỉ;
  }
fork again
  partition "sd Chuỗi quy trình tính tiền" {
    :Tạo hóa đơn;
    :Gửi email xác nhận;
  }
end fork

:Đóng đơn hàng;

stop
@enduml

Để mô tả chi tiết các trao đổi thông tin bên trong mỗi kịch bản, hãy tạo một sơ đồ chuỗi riêng biệt.

14. Sơ đồ thời gian

Hiển thị sự thay đổi trạng thái hoặc giá trị theo trục thời gian. Sử dụng nó cho các hành vi nhạy cảm về thời gian, giao thức, tương tác phần cứng, hoặc các yêu cầu liên quan đến thời lượng và thời hạn.

@startuml
robust "Đơn hàng" as Order
concise "Thanh toán" as Payment

@0
Đơn hàng ở trạng thái Dự thảo
Thanh toán ở trạng thái Chờ

@5
Đơn hàng ở trạng thái Chờ xử lý
Thanh toán ở trạng thái Đang xử lý

@10
Thanh toán được phê duyệt

@12
Đơn hàng được xác nhận
@enduml

Chọn sơ đồ

Bắt đầu bằng câu hỏi mà sơ đồ cần trả lời:

  • Hệ thống bao gồm những gì?Lớp, đối tượng, thành phần, cấu trúc tổng hợp, gói, hồ sơ, hoặc triển khai.

  • Hệ thống làm gì?Trường hợp sử dụng, hoạt động, hoặc máy trạng thái.

  • Các thành viên hợp tác với nhau như thế nào?Chuỗi, truyền thông, tổng quan tương tác, hoặc thời gian.

Giữ mỗi sơ đồ tập trung vào một mục đích duy nhất, sử dụng tên thống nhất trên tất cả các sơ đồ, và chỉ bao gồm đủ chi tiết cho đối tượng và quyết định hiện tại. Các đoạn mã PlantUML là điểm khởi đầu: hãy kiểm tra cú pháp được hỗ trợ bởi bộ render của bạn, đặc biệt là đối với các loại sơ đồ chuyên biệt.

This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.