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

Khóa luận tốt nghiệp với đề tài "Xây dựng Website bán hoa" được thực hiện bởi nhóm sinh viên Cao Thị Minh Châu (MSSV: 20110188), Nguyễn Kim Hạnh (MSSV: 20110468) và Nguyễn Thị Thuỳ Trang (MSSV: 20110580), dưới sự hướng dẫn của ThS. Hoàng Công Trình và phản biện của TS. Huỳnh Xuân Phụng tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa 2020 – 2024, mã tài liệu SKL013892). Đề tài được triển khai trong mốc thời gian từ ngày 04/03/2024 đến ngày 05/07/2024.

Bối cảnh thực tiễn được tác giả xác định xuất phát từ sự bùng nổ của công nghệ thông tin và xu hướng toàn cầu hóa kinh tế, nơi thương mại điện tử trở thành một phương thức giao dịch thiết yếu nhằm xóa bỏ rào cản địa lý và tiết kiệm chi phí vận hành cho doanh nghiệp. Khảo sát thực tế tại Việt Nam của nhóm tác giả ghi nhận rằng dù hình thức kinh doanh trực tuyến đang phổ biến và lượng người dùng điện thoại thông minh gia tăng mạnh, nhiều nền tảng bán hoa trực tuyến hiện nay vẫn chưa hoàn chỉnh hoặc có quy trình đặt hàng phức tạp, gây trở ngại cho người tiêu dùng. Xuất phát từ thực trạng đó, đề tài đặt ra mục tiêu xây dựng một website kinh doanh hoa tươi hoàn chỉnh nhằm tối ưu hóa trải nghiệm mua sắm và cung cấp công cụ quản trị bán hàng đồng bộ.

Theo đề cương được phê duyệt, nhiệm vụ nghiên cứu của luận văn bao gồm:

  1. Nhiệm vụ lý thuyết: Tìm hiểu cơ sở lý thuyết về các công nghệ phát triển web hiện đại gồm ReactJS, Spring Boot Framework, giao thức kiến trúc RESTful API, cơ chế bảo mật xác thực JSON Web Token (JWT), hệ quản trị cơ sở dữ liệu MongoDB và nền tảng hỗ trợ hội thoại Dialogflow.
  2. Nhiệm vụ thực hành: Sử dụng Spring Boot để xây dựng Backend và hệ thống RESTful API cho các phân hệ; thiết kế cơ sở dữ liệu và lưu trữ dữ liệu người dùng trên MongoDB; áp dụng JSON Web Token để xác thực và ủy quyền truy cập API; sử dụng thư viện ReactJS để xây dựng giao diện tương tác Frontend; tiến hành tích hợp hệ thống, kiểm thử và khắc phục lỗi phần mềm.

Đối tượng và phạm vi nghiên cứu của đề tài được giới hạn cụ thể như sau:

  • Đối tượng tác nhân hệ thống: Bao gồm 02 nhóm người dùng chính là Người dùng cuối (khách hàng có nhu cầu đăng ký tài khoản, tìm kiếm sản phẩm, đặt hàng, quản lý giỏ hàng và theo dõi đơn hàng) và Nhà quản trị hệ thống (Admin có quyền quản lý sản phẩm, danh mục, mã giảm giá, tài khoản và đơn hàng).
  • Phạm vi công nghệ: Ứng dụng Spring Boot, RESTful API, ReactJS, MongoDB và Spring Security.
  • Phạm vi nghiệp vụ: Chu trình quản lý cửa hàng và giao dịch mua bán hoa trực tuyến phục vụ người tiêu dùng và đơn vị kinh doanh.

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

