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

Trong xu thế số hóa và sự phổ biến của các thiết bị điện tử thông minh, việc tiếp cận và ứng dụng hệ thống thông tin quản lý đã trở thành nhu cầu cấp thiết đối với các tổ chức và doanh nghiệp. Đối với các đơn vị kinh doanh bán lẻ, đặc biệt là các doanh nghiệp và cửa hàng vừa và nhỏ, phương thức quản lý bán hàng thủ công truyền thống bộc lộ nhiều điểm hạn chế, gây khó khăn và phức tạp trong việc kiểm soát hàng hóa, theo dõi doanh thu và chăm sóc khách hàng. Đề tài "Website Bán Hàng Trực Tuyến" được nhóm nghiên cứu thuộc Khoa Công nghệ Thông tin, Trường Đại học Kiến trúc Hà Nội thực hiện trong khuôn khổ môn học Phát triển phần mềm hướng dịch vụ (tháng 1 năm 2024), nhằm giải quyết bài toán giảm tải áp lực quản lý thủ công và nâng cao năng lực cạnh tranh cho doanh nghiệp.

Mục tiêu nghiên cứu của đề tài được tác giả xác định thông qua các nhiệm vụ cụ thể sau:

  1. Tăng hiệu quả vận hành: Xây dựng hệ thống cửa hàng thông minh hỗ trợ quản lý hàng hóa, kho bãi, thu chi và tổ chức dữ liệu khoa học nhằm tiết kiệm thời gian, công sức quản lý.
  2. Tối ưu hóa trải nghiệm người dùng: Thiết kế giao diện thân thiện, cải thiện tốc độ tải trang và phân loại sản phẩm hợp lý phục vụ khách mua hàng.
  3. Phân tích thị trường và cạnh tranh: Xác định đối thủ cạnh tranh và cơ hội phát triển cho mô hình kinh doanh thời trang/bán lẻ.
  4. Xác định yếu tố quyết định mua sắm: Phân tích hành vi khách hàng trên hệ thống để tối ưu hóa danh mục sản phẩm và dịch vụ chăm sóc khách hàng.
  5. Tối ưu hóa hoạt động kinh doanh: Hoàn thiện quy trình từ quản lý tồn kho, giao nhận đến xử lý dữ liệu khách hàng.
  6. Phát triển chiến lược tiếp thị: Tạo tiền đề triển khai các kênh quảng bá trực tuyến, tiếp thị số và tiếp thị qua thư điện tử.
  7. Điều tra về xu hướng thời trang: Hỗ trợ theo dõi, dự báo thị hiếu tiêu dùng để cung cấp sản phẩm phù hợp.

Đối tượng nghiên cứu là hệ thống phần mềm web bán hàng trực tuyến phân tách theo hai nhóm tác vụ: quản trị hệ thống (Admin) và khách hàng mua sắm (User). Phạm vi nghiên cứu tập trung vào việc phân tích, thiết kế, cài đặt và kiểm thử ứng dụng web bán hàng ứng dụng kiến trúc phân tách dịch vụ cho các cửa hàng, doanh nghiệp vừa và nhỏ.

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

Đề tài vận dụng các lý thuyết nền tảng trong công nghệ phần mềm hiện đại và kiến trúc phát triển hướng dịch vụ:

  • Mô hình lập trình Web Client - Server: Tách biệt tầng giao diện người dùng và tầng xử lý nghiệp vụ máy chủ thông qua giao diện lập trình ứng dụng RESTful API.
  • Thư viện giao diện ReactJS: Ứng dụng xây dựng giao diện Single Page Application (SPA), sử dụng cơ chế DOM ảo (Virtual DOM) để tối ưu hóa việc kết xuất dữ liệu, định dạng cú pháp JSX và quản lý trạng thái component bằng các React Hook (useState, useEffect).
  • Nền tảng máy chủ NodeJS và ExpressJS Framework: Nền tảng thực thi JavaScript phía máy chủ dựa trên V8 Engine, vận hành theo mô hình đơn luồng (Single-Threaded) kết hợp cơ chế xử lý vào/ra không chặn (Non-blocking I/O) theo sự kiện; khung làm việc ExpressJS hỗ trợ định tuyến (routing), middleware và xử lý yêu cầu HTTP.
  • Cơ sở dữ liệu NoSQL (MongoDB): Mô hình cơ sở dữ liệu hướng tài liệu (Document-oriented) sử dụng định dạng BSON/JSON, hỗ trợ cơ chế đánh chỉ mục (indexing), nhân bản dữ liệu (replication), tập hợp xử lý phân tán (aggregation) và phân mảnh ngang (sharding).

