de_DEen_USes_ESfa_IRfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Thành thạo các sơ đồ máy trạng thái UML: Một bài đánh giá thực hành và hướng dẫn thực tế

Giới thiệu: Tại sao tôi lại chuyển sang sử dụng sơ đồ máy trạng thái (và bạn cũng có thể làm như vậy)

Là một quản lý sản phẩm đã dành nhiều năm làm cầu nối giữa các đội kỹ thuật và các bên liên quan kinh doanh, tôi đã học được rằng sự rõ ràng là điều quan trọng nhất. Khi các yêu cầu trở nên phức tạp—đặc biệt là với các hệ thống dựa trên sự kiện như luồng thanh toán, quá trình đăng ký người dùng hoặc logic thiết bị IoT—việc mô tả bằng văn bản thường không đủ. Đó là lúc tôi phát hiện ra các sơ đồ máy trạng thái UML.

Hướng dẫn này chia sẻ hành trình học tập, áp dụng và đánh giá sơ đồ máy trạng thái của tôi thông qua công cụ của Visual Paradigm. Dù bạn là nhà phát triển mô hình hóa vòng đời đối tượng, chuyên viên phân tích nghiệp vụ ghi chép các quy tắc kinh doanh, hay quản lý sản phẩm phối hợp giữa các nhóm chức năng, hướng dẫn thực tế này sẽ giúp bạn hiểu rõ hơn không chỉ về điều gì sơ đồ trạng thái là gì, mà còn về cách sử dụng chúng hiệu quả trong các dự án thực tế. Hãy cùng bắt đầu nào.

visual Paradigm Machine Diagram : Visual Paradigm


Chính xác thì sơ đồ máy trạng thái là gì?

Ở cốt lõi, một Sơ đồ máy trạng thái (còn được gọi là sơ đồ trạng thái, biểu đồ trạng thái hoặc sơ đồ chuyển trạng thái) mô hình hóa cách một thực thể hành xử dựa trên trạng thái hiện tại và các sự kiện mà nó nhận được. Khác với sơ đồ luồng đơn giản, các máy trạng thái ghi rõ ràng rằng quá khứ có ý nghĩa—phản ứng của một đối tượng với cùng một sự kiện có thể khác nhau đáng kể tùy thuộc vào trạng thái hiện tại của nó.

State Machine Diagram Hierarchy

Trong thuật ngữ UML, các sơ đồ này thuộc nhóm sơ đồ hành vi và là thiết yếu để mô hình hóa hành vi động của hệ thống. Tôi nhận thấy chúng đặc biệt hữu ích khi ghi chép lại:

  • Quản lý phiên người dùng (đăng nhập/đăng xuất, chờ, hết hạn)

  • Quy trình xử lý đơn hàng (đang chờ, xác nhận, đã gửi, hủy)

  • Logic điều khiển thiết bị (bật, tắt, chế độ chờ, lỗi)


Tại sao lại dùng sơ đồ máy trạng thái? Một góc nhìn thực tế

Sức mạnh của sơ đồ trạng thái trở nên rõ ràng khi mô hình hóa hành vi phụ thuộc vào trạng thái. Hãy xem xét ví dụ tài khoản ngân hàng mà tôi thường dùng để trình bày với các nhóm kỹ thuật:

Bạn có 100.000 đô la trong tài khoản ngân hàng. Hàm rút tiền hoạt động như sau: số dư := số dư - số tiền rútnhưng chỉ khi số dư sau khi rút không nhỏ hơn 0 đô la.

Quy tắc này luôn đúng bất kể tần suất rút tiền. Nhưng điều gì xảy ra nếu một lần rút tiền khiến số dư trở nên âm? Bỗng nhiên, hành vi thay đổi hoàn toàn vì trạng thái của tài khoản đã chuyển từ “dương” sang “quá hạn”. Một sơ đồ máy trạng thái làm rõ sự chuyển đổi này, cùng với các điều kiện bảo vệ và hành động đi kèm.