Khóa luận thiết lập nền tảng kỹ thuật dựa trên các công nghệ phân tầng hiện đại trong phát triển phần mềm:

  • Phía máy khách (Frontend): Sử dụng thư viện ReactJS với kiến trúc dựa trên thành phần (Component-Based Architecture), cơ chế Virtual DOM giúp tối ưu hóa hiệu năng kết xuất giao diện, luồng dữ liệu một chiều (Unidirectional Data Flow) và cú pháp JSX. Bên cạnh đó, hệ thống tích hợp các công cụ hỗ trợ gồm Redux để quản trị trạng thái tập trung, React Router để điều hướng trang, Webpack và Babel để biên dịch mã nguồn, Axios xử lý giao tiếp HTTP dựa trên Promises, React Swiper hỗ trợ hiệu ứng vuốt trượt và Bootstrap định hình giao diện thích ứng (Responsive). Ngoài ra, tài liệu đề cập đến nền tảng Dialogflow của Google phục vụ định hướng xây dựng kịch bản giao tiếp tự động thông qua các khái niệm Agent, Intent và Entity.
  • Phía máy chủ (Backend): Sử dụng Spring Boot thuộc tầng IO Execution của Spring IO Platform. Công nghệ này loại bỏ cấu hình XML phức tạp, hoạt động theo nguyên tắc cấu hình mặc định (convention-over-configuration) và tích hợp sẵn Web Server nhúng (như Apache Tomcat hoặc Jetty). Cơ chế bảo mật và phân quyền được thực thi qua Spring Security kết hợp JSON Web Token (JWT).
  • Cơ sở dữ liệu: Hệ quản trị NoSQL MongoDB hướng tài liệu (BSON document), cung cấp các tính năng truy vấn linh hoạt (ad hoc query), đánh chỉ mục (indexing), nhân bản dự phòng (replication), tổng hợp dữ liệu (aggregation) và cơ chế bộ đệm trên bộ nhớ RAM giúp tăng tốc độ đọc/ghi dữ liệu.
  • Chuẩn giao tiếp: Kiến trúc RESTful API chuẩn hóa các phương thức HTTP (GET, POST, PUT, DELETE) tương ứng với các tác vụ CRUD quản lý tài nguyên.

Về phương pháp nghiên cứu, nhóm tác giả kết hợp các phương pháp kỹ thuật phần mềm:

  • Phương pháp khảo sát và đánh giá thực tế: Phân tích ưu và nhược điểm của 4 website bán hoa tươi đang hoạt động trên thị trường Việt Nam (Potico.vn, Lavieestbelle.vn, Flowershop.vn và Lamour.vn).
  • Phương pháp phân tích và thiết kế hướng đối tượng: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng biểu đồ ca sử dụng (Use Case Diagram), đặc tả chi tiết 28 kịch bản use case và xây dựng 35 lược đồ tuần tự (Sequence Diagram) mô tả luồng thông điệp giữa các lớp đối tượng.
  • Phương pháp thiết kế cơ sở dữ liệu phi quan hệ: Mô hình hóa các thực thể dữ liệu thành các bảng/collection trong MongoDB.
  • Phương pháp kiểm thử phần mềm: Thiết kế các ca kiểm thử chức năng (test case) hộp đen nhằm xác minh tính chính xác của các phân hệ tài khoản, đơn hàng, giỏ hàng và sản phẩm.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tách độc lập (Decoupled Architecture) giữa Frontend (Single Page Application bằng ReactJS) và Backend (Dịch vụ RESTful API bằng Spring Boot), kết nối tầng dữ liệu với cơ sở dữ liệu MongoDB.

Mô hình dữ liệu của hệ thống được tổ chức thành 9 collection (bảng dữ liệu) chính trong MongoDB:

  1. Product: Lưu trữ thông tin chi tiết về hoa, hình ảnh, đơn giá, số lượng tồn kho và thuộc tính liên quan.
  2. Account: Quản lý thông tin tài khoản, mật khẩu mã hóa, thông tin liên hệ và vai trò truy cập (khách hàng hoặc quản trị viên).
  3. Blog: Quản lý các bài viết tin tức, kiến thức về hoa và thông điệp truyền thông.
  4. Order: Lưu trữ đơn đặt hàng, trạng thái xử lý, danh sách sản phẩm mua và thông tin người nhận.
  5. Voucher: Lưu trữ mã giảm giá, tỷ lệ chiết khấu, điều kiện áp dụng và thời hạn sử dụng.
  6. Tags: Lưu trữ các nhãn phân loại nhanh phục vụ chức năng tìm kiếm và lọc sản phẩm.
  7. Collections: Quản lý các bộ sưu tập sản phẩm hoa theo chủ đề hoặc mùa vụ.
  8. Review: Lưu trữ đánh giá, số sao và nhận xét phản hồi từ khách hàng đối với từng sản phẩm.
  9. Payments: Ghi nhận dữ liệu giao dịch, phương thức thanh toán và trạng thái đối soát của đơn hàng.

