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

Trong bối cảnh chuyển đổi số và sự phát triển mạnh mẽ của thương mại điện tử, việc xây dựng các nền tảng kinh doanh trực tuyến là nhu cầu tất yếu đối với các doanh nghiệp phân phối ấn phẩm. Báo cáo bài tập lớn môn Nhập môn Công nghệ phần mềm tại Trường Đại học Công nghiệp Hà Nội (năm 2023) do nhóm sinh viên gồm Dương Mạnh Đạt, Phạm Thanh Bình, Nguyễn Hữu Bắc và Vũ Minh Kha thực hiện, dưới sự hướng dẫn của TS. Vũ Đình Minh, tập trung vào việc nghiên cứu mô hình quy trình phát triển phần mềm truyền thống và ứng dụng vào bài toán thực tế của Nhà sách Cá Chép.

Mục tiêu nghiên cứu của đề tài được xác định cụ thể gồm 4 nội dung:

  1. Giải thích và chỉ ra các hoạt động, thứ tự ưu tiên của các giai đoạn trong mô hình Thác nước (Waterfall).
  2. Phân tích, chỉ rõ các ưu điểm và nhược điểm của mô hình Thác nước.
  3. Xác định các điều kiện khi nào nên và không nên sử dụng mô hình Thác nước trong các dự án phần mềm.
  4. Vận dụng mô hình quy trình Thác nước vào dự án phân tích, thiết kế phần mềm website bán sách điện tử cho Nhà sách Cá Chép nhằm tối ưu hóa quy trình bán hàng và nâng cao trải nghiệm mua sắm trực tuyến.

Đối tượng và phạm vi nghiên cứu của đề tài:

  • Đối tượng nghiên cứu: Mô hình quy trình Thác nước, các phương pháp và công cụ kỹ thuật phần mềm (công cụ mô hình hóa, công cụ quản lý dự án, công cụ kiểm thử), nguyên lý phân tích - thiết kế hướng đối tượng (OOAD) và ngôn ngữ mô hình hóa UML.
  • Phạm vi nghiên cứu: Tìm hiểu mô hình Thác nước và áp dụng vào việc xây dựng tài liệu phân tích yêu cầu, thiết kế hệ thống cho website bán sách điện tử của Nhà sách Cá Chép.
  • Thời gian và không gian thực hiện: Đề tài được thực hiện từ ngày 13/03/2023 đến ngày 25/05/2023 tại Trường Đại học Công nghiệp Hà Nội, hướng tới mô hình kinh doanh của chuỗi nhà sách Cá Chép tại Việt Nam.

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

Khung lý thuyết và mô hình tiếp cận

Đề tài dựa trên các nền tảng lý thuyết cốt lõi của công nghệ phần mềm:

  • Mô hình Thác nước (Waterfall Model): Mô hình vòng đời tuần tự tuyến tính (SDLC), trong đó quá trình phát triển được chia thành các giai đoạn tách biệt, không chồng lấn, giai đoạn sau chỉ bắt đầu khi giai đoạn trước đã hoàn thành và được nghiệm thu đầy đủ.
  • Kỹ thuật yêu cầu phần mềm (Requirements Engineering): Gồm hai quy trình chính là phát triển yêu cầu (phát hiện, phân tích, mô tả, kiểm tra tính hợp lý) và quản lý yêu cầu.
  • Phân tích và thiết kế hướng đối tượng (OOAD): Tiếp cận hệ thống dựa trên đối tượng, lớp và tuân thủ bộ 5 nguyên tắc SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion).
  • Ngôn ngữ mô hình hóa thống nhất (UML): Sử dụng các biểu đồ Use Case, Activity Diagram, Sequence Diagram, VOPC (View Of Participating Classes) và Class Diagram để trực quan hóa cấu trúc và hành vi hệ thống.

