Bối cảnh và vấn đề nghiên cứu

Trong công tác quản lý vận hành tại các thư viện, việc kiểm soát nguồn tài liệu sách, hồ sơ độc giả cùng các hoạt động mượn trả đòi hỏi sự chính xác, liên tục và an toàn dữ liệu. Báo cáo bài tập lớn học phần "Phân tích thiết kế hệ thống" với đề tài "Quản lý thư viện" do nhóm sinh viên Thang Quang Lợi, Lại Văn Hưng và Đỗ Văn Nhật (Khoa Công nghệ thông tin, Lớp 11 CNTT 1, Trường Đại học Công nghệ Đông Á) thực hiện vào tháng 10 năm 2022 tại Bắc Ninh, tập trung giải quyết bài toán mô hình hóa và thiết kế hệ thống phần mềm quản lý thư viện hoàn chỉnh.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài bao gồm các nội dung trọng tâm:

  1. Xác định đầy đủ các tác nhân tham gia và thu thập toàn bộ yêu cầu chức năng, yêu cầu phi chức năng của hệ thống quản lý thư viện.
  2. Xây dựng mô hình phân tích tĩnh (xác định các lớp thực thể, thuộc tính, phương thức và quan hệ cấu trúc) và mô hình phân tích động (biểu đồ ca sử dụng, biểu đồ hoạt động, biểu đồ giao tiếp).
  3. Thiết kế kiến trúc hệ thống mạng, giải quyết bài toán tương tranh dữ liệu khi nhiều máy khách cùng truy xuất máy chủ cơ sở dữ liệu.
  4. Xây dựng mô hình an toàn bảo mật, phân rã hệ thống con, thiết lập biểu đồ gói và cấu trúc dữ liệu phục vụ cho giai đoạn lập trình cài đặt.

Đối tượng nghiên cứu của đồ án là quy trình nghiệp vụ quản lý sách, quản lý độc giả và điều hành mượn - trả sách. Phạm vi nghiên cứu giới hạn trong không gian vận hành hệ thống phần mềm quản lý tại thư viện với hai tác nhân trực tiếp là Thủ thư và Độc giả, được thực hiện trong khuôn khổ học phần Phân tích thiết kế hệ thống tại thời điểm tháng 10/2022.


Cơ sở lý thuyết và phương pháp

Đồ án ứng dụng phương pháp phân tích và thiết kế hệ thống hướng đối tượng (OOAD) kết hợp ngôn ngữ mô hình hóa thống nhất (UML) để trừu tượng hóa các thực thể và quy trình nghiệp vụ.

Các công cụ và khung lý thuyết tác giả sử dụng bao gồm:

  • Kỹ thuật trích danh từ từ kịch bản ca sử dụng (Use Case Scenarios): Phân tích ngữ cảnh văn bản để trích xuất danh từ, loại bỏ các khái niệm trùng lặp hoặc nằm ngoài phạm vi, từ đó xác định các lớp thực thể chính xác.
  • Mô hình kiến trúc mạng 3 tầng (3-Tier Architecture): Phân tách độc lập tầng giao diện người dùng (User Interface), tầng xử lý nghiệp vụ (Application Server / Business Rule) và tầng lưu trữ dữ liệu (Database Server).
  • Mô hình xử lý giao tác kiểm soát tương tranh 3 pha: Áp dụng chu trình 3 pha gồm Pha đọc (Read phase), Pha phê chuẩn (Validation phase) và Pha ghi (Write phase) có gắn nhãn số thứ tự duy nhất để ngăn ngừa xung đột dữ liệu.
  • Khung an toàn bảo mật thông tin 5 khía cạnh: Đánh giá hệ thống trên các tiêu chí Sự riêng tư (Privacy), Xác thực (Authentication), Tính không thể bác bỏ (Irrefutability), Tính toàn vẹn (Integrity) và Tính an toàn / Quyền hạn (Safety).

Nguồn dữ liệu của đề tài được tổng hợp từ khảo sát thực tế quy trình mượn trả tài liệu, quản lý thẻ độc giả và kiểm kê danh mục sách tại cơ sở thư viện.


Nội dung chính theo từng chương

