

3. THIẾT KẾ HỆ THỐNG
- 10-05-2025
- Toanngo92
- 0 Comments
Mục lục
3.1 Giới thiệu
Thiết kế hệ thống là bước tiếp theo sau khi hoàn tất việc phân tích và đặc tả yêu cầu. Trong bước này, kiến trúc phần mềm được mô hình hóa bằng các biểu đồ giúp nhóm phát triển hiểu được cách hệ thống sẽ được xây dựng và vận hành. Thiết kế tốt giúp tiết kiệm chi phí lập trình và bảo trì sau này.
3.2 Các thành phần thiết kế chính
- Sơ đồ lớp (Class Diagram)
- Sơ đồ trình tự (Sequence Diagram)
- Sơ đồ cơ sở dữ liệu (ERD hoặc Logical Data Model)
- Kiến trúc tổng thể của hệ thống (System Architecture)
3.3 Thiết kế lớp (Class Diagram)
3.3.1 Vai trò của Class Diagram
Class Diagram mô tả cấu trúc tĩnh của hệ thống, thể hiện các lớp, thuộc tính, phương thức và mối quan hệ giữa các lớp. Đây là nền tảng để xây dựng mã nguồn theo hướng đối tượng.
3.3.2 Thành phần chính
- Class name: Tên lớp.
- Attributes: Biến đại diện cho dữ liệu.
- Methods: Các hàm xử lý.
- Relationships:
- Association (liên kết)
- Aggregation (tập hợp)
- Inheritance (kế thừa)
- Composition (cấu thành)
3.3.3 Ví dụ thực tế
Dự án: Quản lý khoá học
- Class: User
- Attributes: id, name, email, password, role
- Methods: login(), logout(), updateProfile()
- Class: Course
- Attributes: id, title, description, teacherId
- Methods: registerStudent(), closeCourse()
- Class: Enrollment
- Attributes: id, courseId, userId, registerDate
- Quan hệ: Nhiều User – Nhiều Course (qua Enrollment)
- Inheritance:
- User ← Student, Admin, Teacher
3.4 Thiết kế hành vi (Sequence Diagram)
3.4.1 Khái niệm
Sequence Diagram thể hiện luồng tương tác giữa các đối tượng theo thời gian. Mỗi đối tượng được vẽ theo trục đứng, các thông điệp được trao đổi là các mũi tên theo chiều ngang.
3.4.2 Các yếu tố cơ bản
- Actor: người dùng tương tác với hệ thống
- Object: các thực thể trong hệ thống
- Message: lời gọi hàm, truyền dữ liệu giữa các đối tượng
- Activation: phần xử lý tại mỗi đối tượng
3.4.3 Ví dụ thực tế: Đăng ký khoá học
- Student → LoginForm: submit(login, pass)
- LoginForm → AuthService: validate()
- AuthService → DB: SELECT user
- AuthService → Session: create
- Session → Student: forward to dashboard
Lưu ý: Cần thể hiện rõ ràng trình tự và logic nghiệp vụ.
3.5 Thiết kế cơ sở dữ liệu (ERD)
3.5.1 Cơ bản về ERD (Entity Relationship Diagram)
ERD biểu diễn các thực thể trong hệ thống, mối quan hệ giữa chúng và các thuộc tính tương ứng. Đây là cơ sở để sinh viên chuyển thành thiết kế bảng CSDL thực tế.
3.5.2 Ví dụ thực tế
Các bảng chính:
- Users: id, name, email, password, role
- Courses: id, title, description, teacher_id
- Enrollments: id, user_id, course_id, created_at
Mối quan hệ:
- Một User có thể đăng ký nhiều Course → N:N (giải bằng bảng Enrollment)
- Một Course chỉ do một giáo viên phụ trách (1:1)
Chuẩn hoá:
- Tránh lặp dữ liệu
- Tách bảng phụ cho danh mục: ví dụ bảng
CourseTypes
3.6 Kiến trúc tổng thể hệ thống
3.6.1 Mô hình 3 lớp (Three-tier Architecture)
- Presentation Layer: Giao diện người dùng (HTML/CSS/JS, React…)
- Business Logic Layer: Xử lý nghiệp vụ (Laravel, Spring, Django…)
- Data Access Layer: Tương tác CSDL (MySQL, PostgreSQL…)
3.6.2 Ví dụ kiến trúc thực tế
Công nghệ sử dụng:
- Frontend: Bootstrap 5
- Backend: Laravel 10
- Database: MySQL
- Authentication: Laravel Sanctum / Session
Sơ đồ kiến trúc: User ↔ Web UI ↔ Laravel Route ↔ Controller ↔ Service ↔ Model ↔ DB
3.7 Tổng kết chương
- Thiết kế là cầu nối giữa phân tích và lập trình.
- Class Diagram và ERD giúp lập trình có định hướng rõ ràng.
- Sequence Diagram hỗ trợ mô tả logic theo thời gian.
- Kiến trúc hệ thống phải phù hợp với năng lực nhóm và phạm vi đề tài.
Bài tập
Bài tập thực hành:
- Vẽ Class Diagram cho hệ thống của bạn
- Viết mô tả cho 1 lớp chính (attributes + methods)
- Tạo Sequence Diagram cho chức năng "Đăng nhập"
- Thiết kế bảng dữ liệu theo sơ đồ ERD