Về môi trường triển khai và vận hành:

  • Tầng Backend: Khởi chạy và gỡ lỗi bằng môi trường phát triển tích hợp IntelliJ IDEA trên nền tảng Java, sử dụng công cụ quản lý dự án Maven và khởi chạy máy chủ nhúng Tomcat.
  • Tầng Frontend: Quản lý và lập trình trên phần mềm Visual Studio Code, sử dụng hệ sinh thái Node.js/NPM cùng gói react-scripts để kích hoạt máy chủ phát triển nội bộ thông qua giao diện dòng lệnh (Terminal).

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

Chương 1: Cơ sở lý thuyết

Chương 1 hệ thống hóa toàn bộ lý thuyết công nghệ được lựa chọn trong dự án. Ở tầng giao diện, tác giả phân tích các đặc trưng cốt lõi của ReactJS như Virtual DOM giúp giảm tải việc tái tạo DOM thực, kiến trúc Component hỗ trợ tái sử dụng mã nguồn và khả năng kiểm thử dễ dàng qua các thư viện như Jest hay Enzyme. Chương này cũng giới thiệu nền tảng Dialogflow trong việc xử lý ngôn ngữ tự nhiên thông qua Agent đóng vai trò trung tâm điều phối, Intent thể hiện mục đích của người dùng và Entity trích xuất dữ liệu tham số. Ở tầng xử lý logic, báo cáo làm rõ lợi thế của Spring Boot trong việc cắt giảm boilerplate code, cung cấp công cụ dòng lệnh Spring CLI và dễ dàng liên kết với các module Spring Data, Spring Security. Đối với tầng lưu trữ, chương trình bày cấu trúc BSON của MongoDB, giải thích cơ chế Aggregation tương đương mệnh đề GROUP BY trong SQL và khả năng mở rộng thông qua phân mảnh dữ liệu (sharding). Cuối cùng, nguyên lý hoạt động của RESTful API và 4 phương thức HTTP tương ứng với các thao tác Create, Read, Update, Delete được chuẩn hóa thành mô hình giao tiếp xuyên suốt dự án.

Chương 2: Khảo sát hiện trạng và mô hình hóa yêu cầu

Chương 2 trình bày kết quả khảo sát thực tế 4 hệ thống thương mại điện tử về hoa tươi tại Việt Nam nhằm làm căn cứ xây dựng yêu cầu phần mềm:

Tên website khảo sát Ưu điểm ghi nhận Nhược điểm ghi nhận
Potico.vn Đáp ứng đầy đủ chức năng cơ bản; màu sắc hài hòa; thông tin rõ ràng; phân loại hoa dễ tìm kiếm; có đề xuất sản phẩm liên quan; cho phép chọn ngày giao hàng. Trang chủ chứa quá nhiều thông tin, dễ gây rối mắt cho người dùng.
La vie est belle Đáp ứng đầy đủ yêu cầu; màu sắc tương phản mạnh tạo ấn tượng thị giác; phân loại sản phẩm rõ ràng; có hiệu ứng sinh động. Không ghi nhận nhược điểm nổi cộm trong bảng khảo sát của tác giả.
FlowerShop.vn Đáp ứng đầy đủ các tính năng; màu sắc dễ chịu; phân loại sản phẩm rõ ràng; hiệu ứng hiển thị sinh động. Thiết kế giao diện chưa bắt mắt; các thành phần bố trí quá sát nhau tạo cảm giác chật chội, ngột ngạt.
L’amour.vn Thiết kế và màu sắc bắt mắt; thông tin trên trang chủ vừa phải, không quá dày đặc; phân loại rõ ràng. Bố cục thành phần hiển thị quá sát nhau, tạo cảm giác dính chùm tương tự như FlowerShop.vn.