I. Xác định yêu cầu

Nội dung phần I tập trung nhận diện tác nhân, tổng hợp danh mục ca sử dụng (Use Case) và đặc tả chi tiết từng kịch bản nghiệp vụ.

Hệ thống xác định hai tác nhân chính:

  • Độc giả: Người đã đăng ký làm thẻ thư viện, có thông tin lưu trữ trong hệ thống (Họ tên, ngày sinh, giới tính, số CMND/CCCD,...).
  • Thủ thư: Người trực tiếp vận hành phần mềm, được cấp tài khoản để đăng nhập và điều hành các chức năng quản lý.

Hệ thống quản lý 6 nhóm Use Case chính (từ U1 đến U6):

  • U1 - Đăng nhập: Cho phép thủ thư xác thực quyền truy cập vào hệ thống.
  • U2 - Đăng xuất: Thủ thư kết thúc phiên làm việc và đưa hệ thống về màn hình đăng nhập ban đầu.
  • U3 - Quản lý độc giả: Thực hiện các tác vụ thêm mới, chỉnh sửa thông tin, xóa và tìm kiếm độc giả.
  • U4 - Quản lý sách: Thực hiện các tác vụ thêm sách mới, cập nhật thông tin sách, xóa sách và tra cứu sách.
  • U5 - Quản lý mượn sách: Ghi nhận thông tin mượn (đầu sách, độc giả, ngày mượn, ngày hẹn trả, số lượng mượn).
  • U6 - Quản lý trả sách: Tra cứu độc giả, xác nhận các đầu sách đã hoàn trả và cập nhật ngày trả thực tế.
Tên Use Case Tác nhân chính Tiền điều kiện Đảm bảo thành công Luồng sự kiện chính & Xử lý ngoại lệ
Đăng nhập Thủ thư Không có Đăng nhập thành công, hiển thị Menu chính Nhập tên tài khoản, mật khẩu. Ngoại lệ: Thông báo tài khoản/mật khẩu không chính xác, yêu cầu nhập lại.
Đăng xuất Thủ thư Đã đăng nhập Thoát khỏi hệ thống, chuyển về form Đăng nhập Chọn nút Đăng xuất tại Menu chính. Không có ngoại lệ.
Thêm sách Thủ thư Đã đăng nhập Lưu thông tin sách mới vào CSDL Nhập mã, tên sách, tác giả, loại sách, NXB, năm XB, số lượng. Ngoại lệ: Mã sách bị trùng, yêu cầu nhập lại.
Xóa sách Thủ thư Đã đăng nhập Xóa sách khỏi CSDL Chọn sách trong danh sách, xác nhận xóa. Ngoại lệ: Sách đang có người mượn thì không cho phép xóa.
Sửa sách Thủ thư Đã đăng nhập Cập nhật thông tin sách vào CSDL Chọn sách, sửa các trường thông tin cần thay đổi. Ngoại lệ: Mã sách sửa bị trùng lặp.
Tìm kiếm sách Thủ thư Đã đăng nhập Hiển thị kết quả sách tìm thấy Nhập tiêu chí tìm kiếm (mã, tên, tác giả, loại, NXB...). Ngoại lệ: Không tìm thấy sách, yêu cầu nhập lại.
Thêm độc giả Thủ thư Đã đăng nhập Lưu hồ sơ độc giả mới vào CSDL Nhập mã ĐG, họ tên, ngày sinh, số CMTND, SĐT, hạn thẻ, địa chỉ. Ngoại lệ: Trùng mã độc giả.
Xóa độc giả Thủ thư Đã đăng nhập Xóa thông tin độc giả khỏi CSDL Chọn độc giả trong danh sách và kích hoạt lệnh xóa.
Sửa độc giả Thủ thư Đã đăng nhập Cập nhật hồ sơ độc giả vào CSDL Chọn độc giả, sửa thông tin cá nhân/hạn thẻ. Ngoại lệ: Trùng lặp mã độc giả.
Tìm kiếm độc giả Thủ thư Đã đăng nhập Trả về danh sách độc giả phù hợp Nhập mã ĐG, họ tên, SĐT hoặc số CMTND. Ngoại lệ: Báo không tìm thấy độc giả.
Mượn sách Thủ thư Đã đăng nhập Lưu thông tin phiếu mượn vào CSDL Nhập mã sách, mã độc giả, ngày mượn, hẹn trả, số lượng. Ngoại lệ: Quá số lượng cho phép hoặc mã ĐG không tồn tại.
Trả sách Thủ thư Đã đăng nhập Cập nhật trạng thái và ngày trả sách Tìm mã ĐG, chọn sách cần trả, nhập ngày trả. Ngoại lệ: Không thấy mã ĐG hoặc ngày trả không hợp lệ.