Phương pháp nghiên cứu và công cụ sử dụng

  • Phương pháp phân tích - tổng hợp tài liệu: Nghiên cứu lý thuyết kỹ thuật phần mềm, cấu trúc quy trình SDLC và các tài liệu chuẩn về kiến trúc hướng đối tượng.
  • Phương pháp mô hình hóa hệ thống: Phân rã chức năng nghiệp vụ, xác định tác nhân, xây dựng kịch bản ca sử dụng và mô hình dữ liệu quan hệ.
  • Công cụ hỗ trợ:
    • Thiết kế và mô hình hóa: Rational Rose, Draw.io, Studio Case, MockUp.
    • Quản lý dự án và mã nguồn: Trello, Asana, VSCode.
    • Môi trường và công nghệ ứng dụng: Ngôn ngữ HTML/CSS/JavaScript, ngôn ngữ kịch bản phía máy chủ PHP và hệ quản trị cơ sở dữ liệu MySQL.

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

Chương 1: Tổng quan về đề tài

Chương này giới thiệu tổng quan về bài toán kinh doanh của Nhà sách Cá Chép, các yêu cầu kỹ thuật tổng quát của dự án và phân tích chi tiết cơ sở lý luận của mô hình Thác nước.

Dự án phần mềm Website Nhà sách Cá Chép được xây dựng nhằm phục vụ hai nhóm đối tượng: khách hàng (tìm kiếm, mua sách trực tuyến, quản lý giỏ hàng) và nhân viên/quản trị viên (quản lý thông tin sách, danh mục và đơn hàng). Các thông số kỹ thuật đầu vào - đầu ra của hệ thống bao gồm:

Yếu tố kỹ thuật Mô tả chi tiết
Dữ liệu vào - Thông tin sản phẩm: Mã, tên, giá, số lượng, ảnh, mô tả.
- Thông tin người dùng: Họ tên, email, mật khẩu, địa chỉ nhận hàng, số điện thoại, thông tin thanh toán.
Dữ liệu ra - Giỏ hàng (danh sách sản phẩm, đơn giá, số lượng).
- Đơn đặt hàng (thông tin khách hàng, địa chỉ giao nhận, chi tiết sản phẩm, trạng thái).
- Thông tin chi tiết sản phẩm hiển thị trên giao diện.
Tiến trình xử lý Đăng ký/đăng nhập, duyệt danh mục/tìm kiếm, cập nhật giỏ hàng, thanh toán đơn hàng và quản lý dữ liệu người dùng/đơn hàng.
Ràng buộc Khách hàng phải có tài khoản để đưa sản phẩm vào giỏ hàng; thông tin sản phẩm và giao hàng phải chính xác; dữ liệu quản trị yêu cầu quyền truy cập bảo mật.

Về mô hình quy trình, báo cáo phân tích 6 giai đoạn tuần tự của mô hình Thác nước:

  1. Thu thập và phân tích yêu cầu (Requirement Analysis): Tiếp nhận và tài liệu hóa toàn bộ yêu cầu của hệ thống.
  2. Thiết kế hệ thống (System Design): Xác định kiến trúc tổng thể, yêu cầu phần cứng và thiết kế cơ sở dữ liệu.
  3. Thực hiện (Implementation): Lập trình các đơn vị chương trình nhỏ (unit) và kiểm thử đơn vị.
  4. Tích hợp và kiểm thử (Integration and Testing): Ghép nối các đơn vị và kiểm thử toàn bộ hệ thống.
  5. Triển khai hệ thống (Deployment): Cài đặt sản phẩm vào môi trường khách hàng hoặc đưa ra thị trường.
  6. Bảo trì (Maintenance): Sửa lỗi phát sinh, phát hành bản vá và nâng cấp tính năng.

Báo cáo cũng chỉ ra ưu điểm (dễ quản lý, mốc thời gian rõ ràng, tài liệu hóa chặt chẽ), nhược điểm (khó thay đổi yêu cầu giữa chừng, rủi ro cao do chỉ có sản phẩm hoạt động ở giai đoạn cuối) và khuyến nghị các trường hợp áp dụng phù hợp (dự án có yêu cầu rõ ràng, ít thay đổi, công nghệ ổn định).

Chương 2: Phân tích và đặc tả yêu cầu phần mềm

Chương 2 tập trung vào việc mô hình hóa các yêu cầu chức năng và phi chức năng của hệ thống thông qua kỹ thuật ca sử dụng (Use Case). Hệ thống xác định hai tác nhân chính: Khách hàng (thực hiện đăng ký, đăng nhập, tìm kiếm sách, quản lý giỏ hàng, thanh toán) và Quản trị viên (đăng nhập, quản lý sản phẩm, đơn hàng, danh mục).