Từ kết quả khảo sát, nhóm tác giả xác định 10 nhóm yêu cầu chức năng (Danh mục sản phẩm, Tìm kiếm và lọc, Chi tiết sản phẩm, Giỏ hàng và thanh toán, Quản lý tài khoản, Quản lý đơn hàng, Hệ thống đánh giá/nhận xét, Hỗ trợ khách hàng, Thông tin vận chuyển, Bảo mật) cùng 12 yêu cầu phi chức năng (Hiệu suất tải trang, Giao diện đáp ứng di động, Bảo mật SSL, Khả năng mở rộng, Tính sẵn sàng...). Hệ thống được mô hình hóa qua biểu đồ Use Case phân định rõ vai trò của 2 tác nhân (Người dùng cuối và Quản trị viên), đi kèm các bảng đặc tả use case chi tiết từ Bảng 5 đến Bảng 32, quy định tường minh luồng sự kiện chính, luồng thay thế và điều kiện kích hoạt.

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

Chương 3 tập trung hiện thực hóa các yêu cầu đã phân tích thành thiết kế kỹ thuật cụ thể:

  • Lược đồ tuần tự (Sequence Diagram): Xây dựng chi tiết chuỗi tương tác thông điệp từ giao diện người dùng, bộ điều khiển (Controller), dịch vụ xử lý (Service) đến cơ sở dữ liệu. Bao gồm các biểu đồ phía khách hàng (Đăng ký, Đăng nhập, Quên mật khẩu, Đặt hàng và thanh toán, Hủy đơn hàng, Xem và tra cứu thông tin sản phẩm/blog) và các biểu đồ phía nhà quản trị (Đăng nhập quản trị, Cập nhật trạng thái đơn hàng, Thêm/Sửa/Xóa sản phẩm, Quản lý tài khoản, Quản lý bài viết blog, Quản lý thẻ tag, Quản lý loại sản phẩm và Quản lý mã giảm giá voucher).
  • Thiết kế cơ sở dữ liệu: Trình bày chi tiết cấu trúc thuộc tính của 9 collection trong MongoDB (Bảng 33 đến Bảng 41) như Product, Account, Blog, Order, Voucher, Tags, Collections, Review và Payments.
  • Thiết kế giao diện: Xây dựng hệ thống giao diện trực quan gồm 21 màn hình phía người dùng (Trang chủ, Đăng nhập, Đăng ký, Đổi mật khẩu, Giỏ hàng, Đặt hàng, Chi tiết đơn hàng, Theo dõi đơn hàng, Danh sách yêu thích, So sánh sản phẩm, Tra cứu đơn hàng...) và 14 màn hình quản trị (Dashboard thống kê doanh số/sản phẩm/người dùng, Quản lý sản phẩm, Thêm sản phẩm, Quản lý đơn hàng, Quản lý người dùng, Quản lý voucher, Quản lý tag...).

Chương 4: Cài đặt và kiểm thử

Chương 4 cung cấp quy trình hướng dẫn cài đặt mã nguồn hệ thống. Nhóm tác giả hướng dẫn việc nạp dự án Backend vào phần mềm IntelliJ IDEA, cấu hình môi trường Java và thực thi lệnh chạy ứng dụng; đồng thời hướng dẫn mở dự án Frontend trong Visual Studio Code, sử dụng Terminal để chạy lệnh khởi động ứng dụng web.

Về công tác kiểm thử phần mềm, báo cáo tiến hành kiểm thử chức năng theo phương pháp hộp đen, phân bổ thành 3 nhóm bảng kiểm thử chính:

  • Bảng 42: Tập hợp các ca kiểm thử cho chức năng Quản lý tài khoản (Đăng ký, Đăng nhập, Quên mật khẩu, Thay đổi thông tin cá nhân).
  • Bảng 43: Tập hợp các ca kiểm thử cho chức năng Quản lý đơn hàng và giỏ hàng (Thêm sản phẩm vào giỏ, Xóa sản phẩm, Áp dụng voucher, Tiến hành đặt hàng, Hủy đơn hàng, Tra cứu tình trạng giao vận).
  • Bảng 44: Tập hợp các ca kiểm thử cho chức năng Quản lý sản phẩm (Xem danh mục, Lọc sản phẩm theo giá và loại hoa, Thêm mới sản phẩm, Cập nhật thông tin hoa, Xóa sản phẩm khỏi hệ thống).

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