Bí quyết quan trọng: Sơ đồ trạng thái giúp các nhóm hình dung được khi và tại sao thay đổi hành vi—không chỉ là  hành vi là gì. Điều này làm giảm sự mơ hồ trong yêu cầu và ngăn ngừa các lỗi triển khai tốn kém.

💡 Ghi chú: Sơ đồ máy trạng thái mô tả tất cả các sự kiện, trạng thái và chuyển tiếp cho một đối tượng duy nhất. Trong khi đó, sơ đồ tuần tự hiển thị các sự kiện qua nhiều đối tượng trong một tương tác duy nhất.


Các khái niệm cốt lõi: Trạng thái, Sự kiện, Chuyển tiếp và Hành động

Trạng thái là gì?

Theo định nghĩa của Rumbaugh: “Một trạng thái là một khái niệm trừu tượng về các giá trị thuộc tính và các liên kết của một đối tượng. Các tập hợp giá trị được nhóm lại thành một trạng thái dựa theo các thuộc tính ảnh hưởng đến hành vi tổng thể của đối tượng.”

Trong thực tế, một trạng thái đại diện cho một điều kiện mà:

  • Một ràng buộc là đúng

  • Đối tượng thực hiện một hoạt động

  • Đối tượng chờ một sự kiện

State Notations

Đặc điểm của các trạng thái:

  • Chiếm một khoảng thời gian

  • Liên quan đến các giá trị thuộc tính thỏa mãn các điều kiện cụ thể

  • Hành vi phụ thuộc vào cả đầu vào hiện tại  bối cảnh lịch sử

State Notation

Trạng thái ban đầu và trạng thái cuối

  • Trạng thái ban đầu: Được hiển thị dưới dạng một hình tròn đen đậm. Đánh dấu nơi máy trạng thái bắt đầu.

  • Trạng thái cuối: Hiển thị dưới dạng các vòng tròn đồng tâm. Đại diện cho sự kết thúc vòng đời của đối tượng.

Start and Final State Example

Sự kiện: Các tác nhân kích hoạt sự thay đổi

Các sự kiện gây ra chuyển tiếp giữa các trạng thái. UML nhận diện bốn loại:

  1. Sự kiện tín hiệu: Sự đến của một tin nhắn bất đồng bộ

  2. Sự kiện gọi: Gọi thao tác theo quy trình

  3. Sự kiện thời gian: Kích hoạt sau một khoảng thời gian đã xác định

  4. Sự kiện thay đổi: Kích hoạt khi một điều kiện trở thành đúng

Chuyển tiếp: Di chuyển giữa các trạng thái

Một chuyển tiếp đại diện cho sự di chuyển từ trạng thái nguồn sang trạng thái đích, được kích hoạt bởi một sự kiện và tùy chọn được bảo vệ bởi một điều kiện. Mẫu hình:

  1. Đối tượng đang ở trạng thái nguồn

  2. Sự kiện xảy ra

  3. Điều kiện bảo vệ tùy chọn được đánh giá là đúng

  4. Hành động được thực thi (nếu được định nghĩa)

  5. Đối tượng chuyển vào trạng thái đích

Simple State Machine Diagram

Hành động so với Hoạt động

Hành động Hoạt động
Tính toán nguyên tử, không thể bị ngắt quãng Không nguyên tử, có thể chạy trong thời gian dài
Liên quan đến các chuyển tiếp Liên quan đến các trạng thái
Ví dụ: sendNotification()updateBalance() Ví dụ: xử lý thanh toánxác minh người dùng

Hành động vào/ra trong thực tế

Hành động vào và ra sẽ tự động thực thi khi nhập hoặc rời khỏi một trạng thái:

Entry and Exit Actions

Ví dụ: Đối với một Sách sao chép đối tượng:

  • Hành động vào trên Đã mượnghi lạiNgàyMượn()

  • Hành động ra từ Đã mượntínhPhíTrễ()


Xây dựng sơ đồ Máy trạng thái đầu tiên của bạn: Bước từng bước

Tôi đã thử quy trình làm việc thủ công của Visual Paradigm, và đây là cảm giác trực quan mà tôi cảm nhận được:

Bước 1: Tạo một sơ đồ mới