Phương pháp nghiên cứu và phát triển hệ thống được triển khai qua các bước:

  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng mô hình biểu đồ ca sử dụng (Use Case Diagram) để đặc tả tương tác của các tác nhân Admin và User; phân rã 14 thành phần chức năng của website thương mại điện tử.
  • Phương pháp thiết kế mô hình dữ liệu: Xây dựng lược đồ cơ sở dữ liệu dạng quan hệ - thực thể gồm các bảng lưu trữ thông tin sản phẩm, danh mục, tài khoản, đơn hàng và phản hồi.
  • Phương pháp kiểm thử phần mềm: Kết hợp kiểm thử đơn vị (Unit Testing) độc lập của từng lập trình viên và kiểm thử tích hợp toàn bộ hệ thống (System Testing). Đánh giá thông qua các tiêu chí: tính đúng đắn, tính tiện dụng và hiệu quả, tính ổn định.
  • Công cụ hỗ trợ phát triển và kiểm thử: Trình biên tập mã nguồn Visual Studio Code; công cụ kiểm thử API Postman (kiểm tra Headers, Body, Response Time và các phương thức GET, POST, PUT, DELETE); công cụ kiểm tra tương tác client React Developer Tools; hệ thống quản lý phiên bản Git và nền tảng GitHub.

Thiết kế và triển khai

Hệ thống được thiết kế theo cấu trúc tách biệt giữa ứng dụng giao diện (Frontend) và ứng dụng dịch vụ máy chủ (Backend), mã nguồn được quản lý trên GitHub tại repository https://github.com/dankieuks/Fruit2.

Cấu trúc thư mục và phân quyền dự án

Hệ thống quy định phân chia thư mục và quyền truy cập mã nguồn như sau:

  • Frontend (ReactJS):
    • public/: Chứa các tài nguyên tĩnh không cần biên dịch, cho phép truy cập công khai từ bên ngoài.
    • src/: Chứa toàn bộ mã nguồn ứng dụng (gồm assets/, components/, pages/, services/, utils/, App.js, index.js), không được truy cập trực tiếp từ bên ngoài.
    • package.json, .gitignore, README.md: Cấu hình gói phụ thuộc và mô tả dự án.
  • Backend (NodeJS/ExpressJS):
    • config/: Cấu hình kết nối cơ sở dữ liệu và môi trường.
    • controllers/: Chứa logic điều khiển và xử lý nghiệp vụ.
    • models/: Định nghĩa các lược đồ và mô hình dữ liệu.
    • routes/: Thiết lập các tuyến đường API cung cấp cho client.
    • services/: Chứa các dịch vụ nền và xử lý trung gian.
    • app.js: Tệp tin khởi chạy ứng dụng.
    • Phân quyền: Toàn bộ thư mục backend được giữ kín trong nội bộ máy chủ, chỉ công khai các đường dẫn API routes để giao tiếp với client.

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống được tổ chức thành các bảng thực thể với cấu trúc thuộc tính chi tiết:

Tên bảng Thuộc tính chính Kiểu dữ liệu Khóa chính (PK) Khóa ngoại (FK)
Category id, name int, varchar(500) id -
Product id, name, price, category_id, created_at, updated_at int, varchar(500), double, int, datetime, datetime id category_id
Role id, name int, varchar(50) id -
User id, fullname, username, password, email, address, status int, varchar(50), varchar(50), varchar(225), varchar(400), varchar(500), int id -
Feedback id, name, email, subject, message, created_at, status, user_id int, varchar(100), varchar(100), varchar(200), varchar(200), datetime, int, int id user_id
Order id, fullname, email, phonenumber, address, orderdate, status, total, user_id int, varchar(100), varchar(200), varchar(20), varchar(500), datetime, int, double, int id user_id
OrderDetail id, price, quanlity, total, product_id, order_id, status int, double, int, double, int, int, int id product_id, order_id