Phần này cũng định nghĩa danh mục các biểu đồ ca sử dụng và biểu đồ hoạt động (Activity Diagrams) tương ứng với từng quy trình làm việc của thủ thư và độc giả.


II. Phân tích yêu cầu

Nội dung phân tích yêu cầu chia làm hai phần chính: phân tích tĩnh và phân tích động.

1. Phân tích tĩnh

Bằng kỹ thuật trích danh từ từ các kịch bản ca sử dụng, nhóm tác giả liệt kê tập danh từ ban đầu gồm: Thủ thư, Tài khoản, Mật khẩu, Sách, Mã Sách, Tên sách, Tên tác giả, Loại sách, Nhà xuất bản, Năm xuất bản, Số lượng, Độc giả, Mã độc giả, Tên độc giả, Ngày sinh, Số CMTND, Số điện thoại, Ngày hết hạn thẻ, Địa chỉ, Trả sách, Mượn sách, Ngày mượn, Ngày hẹn trả, Ngày trả.

Sau khi lọc bỏ các danh từ trùng lặp, ngoài phạm vi hoặc đóng vai trò thuộc tính, hệ thống xác định 4 lớp thực thể cốt lõi:

Tên lớp Định nghĩa & Ý nghĩa Thuộc tính Phương thức
Thủ thư (Tài khoản) Quản lý thông tin tài khoản dùng chung của các thủ thư, tác động đến các lớp Sách, Mượn trả sách, Độc giả. tK (tên đăng nhập), mK (mật khẩu) taoTK(tk, mk)
dangNhap(tk, mk)
dangXuat()
Sach Chứa thông tin về sách trong thư viện, có quan hệ mượn trả với Độc giả. maS, tenS, loaiS, tenTg, nhaXb, namXb, soL getter(), setter()
add(Sach), delete(Sach)
edit(Sach), display(Sach)
check(int sl), search(String)
DocGia Chứa thông tin độc giả còn hạn thẻ, có quan hệ mượn trả với lớp Sach. maDG, tenDG, ngaySinh, soCMT, sDt, ngayHHT, diaC getter(), setter()
add(DocGia), delete(DocGia)
edit(DocGia), display(DocGia)
checkCard(String), search(String)
MuonTraSach Lưu trữ thông tin liên kết mượn - trả giữa Độc giả và Sách. maS, maDG, ngayM, ngayHentra, ngayT getter(), setter()
add(Muontrasach)
delete(Muontrasach)
edit(Muontrasach)
display(Muontrasach)

2. Phân tích động

Phân tích động thiết lập các biểu đồ giao tiếp (Communication Diagrams) cho 11 kịch bản chi tiết:

  1. Thủ thư đăng nhập
  2. Thủ thư tìm kiếm sách
  3. Thủ thư tìm kiếm độc giả
  4. Thủ thư thêm độc giả
  5. Thủ thư sửa độc giả
  6. Thủ thư xóa độc giả
  7. Thủ thư thêm sách
  8. Thủ thư sửa sách
  9. Thủ thư xóa sách
  10. Độc giả mượn sách
  11. Độc giả trả sách

Pha thiết kế