Nội dung trọng tâm là phân tích và đặc tả chi tiết 4 Use Case cốt lõi:

  • Chức năng Đăng ký: Cho phép khách hàng tạo tài khoản với họ tên, email (đúng định dạng) và mật khẩu (không chứa ký tự đặc biệt). Hệ thống kiểm tra tính hợp lệ và xử lý các luồng ngoại lệ khi trùng email hoặc sai định dạng.
  • Chức năng Đăng nhập: Xác thực tên đăng nhập/email và mật khẩu. Hỗ trợ luồng phụ xử lý khi thông tin không hợp lệ hoặc tính năng gửi liên kết khôi phục mật khẩu qua email.
  • Chức năng Tìm kiếm sách: Cho phép tìm kiếm theo tên sách hoặc tên tác giả. Hệ thống xử lý luồng sự kiện chính đưa ra danh sách kết quả và luồng thay thế khi không tìm thấy sách hoặc sách chưa có hàng.
  • Chức năng Thanh toán: Khách hàng nhập thông tin nhận hàng (họ tên, email, số điện thoại, địa chỉ) và lựa chọn phương thức thanh toán. Hệ thống xác nhận đơn hàng và cập nhật dữ liệu giao dịch.

Mỗi chức năng trên đều được chuẩn hóa qua 5 tài liệu mô hình: Sơ đồ Use Case, Sơ đồ hoạt động (Activity Diagram), Biểu đồ trình tự (Sequence Diagram), Biểu đồ lớp tham gia ca sử dụng (VOPC) và Bảng đặc tả luồng sự kiện.

Cơ sở dữ liệu ban đầu được xác định qua các thực thể: QuanLy, KhachHang, NhaXuatBan, LoaiSach, SanPham, Dondathang. Yêu cầu phi chức năng bao gồm tính tương thích giao diện trên nhiều thiết bị thông qua trình duyệt web (Google Chrome, Firefox, Opera, IE hỗ trợ JavaScript), cùng các quy định về kiểm soát truy cập và bảo mật dữ liệu theo vai trò.

Chương 3: Thiết kế phần mềm

Chương 3 trình bày các quyết định thiết kế kiến trúc, thiết kế dữ liệu, thiết kế thành phần và giao diện người dùng dựa trên phương pháp hướng đối tượng và kiến trúc phân tầng MVC (Model-View-Controller).

Về mặt kiến trúc:

  • Kiến trúc hướng đối tượng: Vận dụng các đặc tính đóng gói (encapsulation), trạng thái (state), kế thừa (inheritance), đa hình (polymorphism) và kiểm soát truy cập (access levels) nhằm tăng tính tái sử dụng và khả năng bảo trì.
  • Kiến trúc MVC: Phân tách rõ ràng ba thành phần:
    • Model: Chịu trách nhiệm quản lý logic dữ liệu và tương tác với cơ sở dữ liệu.
    • View: Hiển thị thông tin và cung cấp giao diện tương tác cho người dùng.
    • Controller: Tiếp nhận yêu cầu từ View, điều phối xử lý qua Model và trả kết quả về View.

Về mặt thiết kế dữ liệu, từ biểu đồ lớp thực thể đầy đủ, hệ thống thực hiện chuẩn hóa dữ liệu về Dạng chuẩn 3 (3NF) để loại bỏ dư thừa dữ liệu và đảm bảo tính toàn vẹn quan hệ.

Thiết kế và triển khai

Kiến trúc dữ liệu chuẩn hóa (3NF)

Hệ thống chuyển đổi mô hình thực thể thành 7 quan hệ đạt chuẩn 3NF:

Bảng dữ liệu Khóa chính (PK) Khóa ngoại (FK) Các thuộc tính khác
DanhMuc MaDanhMuc Không TenDanhMuc
TheLoaiSach MaTheLoai MaDanhMuc TenTLSanPham
Sach MaSach MaTheLoai TenSach, NhaXuatBan, SoTrang, TrongLuong, GiaBan, KichThuoc, SoLuongTon
GioHang MaGioHang Không GhiChu
DonHang MaDonHang MaKhachHang TrangThai, SoLuong
Khach MaKhach Không Email, Pass, HoTen, SDT, DiaChi
KhuyenMai MaKM Không TenKM, ThoiGian, MoTa