Đồ án tốt nghiệp đạt được các kết quả cụ thể đã được kiểm chứng qua sản phẩm phần mềm thực tế:

  • Xây dựng thành công website bán hoa hoạt động trên nền tảng web, bao gồm đầy đủ hai phân hệ độc lập: Phân hệ khách hàng với trải nghiệm mua sắm trực quan, hỗ trợ so sánh sản phẩm, lập danh sách yêu thích, giỏ hàng, áp dụng mã voucher, đặt hàng và theo dõi tình trạng đơn; Phân hệ quản trị cung cấp bảng điều khiển thống kê (Dashboard), kiểm soát vòng đời đơn hàng, danh mục hoa, thẻ tag, mã giảm giá và quản lý tài khoản người dùng.
  • Ứng dụng thành công mô hình cơ sở dữ liệu NoSQL (MongoDB) với 9 collection dữ liệu được cấu trúc chặt chẽ, tối ưu hóa tốc độ truy xuất thông qua RESTful API viết bằng Spring Boot.
  • Thiết lập giải pháp xác thực và ủy quyền bằng JSON Web Token (JWT) kết hợp Spring Security, đảm bảo an toàn cho các điểm cuối API và phân định ranh giới chức năng giữa khách hàng và quản trị viên.
  • Đóng góp thực tiễn của đề tài là cung cấp một thiết kế phần mềm hoàn chỉnh, giải quyết các bất cập về giao diện rối rắm và quy trình mua sắm rườm rà từng được ghi nhận tại các website kinh doanh hoa tươi khảo sát trên thị trường.

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

Dựa trên phạm vi và nội dung được nhóm tác giả ghi nhận trong văn bản khóa luận:

  • Hạn chế: Khóa luận chưa triển khai kết nối trực tiếp với các cổng thanh toán trực tuyến của bên thứ ba (như VNPAY, MoMo hoặc thẻ quốc tế) ở mức độ thanh toán thực mà chỉ dừng ở việc ghi nhận phương thức và xử lý giao dịch nội bộ. Nội dung về Dialogflow mới chỉ dừng ở mức độ tìm hiểu công nghệ và nghiên cứu kịch bản, chưa thể hiện sâu kết quả tích hợp chatbot vận hành trực tiếp trên giao diện sản phẩm. Kiểm thử phần mềm mới chỉ thực hiện kiểm thử chức năng thủ công thông qua các ca kiểm thử (test case), chưa tiến hành kiểm thử tải (load testing) hay đo lường hiệu năng khi có lượng truy cập đồng thời lớn.
  • Hướng nghiên cứu tiếp: Tiếp tục hoàn thiện và tích hợp các cổng thanh toán điện tử trực tuyến an toàn; triển khai hoàn chỉnh chatbot thông minh ứng dụng xử lý ngôn ngữ tự nhiên từ Dialogflow để tự động tư vấn chọn hoa cho khách hàng; nâng cấp thuật toán gợi ý sản phẩm dựa trên hành vi duyệt web của người dùng và tối ưu hóa ứng dụng trên nền tảng thiết bị di động.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về phát triển ứng dụng thương mại điện tử.

Những nội dung có giá trị tham khảo nổi bật bao gồm:

  • Mẫu khảo sát hiện trạng đối thủ thực tế có cấu trúc rõ ràng, hỗ trợ việc thiết lập bài toán nghiệp vụ.
  • Quy trình mô hình hóa yêu cầu chi tiết với hệ thống biểu đồ Use Case và 28 kịch bản use case chuẩn quy cách (đầy đủ tiền điều kiện, hậu điều kiện, luồng cơ bản và luồng ngoại lệ).
  • Tập hợp 35 lược đồ tuần tự (Sequence Diagram) chi tiết, phác họa rõ nét cách thức phân chia trách nhiệm giữa Frontend (ReactJS), API Gateway/Controller, Service xử lý nghiệp vụ và Database (MongoDB).
  • Mô hình thiết kế 9 collection dữ liệu NoSQL ứng dụng thực tế cho bài toán bán lẻ trực tuyến.

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

