Bài 15. Sequence Diagram – Mô hình hóa sự tương tác giữa các đối tượng

“Activity Diagram mô tả công việc. Sequence Diagram mô tả sự cộng tác.”


Theo tôi, Bài 15 là bước chuyển quan trọng nhất của cả học phần.

Đến đây, sinh viên sẽ bắt đầu chuyển từ tư duy nghiệp vụ (Business Thinking) sang tư duy thiết kế phần mềm (Software Design Thinking).

Đây cũng là nơi nhiều giáo trình khiến sinh viên nhầm lẫn.

Các em thường nghĩ:

Sequence Diagram là phiên bản “chi tiết hơn” của Activity Diagram.

Điều đó không đúng.

Hai sơ đồ trả lời hai câu hỏi hoàn toàn khác nhau:

  • Activity Diagram: Quy trình nghiệp vụ diễn ra như thế nào?
  • Sequence Diagram: Các đối tượng trong hệ thống phối hợp với nhau như thế nào để thực hiện quy trình đó?

Nếu hiểu được sự khác biệt này, sinh viên sẽ biết khi nào cần dùng mỗi loại sơ đồ

Vị trí của bài học trong chuỗi bài

Business Problem
↓
Stakeholder
↓
AS-IS Process
↓
TO-BE Process
↓
Requirement Engineering
↓
Use Case
↓
Use Case Specification
↓
Use Case Diagram
↓
Activity Diagram
↓
Sequence Diagram ← Bạn đang ở đây
↓
Domain Model
↓
Class Diagram

Mục tiêu bài học

Sau khi hoàn thành bài học này, bạn có thể:

  • Hiểu mục đích của Sequence Diagram.
  • Phân biệt Sequence Diagram với Activity Diagram.
  • Xác định các đối tượng tham gia trong một Use Case.
  • Mô hình hóa luồng trao đổi thông điệp giữa các đối tượng.
  • Tránh những sai lầm phổ biến khi xây dựng Sequence Diagram.

1. Vì sao cần Sequence Diagram?

Giả sử chúng ta có Activity Diagram cho Use Case Đăng ký học phần.

Sơ đồ cho biết:

  • Sinh viên chọn học phần.
  • Hệ thống kiểm tra điều kiện tiên quyết.
  • Hệ thống kiểm tra số chỗ còn lại.
  • Hệ thống lưu kết quả.
  • Hệ thống thông báo thành công.

Nhưng vẫn còn một câu hỏi:

Bên trong hệ thống, các thành phần nào phối hợp với nhau để thực hiện các bước này?

Ví dụ:

  • Giao diện gọi ai?
  • Ai kiểm tra điều kiện tiên quyết?
  • Ai truy vấn cơ sở dữ liệu?
  • Ai cập nhật lịch học?
  • Ai gửi thông báo?

Đó là điều Sequence Diagram mô tả.


2. Sequence Diagram là gì?

Sequence Diagram là sơ đồ UML mô tả sự trao đổi thông điệp giữa các đối tượng theo trình tự thời gian.

Điểm quan trọng là:

Trục dọc biểu diễn thời gian.

Thông điệp được gửi từ trên xuống dưới theo đúng thứ tự xảy ra.

Nó giúp trả lời câu hỏi:

Đối tượng nào gọi đối tượng nào để hoàn thành một Use Case?


3. Sequence Diagram không mô tả điều gì?

Sequence Diagram không mô tả:

  • Quy trình nghiệp vụ tổng thể.
  • Luồng công việc giữa các phòng ban.
  • Giao diện người dùng chi tiết.
  • Cấu trúc cơ sở dữ liệu.

Đó là nhiệm vụ của các mô hình khác.

Sequence Diagram chỉ tập trung vào tương tác giữa các đối tượng.


4. Các thành phần cơ bản

Actor

Khởi tạo tương tác.

Ví dụ:

  • Sinh viên
  • Thủ thư
  • Khách hàng

Actor thường là điểm bắt đầu của Sequence Diagram.


Lifeline

Mỗi đối tượng tham gia tương tác có một lifeline.

Ví dụ:

  • Student
  • RegistrationController
  • RegistrationService
  • CourseRepository
  • NotificationService

Lifeline thể hiện sự tồn tại của đối tượng trong suốt quá trình tương tác.


Message

Thông điệp được gửi giữa các đối tượng.

Ví dụ:

Student
↓
RegistrationController
↓
RegistrationService
↓
CourseRepository

Mỗi mũi tên biểu diễn một lời gọi phương thức hoặc yêu cầu xử lý.


Activation

Activation biểu diễn khoảng thời gian đối tượng đang thực hiện một công việc.

Nó giúp người đọc biết khi nào một đối tượng đang xử lý và khi nào trả quyền điều khiển cho đối tượng khác.


Return Message

Sau khi xử lý xong, đối tượng có thể trả kết quả cho đối tượng đã gọi.

Trong nhiều công cụ UML hiện đại, thông điệp trả về có thể được lược bỏ nếu không làm thay đổi ý nghĩa của sơ đồ.


5. Ví dụ

Use Case:

Đăng ký học phần

Trình tự tương tác có thể như sau:

Student
↓
RegistrationController
↓
RegistrationService
↓
CourseRepository
↓
RegistrationRepository
↓
NotificationService

Luồng thông điệp:

  1. Student gửi yêu cầu đăng ký học phần.
  2. Controller tiếp nhận yêu cầu.
  3. Controller gọi Service xử lý nghiệp vụ.
  4. Service kiểm tra điều kiện tiên quyết.
  5. Service truy vấn số chỗ còn lại.
  6. Service lưu kết quả đăng ký.
  7. Service yêu cầu gửi thông báo.
  8. Controller trả kết quả cho Student.