Chọn Sơ đồ > Mới từ thanh công cụ, sau đó chọn Sơ đồ Máy trạng thái.

Create new diagram

Select State Machine

Bước 2: Đặt tên và khởi tạo

Đặt tên sơ đồ của bạn (ví dụ: “Chu kỳ sống của Sách sao chép”) và nhấn OK. Bạn sẽ thấy một bảng vẽ trống với một trạng thái giả ban đầu.

name the diagram

Bước 3: Thêm trạng thái và chuyển tiếp

Nhấp vào trạng thái ban đầu, kéo biểu tượng tài nguyên để đặt một trạng thái mới, và chọn Chuyển tiếp → Trạng thái. Đổi tên các trạng thái khi cần thiết.

New Stage
Select Stage

Bước 4: Đặt nhãn cho các chuyển tiếp

Nhấp đúp vào bất kỳ mũi tên chuyển tiếp nào để đặt tên cho sự kiện kích hoạt (ví dụ: “Khóa”, “Trả lại”, “Gia hạn”).

name Transition

Bước 5: Kết nối thêm các chuyển tiếp

Sử dụng công cụ Chuyển tiếp để kết nối các trạng thái hiện có. Đừng quên đặt tên cho từng trạng thái!

More Transitions

Kết quả cuối cùng

State Machine Final


Tính năng nâng cao: Khi đơn giản không còn đủ

Trạng thái con: Quản lý độ phức tạp thông qua việc lồng ghép

Các trạng thái tổng hợp cho phép bạn nhóm các trạng thái con liên quan, giảm thiểu sự lộn xộn về mặt thị giác. Ví dụ, một hệ thống “Bộ đun” có thể có một trạng thái tổng hợp “Làm mát” chứa các trạng thái con “Khởi động”, “Sẵn sàng” và “Đang chạy”.

Submachine Example

Mẹo kiểm thử: Trích xuất các trường hợp kiểm thử trực tiếp từ sơ đồ của bạn:

  • Trạng thái chờ nhận sự kiện “Quá nóng”

  • Trạng thái Làm mát/Đang chạy nhận sự kiện “Lỗi”

  • Trạng thái Lỗi nhận sự kiện “Lỗi đã được khắc phục”

Trạng thái lịch sử: Nhớ lại nơi bạn đã dừng lại

Mặc định, khi nhập vào một trạng thái tổng hợp sẽ khởi động lại máy nhúng bên trong từ trạng thái ban đầu. Trạng thái lịch sử (được đánh dấu bằng H hoặc H*) cho phép bạn quay lại trạng thái con hoạt động cuối cùng trạng thái con hoạt động cuối cùng.

History of State Machine Example

Trường hợp sử dụng: Một người dùng tạm dừng quy trình thanh toán nhiều bước. Khi quay lại, hệ thống tiếp tục từ chính bước mà họ đã dừng lại—không phải từ đầu.

Trạng thái đồng thời: Mô hình hóa các hành vi song song

Một số quy trình bao gồm các hoạt động độc lập, đồng thời. Các vùng đồng thời (được phân cách bởi các đường nét đứt) mô hình hóa điều này một cách tinh tế.

Concurrent State Machine Example

Ví dụ: Một hệ thống đấu giá xử lý đồng thời các lời đặt giá  xác nhận giới hạn thanh toán. Trạng thái tổng hợp chỉ thoát khi cả hai các quá trình con hoàn tất.


Hai con đường tạo dựng: Chính xác thủ công so với Tốc độ AI

Trong quá trình đánh giá của tôi, tôi đã thử cả hai phương pháp mà Visual Paradigm cung cấp:

🛠️ Phương pháp thủ công truyền thống

Tốt nhất cho: Tài liệu cuối cùng, các dự án yêu cầu tuân thủ cao, hoặc khi bạn cần kiểm soát chính xác từng điểm ảnh.

Quy trình làm việc:

  • Kéo và thả các trạng thái và chuyển tiếp

  • Nhấp chuột phải để mở cửa sổ Thông số cho điều kiện bảo vệ, hành động vào/ra

  • Thêm các vùng ngang/dọc để biểu diễn các hành vi đồng thời