1. Nhóm tác giả đã khảo sát những website bán hoa nào và nhược điểm chung của các trang này là gì?
Nhóm tác giả đã tiến hành khảo sát 4 website bán hoa gồm: Potico.vn, Lavieestbelle.vn, Flowershop.vn và Lamour.vn. Nhược điểm chính được ghi nhận là: Potico.vn có trang chủ chứa quá nhiều thông tin gây rối mắt; trong khi FlowerShop.vn và L’amour.vn có giao diện chưa thực sự bắt mắt, các thành phần bố trí quá sát nhau tạo cảm giác dính chùm, ngột ngạt cho người mua hàng.

2. Công nghệ nào được sử dụng để xây dựng Backend và đảm bảo an toàn cho các API của hệ thống?
Hệ thống sử dụng Spring Boot Framework để xây dựng toàn bộ tầng xử lý logic Backend và cung cấp các dịch vụ RESTful API. Cơ chế bảo mật và phân quyền cho các API được thực hiện thông qua việc tích hợp framework Spring Security kết hợp cơ chế cấp phát và kiểm tra token của JSON Web Token (JWT).

3. Cơ sở dữ liệu MongoDB của dự án bao gồm những bảng/collection nào?
Cơ sở dữ liệu của hệ thống được tổ chức thành 9 bảng/collection bao gồm: Product (quản lý sản phẩm hoa), Account (tài khoản người dùng), Blog (bài viết tin tức), Order (đơn hàng), Voucher (mã giảm giá), Tags (thẻ phân loại), Collections (bộ sưu tập sản phẩm), Review (đánh giá và nhận xét) và Payments (thông tin thanh toán).

4. Phân hệ người dùng cuối (khách hàng) cung cấp những chức năng nổi bật nào?
Bên cạnh các tính năng cơ bản như đăng ký, đăng nhập và tìm kiếm hoa theo danh mục/thẻ tag, phân hệ người dùng còn cho phép: so sánh các sản phẩm hoa, lưu danh sách sản phẩm yêu thích, áp dụng mã giảm giá voucher vào giỏ hàng, đặt hàng và thanh toán, hủy đơn hàng khi cần thiết, theo dõi trạng thái vận chuyển của đơn hàng và viết đánh giá phản hồi về sản phẩm.

5. Công tác kiểm thử phần mềm trong đồ án được nhóm sinh viên tiến hành trên những phân hệ nào?
Công tác kiểm thử phần mềm được nhóm sinh viên thực hiện thông qua phương pháp kiểm thử hộp đen với các ca kiểm thử (test case) cụ thể, tập trung vào 3 nhóm chức năng chính được trình bày tại Chương 4: Bảng 42 (Kiểm thử chức năng quản lý tài khoản), Bảng 43 (Kiểm thử chức năng quản lý đơn hàng, giỏ hàng) và Bảng 44 (Kiểm thử chức năng quản lý sản phẩm).

Kết luận

Đồ án tốt nghiệp "Xây dựng Website bán hoa" của nhóm sinh viên Cao Thị Minh Châu, Nguyễn Kim Hạnh và Nguyễn Thị Thuỳ Trang tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã hoàn thành mục tiêu xây dựng một nền tảng thương mại điện tử chuyên ngành hoa tươi với đầy đủ phân hệ người dùng và quản trị. Đề tài vận dụng bài bản kiến trúc phân tách hiện đại kết hợp ReactJS ở tầng giao diện và Spring Boot cùng MongoDB ở tầng dịch vụ dữ liệu, bảo đảm tính xác thực thông qua JWT. Toàn bộ quy trình từ khảo sát hiện trạng, mô hình hóa kịch bản use case, thiết kế lược đồ tuần tự cho đến lập ca kiểm thử chức năng đều được thực hiện đầy đủ, tạo nên một tài liệu kỹ thuật có giá trị tham khảo thiết thực cho các nghiên cứu phát triển ứng dụng web cùng chuyên ngành.