Pha thiết kế hoàn thiện cấu trúc kỹ thuật cho toàn bộ hệ thống phần mềm, bao gồm:

  • Lựa chọn mô hình mạng: Triển khai mô hình 3 tầng (Tầng giao diện, Tầng ứng dụng logic nghiệp vụ, Tầng máy chủ cơ sở dữ liệu).
  • Phân rã hệ thống con: Hệ thống được chia thành 3 hệ thống con độc lập gồm:
    • Hệ thống con quản lý sách: Thêm sách, sửa thông tin sách, xóa sách, tìm kiếm sách.
    • Hệ thống con quản lý mượn trả sách: Mượn sách, trả sách.
    • Hệ thống con quản lý độc giả: Thêm độc giả, sửa thông tin độc giả, xóa thông tin độc giả, tìm kiếm độc giả.
  • Xây dựng biểu đồ gói (Package Diagram), thiết kế hệ thống con và lược đồ cơ sở dữ liệu.

Thiết kế và triển khai

1. Kiến trúc mạng 3 tầng

Hệ thống được thiết kế theo kiến trúc 3 tầng nhằm tối ưu hóa vận hành và mở rộng:

  • Tầng giao diện người dùng (User Interface / Presentation Tier): Chạy trên máy khách (Client), chịu trách nhiệm nhập yêu cầu, thu thập dữ liệu và hiển thị kết quả cho người dùng. Tầng này không trực tiếp xử lý tính toán logic hay truy vấn CSDL.
  • Tầng ứng dụng (Application Server / Business Rule Tier): Tầng trung gian thực thi logic nghiệp vụ, kiểm tra ràng buộc dữ liệu và xử lý đa luồng. Tầng ứng dụng tiếp nhận yêu cầu từ tầng giao diện và giao tiếp với tầng dữ liệu một cách độc lập.
  • Tầng dữ liệu (Database Server / Data Storage Tier): Hệ quản trị CSDL chuyên dụng thực hiện các thao tác đọc, ghi, lưu trữ và đảm bảo cơ chế an toàn khi truy xuất đồng thời.

Lý do lựa chọn kiến trúc 3 tầng được tác giả luận giải qua 7 yếu tố kỹ thuật:

  1. Dễ dàng phát triển: Phân tách rõ ràng giữa giao diện, logic và dữ liệu giúp đơn giản hóa công việc lập trình.
  2. Sử dụng tài nguyên máy tính hiệu quả: Tầng máy khách chỉ cần cấu hình nhẹ; tầng ứng dụng yêu cầu CPU/RAM; tầng dữ liệu tối ưu năng lực tính toán và dung lượng ổ cứng.
  3. Cải tiến hiệu năng: Có thể nhân rộng máy chủ ở tầng ứng dụng và dữ liệu để cân bằng tải và tối ưu hóa chuyên biệt.
  4. Nâng cao tính bảo mật: Tầng dữ liệu nằm ẩn sau tầng giữa; cơ chế kiểm soát truy cập đặt tại tầng ứng dụng giúp ngăn chặn các cuộc tấn công từ Internet.
  5. Hạn chế chi phí đầu tư: Cho phép tái sử dụng các hệ thống lưu trữ/máy chủ cũ đóng vai trò tầng dữ liệu thông qua tầng logic trung gian kết nối.
  6. Tính linh hoạt: Dễ dàng chuyển đổi hoặc mở rộng mô hình từ 1 tầng lên 2 tầng, 3 tầng tùy theo nhu cầu thực tế.
  7. Đa dạng thiết bị đầu cuối: Hỗ trợ nhiều loại máy khách khác nhau (máy tính cá nhân, PDA, điện thoại di động...) mà không làm thay đổi tầng ứng dụng và tầng CSDL.

2. Thiết kế kiểm soát tương tranh

Khi nhiều máy khách cùng gọi hàm xử lý trên máy chủ dữ liệu tập trung, hiện tượng tương tranh sẽ xảy ra. Để giải quyết, hệ thống áp dụng cơ chế giao tác (Transaction) 3 pha:

  • Pha đọc (Read phase): Toàn bộ các cập nhật dữ liệu được ghi nhận vào các bản ghi tạm thời.
  • Pha phê chuẩn (Validation phase): Hệ thống kiểm tra các bản ghi tạm; nếu phát hiện xung đột với giao tác đã thực thi trước đó thì giao tác hiện tại lập tức bị hủy.
  • Pha ghi (Write phase): Nếu vượt qua pha phê chuẩn không có xung đột, bản ghi tạm được chuyển thành dữ liệu chính thức trong CSDL.