Quy trình triển khai và quản lý mã nguồn

Nhóm triển khai làm việc theo quy trình Feature Branch Workflow trên Git:

  1. Sao chép kho mã nguồn: git clone https://github.com/dankieuks/Fruit2
  2. Tạo nhánh tính năng riêng biệt: git checkout -b feature/new-feature
  3. Thực hiện lập trình và ghi nhận thay đổi: git add .git commit -m "Implement new feature"
  4. Đẩy mã nguồn lên máy chủ và tạo yêu cầu tích hợp: git push origin feature/new-feature
  5. Kiểm tra, đánh giá mã nguồn (Review) và tích hợp vào nhánh chính (Merge Pull Request). Hệ thống CI/CD được thiết lập để tự động kiểm tra và build mã nguồn khi có thay đổi.

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

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

Chương 1 trình bày lý do lựa chọn đề tài, nêu bật vai trò của ứng dụng công nghệ thông tin trong việc giảm thiểu quản lý thủ công cho các cửa hàng. Tác giả làm rõ 7 mục đích nghiên cứu chiến lược, đồng thời phân định quyền hạn của hai nhóm người dùng chính:

  • Quản trị viên (Admin): Quản lý toàn bộ hệ thống, cập nhật danh mục, thêm, sửa, xóa sản phẩm và giám sát người dùng.
  • Khách hàng (User): Đăng nhập, tìm kiếm sản phẩm, thêm/sửa/xóa hàng hóa trong giỏ hàng, đặt hàng và gửi đánh giá.

Chương này cũng giới thiệu chi tiết các công nghệ nền tảng: Visual Studio Code (tính năng intellisense, git, đa nền tảng), Postman (cấu trúc gồm Setting, Collections, API Content), HTML/CSS, JavaScript (lịch sử ECMAScript, cơ chế xử lý sự kiện phía client), ReactJS (DOM ảo, JSX, Hooks), ExpressJS (cấu trúc MVC tinh gọn), NodeJS (cơ chế Non-blocking I/O luồng đơn) và hệ quản trị NoSQL MongoDB.

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG “WEB BÁN HÀNG”

Chương 2 tập trung vào phân tích sơ bộ 5 module quản lý (thông tin web, sản phẩm, đơn hàng, người dùng/phân quyền, bình luận) và 14 thành phần cốt lõi của website thương mại điện tử: Trang chính (Homepage), Danh mục sản phẩm (Product Categories), Trang sản phẩm chi tiết (Product Detail Page), Giỏ hàng (Shopping Cart), Trang thanh toán (Checkout), Hệ thống thanh toán (Payment System), Quản lý đơn hàng (Order Management), Quản lý sản phẩm (Product Management), Quản lý khách hàng (Customer Management), Tích hợp dịch vụ vận chuyển (Shipping Integration), Dịch vụ khách hàng (Customer Support), Thống kê và phân tích (Analytics), Bảo mật và tuân thủ luật pháp (Security and Compliance), và Tối ưu hóa SEO.

Phần thiết kế hệ thống cung cấp hệ thống biểu đồ Use Case mô tả chi tiết:

  • Biểu đồ Use Case tổng quan hệ thống.
  • Biểu đồ Use Case Admin: Đăng nhập hệ thống, quản lý tài khoản người truy cập, quản lý nhân viên, thực hiện các thao tác thêm, sửa, xóa sản phẩm.
  • Biểu đồ Use Case User: Đăng ký tài khoản, đăng nhập hệ thống, thực hiện đặt hàng và nhận đơn hàng.

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH

Chương 3 minh họa chi tiết kết quả xây dựng giao diện ứng dụng và thiết kế cơ sở dữ liệu:

  • Giao diện người dùng (User): Giao diện trang chủ bán hàng, giao diện thêm sản phẩm vào giỏ hàng, danh mục sản phẩm, biểu mẫu đổi mật khẩu, biểu mẫu chỉnh sửa thông tin cá nhân và trang chi tiết sản phẩm.
  • Giao diện quản trị (Admin): Trang chủ dashboard quản trị, giao diện thêm danh mục sản phẩm, giao diện thêm mới và danh sách quản lý sản phẩm, giao diện quản lý toàn bộ danh sách người dùng.
  • Mô hình dữ liệu: Đặc tả chi tiết 7 bảng dữ liệu (Category, Product, Role, User, Feedback, Order, OrderDetail) cùng các trường thuộc tính, khóa chính và quan hệ khóa ngoại giữa các bảng.

CHƯƠNG 4: CÀI ĐẶT , PHÂN QUYỀN, BỐ TRÍ CÁC THƯ MỤC DỰ ÁN

Chương 4 hướng dẫn chi tiết quy trình thiết lập môi trường vận hành:

  • Cài đặt môi trường NodeJS (khuyến nghị phiên bản v16) và trình quản lý gói npm.
  • Bố trí cấu trúc thư mục chi tiết của dự án ReactJS (tách bạch public/src/ cùng các thư mục con chức năng) và dự án NodeJS (tách bạch controllers/, models/, routes/, services/, config/).
  • Quy định phân quyền bảo mật cho từng tệp tin và thư mục trong kiến trúc Client - Server.
  • Thiết lập quy trình làm việc chuẩn trên GitHub thông qua mô hình phân nhánh và cơ chế tích hợp liên tục CI/CD.

CHƯƠNG 5 : CÀI ĐẶT KIỂM THỬ, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN

Chương 5 trình bày cách thức khởi chạy phần mềm qua câu lệnh dòng lệnh (npm install, npm start cho cả frontend và backend). Quy trình kiểm thử được tiến hành nghiêm ngặt qua hai cấp độ: kiểm thử đơn vị nội bộ và kiểm thử tích hợp toàn bộ hệ thống bằng Postman (kiểm tra các phương thức GET, POST, PUT, DELETE trên API) và React Developer Tools (kiểm tra giao diện responsive và tương tác client). Chương này tổng kết mức độ hoàn thiện của từng module chức năng và đánh giá kết quả đạt được của dự án.

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

Kết quả kiểm thử chức năng

Quá trình kiểm thử hệ thống ghi nhận kết quả hoàn thành cụ thể theo từng module như sau:

STT Chức năng kiểm thử Tiến độ hoàn thành
1 Thêm, sửa, xóa sản phẩm / người dùng 100%
2 Đăng ký, đăng nhập hệ thống 100%
3 Cập nhật thông tin người dùng 100%
4 Tìm kiếm sản phẩm 95%
5 Thống kê danh sách admin 90%
6 Quản lý đánh giá (Feedback) 90%
7 Giỏ hàng (Shopping Cart) 85%

Đóng góp chính của đề tài

  • Xây dựng thành công giải pháp phần mềm website bán hàng trực tuyến hoàn chỉnh, ứng dụng kiến trúc hướng dịch vụ với sự kết hợp giữa ReactJS ở phía máy khách và NodeJS/ExpressJS ở phía máy chủ.
  • Vận dụng hiệu quả lý thuyết cơ sở dữ liệu và quy trình phân tích thiết kế hệ thống có cấu trúc, tạo ra giao diện thân thiện với người dùng và trang quản trị trực quan cho người quản lý.
  • Thiết lập quy trình phát triển phần mềm chuẩn mực từ khâu quản lý mã nguồn phân nhánh bằng Git, kiểm thử API qua Postman đến tích hợp liên tục CI/CD.

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

  • Hạn chế: Một số chức năng chưa đạt mức hoàn thiện tuyệt đối (chức năng Giỏ hàng đạt 85%, Thống kê và Quản lý đánh giá đạt 90%, Tìm kiếm sản phẩm đạt 95%). Ngoài ra, việc sử dụng cơ sở dữ liệu NoSQL MongoDB có đặc điểm thiếu ràng buộc giao dịch chặt chẽ (ACID transaction) như hệ quản trị quan hệ truyền thống và tiêu tốn dung lượng bộ nhớ RAM do cơ chế đệm dữ liệu.
  • Hướng phát triển: Hoàn thiện tối ưu 100% các chức năng giỏ hàng và tìm kiếm; nâng cấp hệ thống phân tích, thống kê doanh thu nâng cao; hoàn thiện tích hợp các cổng thanh toán trực tuyến và tự động hóa kết nối với các đối tác cung cấp dịch vụ vận chuyển.

