Tổng quan về biểu đồ UML
Tác giả: PT Nguyễn Tiến Thành
1. Mở đầu
Trước khi bắt đầu với các khái niệm trong UML, chúng ta sẽ nhắc lại một khái niệm phổ biển hơn đó chính là lưu đồ thuật toán, thuật ngữ tiếng anh là flowchart. Chắc hẳn tất cả những bạn từng học lập trình đề biết lưu đồ thuật toán là một loại sơ đồ dùng để biểu diễn thuật toán hoặc một quá trình. Trong chương trình học tại FCT, khái niệm lưu đồ thuật toán sẽ được giới thiệu ở bài số 4 của khóa PY4E. Sau đây mình sẽ trích dẫn 1 ví dụ về lưu đồ thuật toán ở bài này
dụ về lưu đồ thuật toán ở bài này:
Code thực hiện cho flowchart:
Đoạn chương trình trên yêu cầu người dung nhập vào 2 số num1 và num2 sau đó so sánh 2 số này với nhau và in ra số lớn hơn. Ở đây việc sử dụng flowchart hoàn toàn có thể thể hiện được ý tưởng của toàn bộ đoạn code. Tuy nhiên chúng ta có thể thấy rằng nếu trong bài toán xuất hiện thêm biến số về thời gian và giá trị num1, num2 là 2 giá trị biến thiên theo thời gian thì flowchart sẽ không thể nào thể hiện được ý tưởng của chương trình. Ngoài ra nếu chương trình được mở rộng hơn và được viết theo kiểu hướng đối tượng (OOP), tổ chức thanh các class, object thì flowchart hoàn toàn không thể đáp ứng được việc mô tả mối quan hệ giữa các object với nhau. Hoặc trong trường hợp khi mà bài toán chưa có một giải thuật hoặc cách thức nào giải quyết thì chúng ta cũng không thể vẽ được flowchart, khi đó lập trình viên cần có một công cụ để “vẽ” ý tưởng của mình, mô tả mối quan hệ giữa các đối tượng với nhau và từ đó đưa ra giải thuật chính xác. Và đó là lý do chúng ta cần đến UML Unified Modeling Language.
2. UML là gì
UML (Unified Modeling Language) là ngôn ngữ dành cho việc đặc tả, hình dung, xây dựng và làm tài liệu của các hệ thống phần mềm. UML được sử dụng để thiết kế hệ thống, bao gồm những khái niệm như tiến trình nghiệp vụ và các chức năng của hệ thống. Cụ thể, nó hữu dụng cho những ngôn ngữ khai báo, giản đồ cơ sở dữ liệu, thành phần phần mềm có khả năng tái sử dụng. UML được phát triển bởi Grady Booch, Ivar Jabcobsen và James Rumbaugh vào năm 1990, nó nhanh chóng trở thành một trong những ngôn ngữ chuẩn để xây dựng hệ thống phần mềm hướng đối tượng (Object-Oriented). Hiện tại UML đã có phiên bản 2.5. Có các loại sơ đồ UML chủ yếu sau:
- Sơ đồ lớp (Class Diagram)
- Sơ đồ đối tượng (Object Diagram)
- Sơ đồ tình huống sử dụng (Use Cases Diagram)
- Sơ đồ trình tự (Sequence Diagram)
- Sơ đồ cộng tác (Collaboration Diagram hay là Composite Structure Diagram)
- Sơ đồ trạng thái (State Machine Diagram)
- Sơ đồ thành phần (Component Diagram)
- Sơ đồ hoạt động (Activity Diagram)
- Sơ đồ triển khai (Deployment Diagram)
- Sơ đồ gói (Package Diagram)
- Sơ đồ liên lạc (Communication Diagram)
- Sơ đồ tương tác (Interaction Overview Diagram – UML 2.0)
- Sơ đồ phối hợp thời gian (Timing Diagram – UML 2.0)
3. Một số dạng biểu đồ UML
Sau đây chúng ta sẽ đi chi tiết vào một số dạng biểu đồ UML phổ biến thường dùng trong thực tế.
3.1 Biểu đồ Use case (Use Case Diagram)
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên kết của chúng đối với Use case mà hệ thống cung cấp. Một Use case là một lời miêu tả của một chức năng mà hệ thống cung cấp. Các Use case được miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của hệ thống theo như sự mong đợi của người sử dụng), không miêu tả chức năng được cung cấp sẽ hoạt động nội bộ bên trong hệ thống ra sao. Các thanh phần trong biểu đồ use case bao gồm: Actor (người sử dụng), Use Case (chức năng tương tác) & Relationship (các quan hệ trong Use Case).
Actor được ký hiệu như sau:
Hoặc:
Các Use case được kí hiệu bằng hình elips.
Mối quan hệ giữa các use case:
- Association: thường được dùng để mô tả mối quan hệ giữa Actor và Use Case và giữa các Use Case với nhau
- Include: là quan hệ giữa các Use Case với nhau, nó mô tả việc một Use Case lớn được chia ra thành các Use Case nhỏ để dễ cài đặt (module hóa) hoặc thể hiện sự dùng lại.
- Extent: Extend dùng để mô tả quan hệ giữa 2 Use Case. Quan hệ Extend được sử dụng khi có một Use Case được tạo ra để bổ sung chức năng cho một Use Case có sẵn và được sử dụng trong một điều kiện nhất định nào đó.
- Generalization: được sử dụng để thể hiện quan hệ thừa kế giữa các Actor hoặc giữa các Use Case với nhau.
Ví dụ về việc sử dụng Use case diagram trong thực tế:
Trong ví dụ này chúng ta sẽ xây dựng một phần mềm quản lý thư viện sách cho club FCT mang tên Library Management FCT. Ứng dụng của phần mềm này là giúp người quản lý có thể quản lý danh mục sách đang có trong thư viện. Để bắt đầu xây dựng phần mềm, chúng ta sẽ đặt ra những giả định về yêu cầu của người dùng đối với phần mềm như sau:
- Chức năng chính của phần mềm là quản lý danh mục sách đang có trong thư viện.
- Phần mềm cho phép học sinh, mentor của club đăng ký tài khoản để mượn, trả sách.
- Với mỗi một đầu sách, phần mềm sẽ phải lưu trữ thông tin về tên sách, tác giả, năm xuất bản.
Như vậy sau khi đã có đủ những yêu cầu về tính năng của phần mềm chúng ta sẽ bắt đầu thiết kế Use case diagram để có cái nhìn tổng quan về tính năng của phần mềm. Ở đây chúng ta có thể thấy đối tưởng sử dụng phần mềm chính là các học sinh và mentor, có thể gọi chung là user. Và đây chính là Actor của Use case diagram. Và các action mà user thực hiện trên phần mềm sẽ bao gồm: đăng ký tài khoản (register), đăng nhập (login), đăng xuất (logout), mượn sách (borrow), trả sách (give back). Kết quả chúng ta sẽ có một Use case diagram như sau:
3.2 Biểu đồ lớp (Class Diagram)
Class diagram mô tả kiểu của các đối tượng trong hệ thống và các loại quan hệ khác nhau tồn tại giữa chúng. Các thanh phần cơ bản của class diagram bao gồm:
- Tên class
- Attribute (field, property, thuộc tính)
- Operation (method, function, phương thức)
Ví dụ khai báo tên, attribute, operation kèm theo kiểu trả về của 1 class:
Ngoài ra để thể hiện phạm vi truy cập cho các thuộc tính và phương thức trong class chúng ta sẽ sử dụng thêm các ký hiệu như sau:
- Private ( – ): Chỉnh mình các đối tượng được tạo từ class này có thể sử dụng.
- Public ( + ): Mọi đối tượng đều có thể sử dụng.
- Protected ( # ): Chỉ các đối tượng được tạo từ class này và class kế thừa từ class này có thể sử dụng.
Relationship trong class diagram có thể chia làm 4 loại như sau:
- Inheritance: 1 class kế thừa từ 1 class khác.
- Association: 2 class có liên hệ với nhau nhưng không chỉ rõ mối liên hệ.
- Composition: Đối tượng tạo từ lass A mất thì đối tượng tạo từ class B sẽ mất.
- Agreegation: Đối tượng tạo từ lass A mất thì đối tượng tạo từ class B vẫn tồn tại độc lập.
Bội số quan hệ: là số lượng thể hiện của một lớp liên quan tới một thể hiện của lớp khác. Với mỗi liên kết, có hai bội số quan hệ cho hai đầu của liên kết.
0…1: 0 hoặc 1
n : Bắt buộc có n
0…* : 0 hoặc nhiều
1…* : 1 hoặc nhiều
m…n: có tối thiểu là m và tối đa là n
Ví dụ của việc sử dụng Class Diagram:
Chúng ta sẽ tiếp tục với việc xây dụng phần mềm Library Management FCT. Sau khi đã có Use case Diagram chúng ta sẽ xây dựng Class Diagram. Phần mềm sẽ bao gồm các class cơ bản là: Library Management FCT, User, Account, Book. Các thuộc tính và phương thức của các class này được xây dựng tùy theo thực tế ý tưởng muốn triển khai của người lập trình.
3.3 Biểu đồ tuần tự (Sequence Diagram)
Biểu đồ tuần tự là biểu đồ dùng để xác định các trình tự diễn ra sự kiện của một nhóm đối tượng nào đó. Nó miêu tả chi tiết các thông điệp được gửi và nhận giữa các đối tượng đồng thời cũng chú trọng đến việc trình tự về mặt thời gian gửi và nhận các thông điệp đó.
Các thành phần của biểu đồ tuần tự:
- Đối tượng (object or class): biểu diễn bằng các hình chữ nhật
- Lifelines: biểu diễn bằng các đường gạch rời thẳng đứng bên dưới các đối tượng
- Thông điệp (Message): biểu diễn bằng các đường mũi tên
- Xử lí bên trong đối tượng (biểu diễn bằng các đoạn hình chữ nhật rỗng nối với các đường đời đối tượng)
Ví dụ về việc sử dụng Sequence diagram:
Tiếp tục với việc sử dụng ví dụ về phần mềm Library Management FCT. Ở đây chúng ta sẽ sử dụng Sequence diagram để mô tả lại sự tương tác của 1 user với phần mềm khi thực hiện 1 action là mượn sách. Để một user có thể mượn sách thành công thì user cần thực hiện action mượn sách, hệ thống phần mềm khi đó sẽ kiểm tra tình trạng của sách có thể cho mượn không và kiểm tra trạng thái của người dùng có đủ điều kiện mượn sách hay không sau đó sẽ trả về thông báo cho người dùng biết là có thể mượn sách tại thư viện.
4. Lời kết
Trong thực tế, hầu hết các dự án phần mềm đều có phần tài liệu mô tả sử dụng biểu đồ UML, việc này giúp cho quá trình bảo trì và phát triển dự án trở lên đơn giản hơn. Ngoài ra trong khâu thiết kế phần mềm, các kỹ sư cũng thường sử dụng UML để lên ý tưởng hoặc mô tả vấn đề gặp phải khi develop. Đây chính là lý do mà việc nắm được kiến thức về biểu đồ UML trở nên quan trọng. Trong bài viết chúng ta đã được giới thiệu một cách tổng quan về sơ đồ UML và ba loại sơ đồ UML cơ bản thường hay sử dụng trong thực tế. Hy vọng thông qua những kiến thức được trình bày trong bài, người đọc có thể nắm và vận dụng được biểu đồ UML trong quá trình học tập và làm việc với các dự án phần mềm.
Tác giả
Nguyễn Tiến Thành
19,390 total views, 23 views today
bài viết rất bổ ích và đem lại nhiều kiến thức cho mình