Thiết kế thành phần bằng mã giả (Pseudocode)

Báo cáo mô tả cấu trúc hướng đối tượng của các thành phần phần mềm chính thông qua mã giả:

# Thiết kế thành phần Người dùng và Đăng nhập/Đăng ký
class Nguoi_dung:
    def __init__(self, ten_dang_nhap, mat_khau):
        self.ten_dang_nhap = ten_dang_nhap
        self.mat_khau = mat_khau
        self.dang_nhap = False

    def dang_ky(self):
        ten_dang_nhap = input("Nhập tên đăng nhập: ")
        mat_khau = input("Nhập mật khẩu: ")
        self.ten_dang_nhap = ten_dang_nhap
        self.mat_khau = mat_khau
        print("Đăng ký thành công!")

    def dang_nhap_he_thong(self):
        ten = input("Nhập tên đăng nhập: ")
        mk = input("Nhập mật khẩu: ")
        if ten == self.ten_dang_nhap and mk == self.mat_khau:
            self.dang_nhap = True
            print("Đăng nhập thành công!")
        else:
            print("Đăng nhập thất bại!")

# Thiết kế thành phần Đơn hàng và Thanh toán
class Don_hang:
    def __init__(self):
        self.san_pham = []
        self.tong_tien = 0

    def addSanPham(self, san_pham, gia):
        self.san_pham.append(san_pham)
        self.tong_tien += gia

    def getTongTien(self):
        return self.tong_tien

Thiết kế giao diện người dùng

Hệ thống đặc tả luồng bố cục và màn hình giao diện cho 4 chức năng chính:

  1. Giao diện Đăng ký: Biểu mẫu gồm các trường họ tên, email, mật khẩu kèm nút xác nhận đăng ký và nút quay lại.
  2. Giao diện Đăng nhập: Ô nhập email, mật khẩu, nút kích hoạt xác thực và liên kết chức năng "Quên mật khẩu".
  3. Giao diện Thanh toán: Khu vực hiển thị thông tin sản phẩm đã chọn (tên, số lượng, đơn giá) và biểu mẫu nhập thông tin giao nhận, lựa chọn hình thức thanh toán.
  4. Giao diện Tìm kiếm: Thanh tìm kiếm từ khóa tích hợp trên thanh điều hướng, khu vực hiển thị lưới sản phẩm kết quả kèm thông báo khi không tìm thấy dữ liệu.

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

Báo cáo bài tập lớn đã hoàn thành các kết quả chính sau:

  • Xây dựng hoàn chỉnh hồ sơ phân tích và đặc tả yêu cầu phần mềm cho website bán sách điện tử Nhà sách Cá Chép, áp dụng nghiêm ngặt các bước của mô hình Thác nước.
  • Mô hình hóa chi tiết 4 quy trình nghiệp vụ cốt lõi (Đăng ký, Đăng nhập, Tìm kiếm sách, Thanh toán) với hệ thống biểu đồ UML đa tầng (Use Case, Activity, Sequence, VOPC, Class Diagram) và bảng đặc tả luồng nghiệp vụ.
  • Thiết kế kiến trúc phần mềm phân tầng theo mẫu MVC và hoàn thành thiết kế cơ sở dữ liệu quan hệ đạt chuẩn 3NF gồm 7 bảng thực thể liên kết mức vật lý.
  • Thiết kế cấu trúc các lớp đối tượng logic thông qua mã giả và xây dựng bản vẽ mẫu giao diện người dùng cho các tính năng trọng yếu.
  • Đóng góp vào việc hình thành tài liệu mẫu về phân tích thiết kế hệ thống theo mô hình Waterfall phục vụ học tập và nghiên cứu môn Nhập môn Công nghệ phần mềm.

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

Hạn chế

  • Nội dung nghiên cứu tập trung chủ yếu vào hai pha đầu của vòng đời phát triển: Phân tích yêu cầu và Thiết kế phần mềm; phần triển khai lập trình dừng lại ở mức mã giả mô tả lớp đối tượng chứ chưa hoàn thiện toàn bộ mã nguồn website.
  • Chưa triển khai đầy đủ các ca kiểm thử tích hợp và kiểm thử hệ thống tự động (Automated Testing) trên môi trường thực tế.
  • Việc áp dụng mô hình Thác nước thuần túy khiến tài liệu có độ cứng nhất định, khó linh hoạt khi có sự biến động phức tạp về yêu cầu nghiệp vụ trong giai đoạn vận hành thực tế.