Giá trị tham khảo

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

Các nội dung có giá trị tham khảo cao bao gồm:

  • Cấu trúc phân chia thư mục chuẩn giữa ReactJS (SPA) và NodeJS/ExpressJS RESTful API.
  • Thiết kế lược đồ thực thể cơ sở dữ liệu thương mại điện tử phục vụ quản lý sản phẩm, đơn hàng và tài khoản người dùng.
  • Phương pháp kiểm thử tích hợp hệ thống kết hợp giữa React Developer Tools và Postman.

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

1. Đề tài sử dụng những công nghệ và thư viện cốt lõi nào?

Hệ thống sử dụng HTML/CSS, JavaScript, ReactJS (sử dụng JSX và các React Hooks useState, useEffect) cho phía Frontend; NodeJS kết hợp ExpressJS Framework cho phía Backend; hệ quản trị cơ sở dữ liệu NoSQL (MongoDB); và trình biên tập mã nguồn Visual Studio Code.

2. Cấu trúc cơ sở dữ liệu của hệ thống gồm những bảng nào?

Hệ thống thiết kế 7 bảng dữ liệu chính: Category (danh mục), Product (sản phẩm), Role (vai trò), User (người dùng), Feedback (đánh giá, phản hồi), Order (đơn hàng) và OrderDetail (chi tiết đơn hàng).

3. Quy trình kiểm thử phía Client và Server được thực hiện bằng công cụ gì?

Phía Client sử dụng công cụ React Developer Tools để kiểm tra tương tác giao diện, luồng gửi request và tính tương thích Responsive Design. Phía Server sử dụng Postman để kiểm tra các endpoint API với các phương thức GET, POST, PUT, DELETE, giám sát cấu trúc Headers, Body và thời gian phản hồi (Response Time).

4. Quy trình quản lý mã nguồn nhóm trên GitHub được tổ chức như thế nào?

Nhóm áp dụng mô hình Feature Branch: sao chép kho mã nguồn (git clone), tạo nhánh mới cho từng tính năng (git checkout -b feature/new-feature), thực hiện commit thay đổi (git commit), đẩy nhánh lên GitHub (git push) và tạo Pull Request để các thành viên đánh giá, kiểm tra tích hợp CI trước khi hợp nhất (merge) vào nhánh chính.

5. Tỷ lệ hoàn thành thực tế của các chức năng chính trong đồ án đạt bao nhiêu?

Các chức năng cốt lõi như Đăng ký/đăng nhập, Cập nhật thông tin người dùng và Thêm/sửa/xóa sản phẩm - người dùng đạt 100%; chức năng Tìm kiếm đạt 95%; chức năng Thống kê admin và Quản lý đánh giá đạt 90%; chức năng Giỏ hàng đạt mức độ hoàn thành 85%.

Kết luận

Đồ án "Website Bán Hàng Trực Tuyến" của nhóm sinh viên Lớp 20CN1, Khoa Công nghệ Thông tin - Trường Đại học Kiến trúc Hà Nội đã hoàn thành việc nghiên cứu và xây dựng thành công một giải pháp phần mềm thương mại điện tử hướng dịch vụ. Hệ thống kết hợp hài hòa giữa frontend ReactJS, backend NodeJS/ExpressJS và cơ sở dữ liệu NoSQL MongoDB, đáp ứng đầy đủ các nghiệp vụ quản lý bán hàng cho doanh nghiệp vừa và nhỏ. Kết quả kiểm thử cho thấy phần mềm vận hành ổn định, giao diện thân thiện và cấu trúc mã nguồn được quản lý khoa học, tạo tiền đề vững chắc cho việc mở rộng các tiện ích nâng cao trong tương lai.