Activity Diagram và Sequence Diagram đều mô tả cùng một Use Case, nhưng từ hai góc nhìn khác nhau.


6. Activity Diagram và Sequence Diagram khác nhau như thế nào?

Activity DiagramSequence Diagram
Mô tả quy trình nghiệp vụMô tả sự tương tác giữa các đối tượng
Tập trung vào các hoạt độngTập trung vào các thông điệp
Trả lời “Quy trình diễn ra như thế nào?”Trả lời “Các đối tượng phối hợp như thế nào?”
Phù hợp để trao đổi với stakeholderPhù hợp để trao đổi với nhóm phát triển

Hai sơ đồ không thay thế nhau mà bổ sung cho nhau.


7. Sequence Diagram và kiến trúc phần mềm

Một Sequence Diagram tốt thường phản ánh kiến trúc của hệ thống.

Ví dụ với kiến trúc nhiều lớp:

Actor
↓
Presentation Layer
↓
Application Layer
↓
Domain Layer
↓
Infrastructure Layer
↓
Database

Nhìn vào sơ đồ, chúng ta có thể đánh giá:

  • Có vi phạm nguyên tắc phân lớp không?
  • Có đối tượng nào đang đảm nhận quá nhiều trách nhiệm không?
  • Có bước xử lý nào nên tách thành dịch vụ riêng không?

Sequence Diagram không chỉ là tài liệu phân tích mà còn hỗ trợ đánh giá thiết kế.


Sai lầm thường gặp

Chỉ vẽ Actor và Database

Nhiều sinh viên vẽ:

Actor
↓
Database

Điều này bỏ qua toàn bộ các thành phần xử lý nghiệp vụ.

Trong hầu hết các hệ thống hiện đại, dữ liệu không được truy cập trực tiếp từ giao diện.


Đưa giao diện chi tiết vào sơ đồ

Ví dụ:

  • Nhấn nút màu xanh.
  • Chọn tab bên trái.

Đây là chi tiết của giao diện người dùng, không phải nội dung của Sequence Diagram.


Vẽ mọi lớp trong hệ thống

Một Sequence Diagram chỉ nên mô tả các đối tượng thực sự tham gia vào Use Case.

Không cần đưa toàn bộ kiến trúc của hệ thống vào một sơ đồ.


Không đồng bộ với Use Case

Nếu Sequence Diagram thực hiện các bước khác với Use Case Specification hoặc Activity Diagram, tài liệu sẽ mất tính nhất quán.


Tóm tắt

Sequence Diagram mô tả cách các đối tượng phối hợp để thực hiện một Use Case.

Nó giúp:

  • Hiểu rõ trách nhiệm của từng đối tượng.
  • Hỗ trợ thiết kế phần mềm.
  • Kiểm tra tính hợp lý của kiến trúc.
  • Làm cơ sở để lập trình.

Hãy nhớ:

Activity Diagram mô tả dòng công việc. Sequence Diagram mô tả dòng thông điệp.


Deliverable

Chọn 03 Use Case trong hệ thống của bạn và xây dựng Sequence Diagram.

Yêu cầu:

  • Có Actor khởi tạo.
  • Có tối thiểu 5 đối tượng tham gia.
  • Thể hiện đầy đủ các thông điệp chính.
  • Phản ánh đúng trình tự thời gian.
  • Đồng nhất với Use Case Specification và Activity Diagram đã xây dựng.

Sau khi hoàn thành, hãy tự đánh giá:

  • Mỗi đối tượng có một trách nhiệm rõ ràng không?
  • Có thông điệp nào vi phạm kiến trúc phân lớp của hệ thống không?

Checklist

Sau khi học xong bài này, bạn nên trả lời được:

  • Sequence Diagram dùng để làm gì?
  • Phân biệt Sequence Diagram và Activity Diagram.
  • Hiểu ý nghĩa của Actor, Lifeline, Message và Activation.
  • Mô hình hóa được tương tác giữa các đối tượng.
  • Kiểm tra được tính hợp lý của thiết kế thông qua Sequence Diagram.

Góc nhìn nghề nghiệp

Trong các dự án hiện đại, Sequence Diagram thường không được xây dựng cho mọi Use Case, mà chỉ tập trung vào các luồng nghiệp vụ quan trọng hoặc phức tạp. Những Use Case đơn giản có thể được mô tả đầy đủ bằng Use Case Specification và mã nguồn.

Tuy nhiên, với các chức năng liên quan đến nhiều dịch vụ, tích hợp hệ thống hoặc quy trình nghiệp vụ phức tạp, Sequence Diagram vẫn là công cụ hiệu quả để thảo luận về thiết kế trước khi lập trình. Nó giúp nhóm phát triển thống nhất trách nhiệm giữa các thành phần, phát hiện sớm các phụ thuộc không cần thiết và giảm chi phí chỉnh sửa ở giai đoạn triển khai.


Bài tiếp theo

Đến đây, chúng ta đã mô hình hóa hành vi của hệ thống thông qua Requirement, Use Case, Activity Diagram và Sequence Diagram.

Nhưng vẫn còn một câu hỏi quan trọng:

Hệ thống đang quản lý những đối tượng nào? Chúng có những thuộc tính gì và quan hệ với nhau ra sao?

Đó là nội dung của Bài 16 – Domain Model, nơi chúng ta sẽ chuyển từ mô hình hóa hành vi (Behavioral Modeling) sang mô hình hóa cấu trúc miền nghiệp vụ (Structural Modeling). Đây là nền tảng để xây dựng Class Diagram và thiết kế cơ sở dữ liệu trong các bước tiếp theo.

Comments are closed.