Hướng nghiên cứu tiếp

  • Tiến hành cài đặt hoàn chỉnh mã nguồn hệ thống bằng ngôn ngữ PHP, xây dựng cơ sở dữ liệu trên MySQL theo đúng lược đồ thiết kế 3NF.
  • Tích hợp cổng thanh toán điện tử thực tế và hoàn thiện mô-đun quản trị (Admin Dashboard) cho nhân viên nhà sách.
  • Áp dụng các công cụ kiểm thử như Selenium để xây dựng kịch bản kiểm thử chức năng tự động trước khi triển khai hệ thống lên môi trường internet.

Giá trị tham khảo

Báo cáo bài tập lớn là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Nắm bắt phương pháp viết tài liệu đặc tả yêu cầu (SRS) và tài liệu thiết kế phần mềm (SDD) chuẩn mực trong các học phần công nghệ phần mềm, phân tích thiết kế hệ thống.
  • Người nghiên cứu về mô hình SDLC truyền thống: Tham khảo cách thức phân rã ca sử dụng, vẽ biểu đồ tuần tự, thiết kế VOPC và chuẩn hóa cơ sở dữ liệu quan hệ 3NF cho một ứng dụng thương mại điện tử cụ thể.

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

1. Báo cáo này áp dụng mô hình quy trình nào và cho bài toán cụ thể nào?
Báo cáo nghiên cứu và áp dụng mô hình Thác nước (Waterfall Model) - mô hình phát triển phần mềm tuần tự tuyến tính - vào bài toán phân tích và thiết kế website bán sách điện tử cho Nhà sách Cá Chép.

2. Hệ thống gồm những tác nhân nào và tập trung đặc tả những ca sử dụng nào?
Hệ thống gồm hai tác nhân chính là Khách hàng và Quản trị viên. Báo cáo tập trung đặc tả chi tiết 4 Use Case cốt lõi: Đăng ký tài khoản, Đăng nhập, Tìm kiếm sách và Thanh toán đơn hàng.

3. Cơ sở dữ liệu của hệ thống được chuẩn hóa ở mức nào và gồm các bảng nào?
Cơ sở dữ liệu được chuẩn hóa đạt dạng chuẩn 3 (3NF), bao gồm 7 bảng thực thể: DanhMuc, TheLoaiSach, Sach, GioHang, DonHang, Khach và KhuyenMai.

4. Mô hình kiến trúc phần mềm nào được lựa chọn để thiết kế hệ thống?
Hệ thống lựa chọn mô hình kiến trúc MVC (Model-View-Controller) kết hợp các nguyên lý thiết kế hướng đối tượng (OOAD) và bộ nguyên tắc SOLID để tổ chức các thành phần xử lý dữ liệu, giao diện và điều phối nghiệp vụ.

5. Điểm mạnh và điểm yếu lớn nhất của mô hình Thác nước được nêu trong báo cáo là gì?
Điểm mạnh là quy trình rõ ràng, dễ quản lý mốc tiến độ và tài liệu hóa chi tiết; điểm yếu là tính cứng nhắc, không tạo ra phần mềm hoạt động cho đến cuối vòng đời và khó sửa đổi khi có yêu cầu thay đổi phát sinh sau giai đoạn phân tích.

Kết luận

Báo cáo bài tập lớn môn Nhập môn Công nghệ phần mềm của nhóm sinh viên Trường Đại học Công nghiệp Hà Nội đã hệ thống hóa toàn diện cơ sở lý luận của mô hình Thác nước và vận dụng hiệu quả vào bài toán xây dựng website Nhà sách Cá Chép. Đề tài cung cấp đầy đủ các hồ sơ đặc tả yêu cầu nghiệp vụ, hệ thống biểu đồ UML chuẩn hóa, kiến trúc phân tầng MVC và cơ sở dữ liệu đạt chuẩn 3NF. Đây là tài liệu mang tính chuẩn mực về mặt phương pháp luận phân tích thiết kế hướng đối tượng cho sinh viên ngành kỹ thuật phần mềm.