Ưu điểm: Kiểm soát toàn diện, đầu ra tuân thủ tiêu chuẩn, lý tưởng cho logic bảo vệ phức tạp
Nhược điểm: Đường học tập dốc, tốn thời gian khi mô phỏng lặp lại

🤖 Tạo dựng hỗ trợ bởi AI

Tốt nhất cho: Mô phỏng nhanh, các buổi thảo ý tưởng, hoặc chuyển đổi yêu cầu bằng lời thành hình ảnh trực quan.

Quy trình làm việc:

  1. Mở Trợ lý AI (menu Công cụ hoặc biểu tượng ở góc trên bên phải)

  2. Mô tả hành vi: “Tạo một máy trạng thái cho giao dịch rút tiền ATM: bắt đầu từ trạng thái Ngưng, chấp nhận thẻ, xác minh mã PIN, cho phép rút tiền nếu số dư đủ, trả lại thẻ khi hoàn tất hoặc xảy ra lỗi”

  3. Xem xét và tinh chỉnh qua trò chuyện: “Thêm chuyển tiếp thời gian chờ từ nhập PIN về trạng thái Ngưng”

Những tính năng thông minh tôi đánh giá cao:

  • Bố trí tự động và tuân thủ ký hiệu OMG/IEEE

  • Phát hiện các trạng thái không thể đạt được hoặc các chuyển tiếp đường cùng

  • Xuất một cú nhấp chuột sang Visual Paradigm Desktop để lập trình mã (Java, Python, C++)

State diagram at a glance


Lời khuyên thực tế từ kinh nghiệm của tôi

  1. Bắt đầu đơn giản: Mô hình hóa đường đi thuận lợi trước, sau đó thêm các trạng thái lỗi và các trường hợp biên.

  2. Đặt tên cho các chuyển tiếp một cách rõ ràng: Sử dụng cặp động từ-danh từ (KhóaTàiKhoảnXửLýThanhToán) để dễ đọc.

  3. Tài liệu điều kiện bảo vệ[số dư >= số tiền] ngăn ngừa sự mơ hồ.

  4. Sử dụng hành động vào/ra một cách tiết chế: Dành chúng cho các hành vi mà luôn luôn xảy ra khi vào/ra trạng thái.

  5. Xác minh với các bên liên quan: Đi qua sơ đồ cùng người dùng kinh doanh để xác nhận hành vi phù hợp với mong đợi.

  6. Tạo các trường hợp kiểm thử: Mỗi chuyển tiếp đại diện cho một kịch bản kiểm thử tiềm năng.


Kết luận: Khi nào nên sử dụng sơ đồ máy trạng thái

Sau vài tuần sử dụng thực tế, tôi hiện coi sơ đồ máy trạng thái là một công cụ thiết yếu trong bộ công cụ sản phẩm của tôi—không chỉ để tài liệu kỹ thuật, mà còn để đồng bộ hóa các nhóm chức năng khác nhau xung quanh các yêu cầu hành vi phức tạp.

Sử dụng sơ đồ trạng thái khi:
✅ Mô hình hóa các hệ thống dựa trên sự kiện (IoT, quy trình làm việc, phiên người dùng)
✅ Làm rõ các quy tắc kinh doanh phụ thuộc vào trạng thái
✅ Thiết lập các trường hợp kiểm thử cho đội ngũ QA
✅ Đưa các kỹ sư mới làm quen với hành vi của hệ thống

Xem xét các lựa chọn thay thế khi:
❌ Logic là hoàn toàn tuần tự (sử dụng sơ đồ luồng)
❌ Bạn đang mô hình hóa các tương tác giữa nhiều đối tượng (sử dụng sơ đồ tuần tự)
❌ Yêu cầu vẫn còn rất biến động (bắt đầu bằng các câu chuyện người dùng)

Cách tiếp cận kép của Visual Paradigm—độ chính xác thủ công kết hợp với tốc độ tăng cường nhờ AI—giúp nó trở nên dễ tiếp cận, dù bạn là chuyên gia UML hay một người mới tò mò. Phiên bản Cộng đồng miễn phí thực sự có thể sử dụng được cho việc học tập và các dự án nhỏ, trong khi các tính năng AI giúp giảm đáng kể rào cản khi bắt đầu.

