0

Bài 1: UML và các khái niệm cơ bản (Phần 2)

Tóm tắt nhanh

  • Ở bài viết trước, chúng ta đã cùng nhau tìm hiểu về Structure Diagram – nhóm biểu đồ đóng vai trò như những "bản vẽ kỹ thuật" mô tả cấu trúc tĩnh và các thành phần cốt lõi của hệ thống. Tuy nhiên, để một hệ thống thực sự vận hành, chúng ta cần hiểu rõ cách thức các thành phần đó hoạt động và tương tác với nhau như thế nào.
  • Trong bài viết này, tôi sẽ tiếp tục giới thiệu đến các bạn nhóm biểu đồ quan trọng thứ hai trong UML: Behavior Diagram. Nếu Structure Diagram cho ta biết hệ thống "có những gì", thì Behavior Diagram sẽ định nghĩa chi tiết hệ thống "làm những gì" thông qua việc mô tả các hành động, sự thay đổi trạng thái và sự tương tác giữa các đối tượng theo thời gian. Chúng ta sẽ lần lượt đi qua 7 loại biểu đồ hành vi để thấy được bức tranh chuyển động của một phần mềm hoàn chỉnh.
  • PS: nếu ae nào chưa xem bài viết trước và chưa có khái niệm nào về UML, vui lòng xem tại đây nha: https://viblo.asia/p/bai-1-uml-va-cac-khai-niem-co-ban-ymJXDwXxJkq

1. Behavior Diagram

  • Nếu Structure Diagram là một nhóm các biểu đồ dùng trong mô tả kiến trúc, mối quan hệ bên trong của một hệ thống thì Behavior Diagram lại là nơi mà bạn có thể định nghĩa các hành vi trong hệ thống một cách chi tiết.
  • Hành vi đề cập đến hậu quả trực tiếp của một hành động của ít nhất một đối tượng. Nó ảnh hưởng đến cách trạng thái của các đối tượng thay đổi theo thời gian. Hành vi có thể được xác định thông qua hành động của một đối tượng duy nhất hoặc là kết quả của sự tương tác giữa nhiều đối tượng.
  • Có 7 biểu đồ thuộc loại Behavior Diagram gồm: The Use Case Diagram, The State Machine Diagram, The Activity Diagram, The Sequence Diagram, The Communication Diagram, The Timing Diagram và The Interaction Overview Diagram.

1.1. The Use Case Diagram

  • Biểu đồ Use Case (Use Case Diagram) là một biểu đồ cho phép chúng ta có thể định nghĩa những requirements mà hệ thống phải hoàn thành. Nó sẽ mô tả những trường hợp người dùng sử dụng những tính năng của hệ thống nhưng không chỉ ra cụ thể việc xử lý hay triển khai của tính năng đó.
  • Đơn vị của tính năng (Units of functionality) mà hệ thống cung cấp cho người dùng được gọi là Use cases.
  • Ví dụ, trong một hệ thống hành chính của trường đại học, tính năng đăng ký (registration) sẽ là một use case được sử dụng bởi học sinh.

image.png

1.2. The State Machine Diagram

  • Giả sử ta có một object person đại diện cho một người khi truy cập vào một website. Trong suốt vòng đời, một person sẽ trải qua nhiều trạng thái khác nhau của nó.
  • Khi mới truy cập vào trang web, trạng thái của nó sẽ là Logged Out. Trạng thái này sẽ thay đổi thành Logged In ngay sau khi person nhập đúng tài khoản vào hệ thống.
  • Và ngay khi person thực hiện logs out (sự kiện logout xảy ra) thì person sẽ trả về trạng thái logged out.
  • Những hành vi này có thể được đại diện thông qua State Machine Diagram. Nó cho phép chúng ta mô tả hành vi được phép của một đối tượng dưới dạng sơ đồ trạng thái và sự chuyển đổi trạng thái thông qua các sự kiện khác nhau.

image.png

1.3. Activity Diagram

  • Activity Diagram là một công cụ mạnh mẽ trong UML dùng để mô hình hóa các quy trình thuộc bất kỳ lĩnh vực nào, từ quy trình nghiệp vụ kinh doanh đến các quy trình phần mềm phức tạp. Loại biểu đồ này tập trung mô tả chuỗi các hành động cần thiết để hoàn thành một công việc cụ thể, ví dụ như các bước để một sinh viên tham gia bài giảng và làm bài tập. Điểm đặc biệt của nó là cung cấp cả cơ chế điều khiển luồng (control flow) và luồng dữ liệu (data flow) để kết nối các hành động lại với nhau. Thông qua đó, người thiết kế có thể dễ dàng điều phối và quan sát cách thức vận hành của toàn bộ quy trình. Tóm lại, đây là một bản đồ chi tiết thể hiện các bước thực hiện và sự chuyển động của dữ liệu trong một hệ thống hoặc hoạt động thực tế.

image.png

1.4. Sequence Diagram

  • Sequence Diagram là một biểu đồ mô tả sự tương tác giữa các đối tượng để hoàn thành một task cụ thể. Ví dụ như việc đăng ký môn học của một hệ thống hành chính trong trường đại học. Trọng tâm của biểu đồ này nằm ở thứ tự thời gian của các thông điệp được trao đổi giữa các bên tương tác với nhau. Nhờ các cấu trúc điều khiển trình tự thời gian và khái niệm mô-đun hóa, loại biểu đồ này cho phép người dùng mô hình hóa được cả những tương tác phức tạp. Về cơ bản, nó giúp người thiết kế hình dung rõ ràng "ai gửi cái gì cho ai và khi nào" trong một hệ thống.

image.png