Để đảm bảo trật tự và hạn chế tương tranh tối đa:

  • Các giao tác được gán số thứ tự duy nhất (chỉ cấp một lần, không tái sử dụng) ngay trước khi bước vào pha phê chuẩn.
  • Pha đọc và pha phê chuẩn có thể diễn ra đồng thời giữa nhiều giao tác, nhưng pha ghi bắt buộc phải thực hiện tuần tự theo đúng số thứ tự đã gán.

3. Thiết kế an toàn và bảo mật

Hệ thống tuân thủ 5 khía cạnh bảo mật: Sự riêng tư (Privacy), Xác thực (Authentication), Tính không thể bác bỏ (Irrefutability), Tính toàn vẹn (Integrity) và Tính an toàn / Quyền hạn (Safety).

Các giải pháp kỹ thuật cụ thể được thiết kế bao gồm:

  • Mã hóa dữ liệu: Sử dụng thuật toán băm MD5 để mã hóa tên tài khoản và mật khẩu người dùng trước khi lưu trữ hoặc truyền tải.
  • Ghi nhật ký hệ thống (Log file):
    • Mọi thay đổi dữ liệu trong CSDL đều được ghi nhật ký bao gồm: nội dung thay đổi, thời gian thực hiện và địa chỉ IP của máy tính gửi yêu cầu.
    • Mọi câu lệnh/yêu cầu từ máy khách đều được lưu nhật ký để xử lý phục hồi khi xảy ra đứt gãy đường truyền mạng.
  • Sao lưu định kỳ: Lên lịch sao lưu cơ sở dữ liệu máy chủ thường xuyên nhằm phòng ngừa thảm họa và tấn công mạng.
  • Chống tấn công SQL Injection: Thực hiện lọc và xóa triệt để các ký tự đặc biệt nguy hiểm (như dấu chấm phẩy ;, dấu ngoặc kép ", dấu nháy đơn ') trong toàn bộ dữ liệu đầu vào do người dùng nhập trước khi đưa vào câu truy vấn.

Kết quả và đóng góp

1. Kết quả chính

  • Xây dựng hoàn chỉnh hồ sơ phân tích yêu cầu nghiệp vụ quản lý thư viện với 2 tác nhân và 6 nhóm Use Case cốt lõi (U1 - U6), đi kèm kịch bản luồng sự kiện chính và luồng ngoại lệ cụ thể.
  • Xác định 4 lớp thực thể (ThuThu, Sach, DocGia, MuonTraSach) với đầy đủ thuộc tính và tập phương thức phục vụ xử lý dữ liệu.
  • Thiết lập 11 biểu đồ giao tiếp mô hình hóa hành vi động của hệ thống.
  • Hoàn thiện bản thiết kế kiến trúc mạng 3 tầng, phân rã 3 hệ thống con và thiết kế lược đồ cơ sở dữ liệu.
  • Đề xuất giải pháp kiểm soát tương tranh giao tác 3 pha và hệ thống bảo mật 5 giải pháp (MD5, Log IP/thời gian, chống SQL Injection).

2. Đóng góp về mặt kỹ thuật

  • Chuẩn hóa quy trình phân tích hướng đối tượng từ việc trích xuất danh từ kịch bản đến thiết kế lớp thực thể.
  • Xây dựng mô hình xử lý tương tranh logic giúp ngăn ngừa xung đột dữ liệu trên hệ thống thư viện quản lý tập trung.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Báo cáo tập trung chủ yếu vào giai đoạn phân tích và thiết kế hệ thống; chưa trình bày mã nguồn cài đặt cụ thể của từng module chương trình; thuật toán băm mật khẩu MD5 được đề xuất trong tài liệu có thể gặp hạn chế về độ an toàn theo các tiêu chuẩn bảo mật hiện đại; chưa có số liệu thực nghiệm về hiệu năng khi chịu tải lớn trên môi trường thực tế.
  • Hướng phát triển: Tiến hành lập trình hoàn chỉnh phần mềm dựa trên các biểu đồ thiết kế; nâng cấp giải pháp mã hóa mật khẩu; xây dựng thêm các chức năng nâng cao như thống kê - báo cáo tự động và tích hợp cổng tra cứu trực tuyến cho độc giả.

Giá trị tham khảo

Tài liệu là tài liệu học thuật hữu ích đối với:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin đang học tập học phần Phân tích thiết kế hệ thống hoặc thực hiện đồ án môn học.
  • Người nghiên cứu quy trình mô hình hóa UML trong bài toán quản lý thư viện truyền thống.
  • Các phần đáng tham khảo: Kỹ thuật trích danh từ từ ca sử dụng để tìm lớp thực thể, phương pháp đặc tả Use Case chi tiết có luồng ngoại lệ, và mô hình xử lý giao tác tương tranh 3 pha.

Câu hỏi thường gặp

1. Hệ thống phân chia những tác nhân nào và quyền hạn của từng tác nhân ra sao?
Hệ thống xác định 2 tác nhân: Độc giả (đã được làm thẻ, lưu trữ thông tin cá nhân trong CSDL để mượn/trả sách) và Thủ thư (người dùng trực tiếp có tài khoản đăng nhập để thao tác toàn bộ các chức năng quản lý sách, độc giả và mượn trả).

2. Các lớp thực thể chính của hệ thống gồm những lớp nào và có những phương thức gì?
Gồm 4 lớp: Lớp Thủ thư/Tài khoản (taoTK, dangNhap, dangXuat), lớp Sach (add, delete, edit, display, check, search, getter, setter), lớp DocGia (add, delete, edit, display, checkCard, search, getter, setter) và lớp MuonTraSach (add, delete, edit, display, getter, setter).

3. Cơ chế kiểm soát tương tranh trong hệ thống hoạt động như thế nào?
Dữ liệu được quản lý tập trung; hệ thống áp dụng giao tác 3 pha: Pha đọc (ghi vào bản ghi tạm), Pha phê chuẩn (kiểm tra xung đột) và Pha ghi (chuyển thành dữ liệu chính thức). Giao tác được gán số thứ tự duy nhất trước pha phê chuẩn; pha đọc và phê chuẩn có thể diễn ra đồng thời nhưng pha ghi bắt buộc thực hiện tuần tự theo số thứ tự.

4. Hệ thống đề xuất các biện pháp cụ thể nào để phòng chống SQL Injection và bảo mật dữ liệu?
Hệ thống thực hiện lọc và xóa các ký tự đặc biệt (;, ", ') từ dữ liệu người dùng nhập, sử dụng mã hóa MD5 cho tên tài khoản và mật khẩu, ghi nhật ký thay đổi CSDL kèm địa chỉ IP và thời gian, ghi nhật ký yêu cầu của máy khách, cùng định kỳ sao lưu dữ liệu máy chủ.

5. Vì sao hệ thống lựa chọn kiến trúc mạng 3 tầng thay vì mô hình 1 hoặc 2 tầng?
Kiến trúc 3 tầng giúp phân tách rõ ràng giao diện, logic nghiệp vụ và dữ liệu; sử dụng phần cứng máy tính tối ưu theo từng tầng; nâng cao bảo mật bằng cách che giấu máy chủ dữ liệu phía sau tầng trung gian; hỗ trợ cân bằng tải, dễ dàng mở rộng và hỗ trợ đa dạng chủng loại thiết bị máy khách (PC, PDA, điện thoại di động).


Kết luận

Bài tập lớn "Quản lý thư viện" của nhóm sinh viên Trường Đại học Công nghệ Đông Á đã xây dựng một mô hình phân tích và thiết kế hệ thống hoàn chỉnh theo chuẩn UML cho bài toán quản lý thư viện. Báo cáo cung cấp đầy đủ từ việc đặc tả ca sử dụng, phân tích hướng đối tượng tĩnh - động, đến thiết kế kiến trúc mạng 3 tầng và cơ chế an toàn dữ liệu. Đây là tài liệu tham khảo chi tiết, mang tính cấu trúc chuẩn mực cho sinh viên chuyên ngành công nghệ thông tin trong các học phần phân tích thiết kế phần mềm.