Nếu bạn đang đối mặt với các yêu cầu mơ hồ hoặc logic trạng thái phức tạp, tôi khuyến khích bạn thử vẽ sơ đồ máy trạng thái. Bạn có thể sẽ ngạc nhiên trước mức độ rõ ràng mà nó mang lại—không chỉ cho tài liệu của bạn, mà còn cho toàn bộ đội ngũ hiểu rõ hơn về hệ thống.


Tài liệu tham khảo

  1. Trình tạo sơ đồ trạng thái AI | AI của Visual Paradigm: Hướng dẫn toàn diện về các tính năng tạo sơ đồ trạng thái dựa trên AI của Visual Paradigm, bao gồm chỉnh sửa theo cuộc trò chuyện và bố cục thông minh.
  2. Tất cả những gì bạn cần biết về sơ đồ trạng thái: Tài liệu tham khảo nền tảng bao gồm các khái niệm, ký hiệu và các phương pháp tốt nhất về sơ đồ trạng thái.
  3. Ghi chú phát hành Visual Paradigm: Trình tạo sơ đồ AI: Thông báo mở rộng trình tạo sơ đồ AI sang 13 loại sơ đồ, nhấn mạnh cải tiến về tốc độ và trí tuệ nhân tạo.
  4. Chinh phục sơ đồ trạng thái với AI của Visual Paradigm: Hệ thống thu phí tự động: Nghiên cứu trường hợp minh họa việc tạo sơ đồ trạng thái hỗ trợ AI cho các hệ thống nhúng phức tạp.
  5. Hướng dẫn cho người mới bắt đầu về sơ đồ máy trạng thái: Bài hướng dẫn cấp độ cơ bản đi qua các khái niệm cốt lõi với các ví dụ thực tế.
  6. Cách vẽ sơ đồ máy trạng thái trong UML (Hướng dẫn): Hướng dẫn trực quan từng bước để tạo sơ đồ trạng thái thủ công trong Visual Paradigm.
  7. Tạo trạng thái trong Hướng dẫn người dùng Visual Paradigm: Tài liệu chính thức về việc tạo, chỉnh sửa và xác định trạng thái.
  8. Hướng dẫn mô hình hóa cho máy trạng thái: Các kỹ thuật mô hình hóa nâng cao bao gồm trạng thái hợp thành, lịch sử và đồng thời.
  9. Tính năng Chatbot AI của Visual Paradigm: Tổng quan về khả năng của chatbot AI trong việc tạo và hoàn thiện sơ đồ.
  10. Chatbot AI: Trình tạo sơ đồ máy trạng thái UML: Liên kết trực tiếp đến công cụ AI trên web để tạo sơ đồ trạng thái thông qua ngôn ngữ tự nhiên.
  11. Điều gì làm cho chatbot AI của Visual Paradigm khác biệt?: Phân tích so sánh cách tiếp cận AI của Visual Paradigm so với các công cụ AI vẽ sơ đồ thông thường.
  12. Đánh giá thực tế: Trình tạo sơ đồ hoạt động AI của Visual Paradigm: Đánh giá độc lập về khả năng vẽ sơ đồ bằng AI, với những nhận định áp dụng được cho máy trạng thái.
  13. Thành thạo sơ đồ máy trạng thái UML với AI của Visual Paradigm: Bài hướng dẫn chi tiết kết hợp lý thuyết với các quy trình thực hành hỗ trợ bởi AI.
  14. YouTube: Hướng dẫn vẽ sơ đồ máy trạng thái: Video hướng dẫn từng bước về các kỹ thuật tạo sơ đồ trạng thái thủ công.
  15. YouTube: Tạo sơ đồ trạng thái bằng AI: Trình diễn AI tương tác tạo ra và hoàn thiện sơ đồ trạng thái.
  16. YouTube: Mô hình hóa máy trạng thái nâng cao: Bài hướng dẫn bao gồm các trạng thái con, lịch sử và các vùng đồng thời trong Visual Paradigm.

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