1.5. Communication Diagram

  • Tương tự như sequence diagram, Communication Diagram sẽ mô tả việc giao tiếp giữa các đối tượng khác nhau. Trọng tâm ở biểu đồ này là sự giao tiếp giữa các thực thể tương tác nhiều hơn là trình tự thời gian của việc trao đổi các message.

image.png

1.6. Timing Diagram

  • Timing Diagram tập trung vào việc thể hiện rõ ràng sự thay đổi trạng thái của các đối tượng tương tác theo thời gian. Những thay đổi này có thể xảy ra do các sự kiện thời gian hoặc kết quả của việc trao đổi thông điệp giữa các bên. Một ví dụ điển hình là trạng thái của một người dùng chuyển sang "đã đăng nhập" ngay khi nhận được thông báo xác nhận mật khẩu hợp lệ từ hệ thống.

image.png

1.7. Interaction Overview Diagram

  • Interaction Overview Diagram mô hình hóa mối liên kết giữa các tiến trình tương tác khác nhau bằng cách sắp xếp các biểu đồ tương tác riêng lẻ (như biểu đồ trình tự (sequence diagram), biểu đồ truyền thông (communication diagram), biểu đồ thời gian (timing diagram) và các Interaction Overview Diagram khác) vào một trình tự dựa trên thời gian và tính nhân quả (nếu không thực hiện hành động trước thì sẽ không có hành động hoặc kết quả sau). Nó cũng chỉ định các điều kiện mà theo đó các tiến trình tương tác được phép diễn ra. Để mô hình hóa luồng điều khiển (control flow), biểu đồ này sử dụng các khái niệm từ biểu đồ hoạt động (activity diagram). Ví dụ, một người dùng của hệ thống quản lý đại học trước tiên phải thực hiện đăng nhập (bản thân việc này đã đại diện cho một tương tác riêng biệt với hệ thống) trước khi được phép sử dụng các chức năng tiếp theo.

image.png

Kết luận

  • Tổng kết lại, UML (Unified Modeling Language) không chỉ đơn thuần là các hình vẽ vô hồn, mà là một ngôn ngữ chuẩn hóa giúp chúng ta "hình ảnh hóa" tư duy thiết kế. Việc sử dụng UML giúp thu hẹp khoảng cách giữa yêu cầu của khách hàng và cách hiểu của lập trình viên, từ đó hạn chế tối đa sai sót và tốn kém thời gian trong quá trình phát triển.
  • Để dễ dàng tra cứu và lựa chọn loại biểu đồ phù hợp cho từng giai đoạn trong dự án, bạn có thể tham khảo hai bảng tổng hợp dưới đây:

1. Nhóm Biểu đồ Cấu trúc (Structure Diagrams)

Tập trung vào khía cạnh tĩnh, định nghĩa các thành phần và mối liên kết.

Tên biểu đồ Nhiệm vụ chính Trường hợp sử dụng
Class Diagram Chỉ ra kiến trúc dữ liệu và đối tượng. Thiết kế Database, định nghĩa cấu trúc Class.
Object Diagram Snapshot trạng thái hệ thống tại một thời điểm. Kiểm tra tính đúng đắn của thiết kế với dữ liệu thực.
Package Diagram Gom nhóm các thành phần model theo chức năng. Tổ chức cấu trúc thư mục, quản lý module lớn.
Component Diagram Mô tả các thành phần vật lý và sự phụ thuộc. Xác định file thực thi (.exe), thư viện (.dll), DB.
Composite Structure Mô tả chi tiết cấu trúc bên trong một thực thể. Thiết kế cổng kết nối (port) giữa các phần tử nhỏ.
Deployment Diagram Phân bổ phần mềm lên phần cứng thực tế. Thiết kế hạ tầng Server, Network, cài đặt hệ thống.
Profile Diagram Tùy biến UML cho lĩnh vực chuyên biệt. Làm hệ thống nhúng, y tế hoặc các ngành đặc thù.

2. Nhóm Biểu đồ Hành vi (Behavior Diagrams)

Tập trung vào khía cạnh động, định nghĩa hành động và sự tương tác.

Tên biểu đồ Nhiệm vụ chính Trường hợp sử dụng
Use Case Diagram Định nghĩa yêu cầu hệ thống từ người dùng. Thống nhất chức năng (requirements) với khách hàng.
State Machine Mô tả vòng đời và sự thay đổi trạng thái. Theo dõi logic trạng thái (ví dụ: Logged In/Out).
Activity Diagram Mô hình hóa quy trình và luồng dữ liệu. Vẽ lưu đồ thuật toán, quy trình nghiệp vụ.
Sequence Diagram Trình tự thông điệp theo thời gian. Làm rõ "ai gửi gì cho ai và khi nào".
Communication Tập trung vào mối quan hệ giao tiếp. Xem luồng trao đổi thông tin giữa các thực thể.
Timing Diagram Thay đổi trạng thái theo trục thời gian thực. Kiểm soát thời gian trong các hệ thống real-time.
Interaction Overview Kết nối các tương tác lẻ thành một chuỗi. Điều khiển luồng giữa các quy trình tương tác lớn.
  • Trong các phần sau, để không lan man và học quá nhiều, tôi sẽ chỉ giới thiệu tới các bạn 5 loại biểu đồ quan trọng và phổ biến nhất đó là use case diagram, class diagram, object diagram, state machine diagram và sequence diagram.
  • Hy vọng qua series bài viết này, các bạn sẽ có cái nhìn tổng quan và thực tế hơn về cách vận dụng các loại sơ đồ UML vào quy trình phát triển software system. Việc chọn đúng loại biểu đồ ngay từ đầu chính là chìa khóa để xây dựng một hệ thống bền vững và dễ bảo trì.

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.