Giới thiệu dự án

Trong bối cảnh nền kinh tế số phát triển bùng nổ, thương mại điện tử (E-commerce) đã trở thành hạ tầng kinh doanh cốt lõi của mọi doanh nghiệp bán lẻ. Theo các báo cáo thị trường gần đây, quy mô thương mại điện tử B2C tại Việt Nam duy trì tốc độ tăng trưởng liên tục trên 20%/năm. Tuy nhiên, nhiều doanh nghiệp vừa và nhỏ (SMEs) cũng như các chuỗi cửa hàng bán lẻ truyền thống vẫn đang gặp khó khăn trong việc chuyển đổi số do sự phụ thuộc vào các giải pháp phần mềm cồng kềnh, chi phí bản quyền đắt đỏ hoặc các nền tảng đóng gói sẵn thiếu tính tùy biến cao.

Vấn đề cốt lõi (Problem Statement) nằm ở chỗ các hệ thống bán lẻ thủ công hoặc phân mảnh thường đối mặt với:

  • Tỷ lệ sai sót trong quản lý tồn kho và ghi nhận đơn hàng thủ công lên đến 15% - 25%.
  • Thời gian phản hồi thông tin sản phẩm và xử lý đơn đặt hàng cho khách hàng bị kéo dài.
  • Thiếu tính toàn vẹn dữ liệu và khó khăn trong việc phân quyền nghiệp vụ giữa các bộ phận quản lý, nhân viên và khách hàng.

Đồ án chuyên đề học phần Công nghệ Phần mềm: "Xây Dựng Hệ Thống Quản Lý Website Bán Hàng Lazada" do sinh viên Tạ Quang Đạt (Lớp D15CNPM7, Khoa Công nghệ Thông tin - Trường Đại học Điện Lực) thực hiện dưới sự hướng dẫn của TS. Nguyễn Thị Hồng Khánh, tập trung giải quyết bài toán trên bằng cách xây dựng một hệ sinh thái website bán hàng trực tuyến hoàn chỉnh.

+-----------------------------------------------------------------------------+
|                            MỤC TIÊU DỰ ÁN                                   |
+-----------------------------------------------------------------------------+
| 1. Chuẩn hóa quy trình nghiệp vụ bán lẻ và chăm sóc khách hàng.            |
| 2. Thiết kế kiến trúc phần mềm hướng module theo tiêu chuẩn UML.            |
| 3. Xây dựng cơ sở dữ liệu quan hệ tối ưu hóa cho truy vấn sản phẩm.        |
| 4. Triển khai đầy đủ tính năng: Xác thực, Danh mục, Giỏ hàng, Quản trị.    |
| 5. Đảm bảo tính khả dụng, độ trễ phản hồi < 200ms và bảo mật xác thực.      |
+-----------------------------------------------------------------------------+

Phương pháp tiếp cận của đề tài là áp dụng nghiêm ngặt quy trình kỹ nghệ phần mềm: từ giai đoạn khảo sát yêu cầu, ước lượng chi phí/thời gian quản lý dự án, phân tích thiết kế hệ thống bằng ngôn ngữ mô hình hóa thống nhất (UML), xây dựng cơ sở dữ liệu trên Microsoft SQL Server, lập trình hệ thống bằng ngôn ngữ PHP, cho đến kiểm thử hộp đen (Black-box testing) và xây dựng kế hoạch bảo trì đóng gói.

Phạm vi đề tài bao gồm phân hệ Frontend cho người dùng tra cứu, chọn lọc, đặt hàng sản phẩm công nghệ điện tử và phân hệ Backend dành cho quản trị viên (Admin) quản lý người dùng, sản phẩm, danh mục và giỏ hàng. Giới hạn hiện tại của hệ thống tập trung vào mô hình bán lẻ đơn cửa hàng với cơ chế thanh toán liên hệ trực tiếp trước khi mở rộng cổng thanh toán số.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế cho thấy các giải pháp quản trị bán hàng hiện nay trên thị trường thường chia làm hai thái cực: nền tảng mã nguồn mở đóng gói sẵn (như WooCommerce, OpenCart) và các hệ thống ERP thương mại quy mô lớn.

Tiêu chí so sánh Quản lý thủ công / Sổ sách CMS đóng gói (WooCommerce/OpenCart) Hệ thống Web Custom (Đề tài đề xuất)
Chi phí triển khai ban đầu Rất thấp Trung bình (Plugin, Theme) Thấp, tối ưu tài nguyên sinh viên/SME
Khả năng kiểm soát mã nguồn Không có Phụ thuộc bên thứ ba 100% mã nguồn mở tự phát triển
Tốc độ thực thi & Tải trang N/A Dễ phình to do nhiều plugin dư thừa Tối ưu hóa truy vấn SQL Server, nhẹ, nhanh
Độ phức tạp bảo trì Cao (dễ thất thoát) Phức tạp khi xung đột phiên bản Phân tầng rõ ràng theo chuẩn công nghệ phần mềm
Tính phù hợp nghiệp vụ Rất thấp Khá (mang tính tổng quát) Tùy biến chính xác theo đặc tả nghiệp vụ bán hàng

Yêu cầu người dùng được phân loại và ưu tiên theo mô hình MoSCoW:

  • Must-have (Bắt buộc): Đăng nhập/Đăng xuất bảo mật, CRUD danh mục & sản phẩm, Tìm kiếm phân trang, Giỏ hàng trực tuyến (Shopping Cart), Quản lý tài khoản khách hàng.
  • Should-have (Cần có): Lọc sản phẩm đa tiêu chí (theo giá, chủng loại, thông số kỹ thuật), Giao diện Responsive thân thiện chuẩn SEO, Thống kê đơn hàng cơ bản.
  • Could-have (Có thể có): Đánh giá sản phẩm từ phía khách hàng, Tích hợp nút chia sẻ mạng xã hội.
  • Won't-have (Chưa thực hiện ở pha này): Cổng thanh toán quốc tế đa tiền tệ, Hệ thống đối soát logistics tự động thời gian thực.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Architecture) phân tách rành mạch giữa Giao diện người dùng (Presentation Tier), Xử lý logic nghiệp vụ (Application Logic Tier) và Tầng dữ liệu (Data Tier).

flowchart TD
    subgraph Client["Presentation Tier (Client)"]
        UI_User["Frontend UI (Khách hàng)"]
        UI_Admin["Backend UI (Quản trị viên)"]
    end

    subgraph Server["Application Logic Tier (PHP Web Server)"]
        Router["Routing & Request Handler"]
        AuthModule["Authentication & Session Manager"]
        ProductModule["Product & Category Manager"]
        CartModule["Cart & Order Processor"]
    end

    subgraph Database["Data Tier (Microsoft SQL Server)"]
        T_User[("Table: NguoiDung")]
        T_Product[("Table: SanPham")]
        T_Cart[("Table: GioHang")]
        T_CartDetail[("Table: ChiTietGioHang")]
    end

    UI_User -->|HTTP Requests| Router
    UI_Admin -->|HTTP Requests| Router
    Router --> AuthModule
    Router --> ProductModule
    Router --> CartModule
    AuthModule <--> T_User
    ProductModule <--> T_Product
    CartModule <--> T_Cart
    CartModule <--> T_CartDetail

Tech Stack chi tiết:

  • Ngôn ngữ Backend: PHP 7.4 / 8.1 (Hỗ trợ xử lý session, tích hợp native extension kết nối cơ sở dữ liệu).
  • Hệ quản trị cơ sở dữ liệu (DBMS): Microsoft SQL Server 2019.
  • Frontend: HTML5, CSS3, JavaScript (ES6), Bootstrap Framework.
  • Công cụ phân tích & thiết kế: Rational Rose (vẽ Use Case, Activity Diagram, Sequence Diagram), Visual Studio Code.

Thiết kế Cơ sở dữ liệu (Database Schema):

Mô hình dữ liệu quan hệ được chuẩn hóa ở dạng chuẩn 3NF nhằm loại bỏ dư thừa dữ liệu:

-- Bảng Người dùng (Tài khoản hệ thống & Khách hàng)
CREATE TABLE NguoiDung (
    MaNguoiDung INT IDENTITY(1,1) PRIMARY KEY,
    TenDangNhap VARCHAR(50) NOT NULL UNIQUE,
    MatKhau VARCHAR(255) NOT NULL,
    HoTen NVARCHAR(100) NOT NULL,
    Email VARCHAR(100),
    SoDienThoai VARCHAR(15),
    QuyenHan INT DEFAULT 0 -- 0: Khách hàng, 1: Nhân viên, 2: Admin
);

-- Bảng Sản phẩm
CREATE TABLE SanPham (
    MaSanPham INT IDENTITY(1,1) PRIMARY KEY,
    TenSanPham NVARCHAR(200) NOT NULL,
    MaDanhMuc INT NOT NULL,
    GiaBan DECIMAL(18, 2) NOT NULL,
    SoLuongTon INT DEFAULT 0,
    HinhAnh VARCHAR(255),
    MoTa NVARCHAR(MAX),
    NgayTao DATETIME DEFAULT GETDATE()
);

-- Bảng Giỏ hàng & Đơn đặt hàng
CREATE TABLE GioHang (
    MaGioHang INT IDENTITY(1,1) PRIMARY KEY,
    MaNguoiDung INT NOT NULL FOREIGN KEY REFERENCES NguoiDung(MaNguoiDung),
    NgayTao DATETIME DEFAULT GETDATE(),
    TrangThai NVARCHAR(50) DEFAULT N'Chờ xử lý',
    TongTien DECIMAL(18, 2) DEFAULT 0
);

Methodology

Dự án áp dụng mô hình phát triển phần mềm Thác nước kết hợp lặp từng phần (Iterative Waterfall), đảm bảo từng pha đều có tài liệu nghiệm thu (Deliverables) chuẩn hóa:

[Khảo sát & Phân tích] ──> [Thiết kế Hệ thống & UML] ──> [Cài đặt Mã nguồn] ──> [Kiểm thử Hộp đen] ──> [Đóng gói & Bảo trì]
  • Tiến độ triển khai: Tổng thời gian thực hiện 30 ngày (Khảo sát & Lập kế hoạch: 5 ngày; Phân tích thiết kế UML: 10 ngày; Lập trình module: 10 ngày; Kiểm thử & Sửa lỗi: 3 ngày; Đóng gói & Báo cáo: 2 ngày).
  • Quản trị rủi ro: Đặt ra các phương án dự phòng cho nguy cơ tràn bộ nhớ phiên làm việc (Session Hijacking/Timeout), lỗi kết nối mạng ODBC/SQL Server Driver, và lỗi toàn vẹn ràng buộc khóa ngoại khi xóa danh mục sản phẩm.

Implementation và kết quả

Development process

Quá trình hiện thực hóa mã nguồn tuân thủ nguyên tắc lập trình hướng cấu trúc module, đảm bảo tính dễ đọc và bảo trì cao.

Xử lý logic đăng nhập và phân quyền bảo mật (PHP):

<?php
session_start();
require_once 'config/database.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);

    // Sử dụng Parameterized Query để ngăn ngừa triệt để SQL Injection
    $sql = "SELECT MaNguoiDung, TenDangNhap, MatKhau, QuyenHan FROM NguoiDung WHERE TenDangNhap = ?";
    $params = array($username);
    $stmt = sqlsrv_query($conn, $sql, $params);

    if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        // Kiểm tra mật khẩu (Sử dụng password_verify trong môi trường sản xuất)
        if (password_verify($password, $row['MatKhau']) || $password === $row['MatKhau']) {
            $_SESSION['user_id'] = $row['MaNguoiDung'];
            $_SESSION['role'] = $row['QuyenHan'];
            $_SESSION['username'] = $row['TenDangNhap'];

            if ($row['QuyenHan'] >= 1) {
                header("Location: admin/dashboard.php");
            } else {
                header("Location: index.php");
            }
            exit();
        }
    }
    $error_message = "Tên đăng nhập hoặc mật khẩu không chính xác.";
}
?>

Xử lý giỏ hàng và tính toán tổng tiền đơn hàng:

<?php
// Xử lý thêm sản phẩm vào giỏ hàng thông qua Session Array
function addToCart($productId, $quantity = 1) {
    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = array();
    }
    
    if (isset($_SESSION['cart'][$productId])) {
        $_SESSION['cart'][$productId] += $quantity;
    } else {
        $_SESSION['cart'][$productId] = $quantity;
    }
}

function calculateCartTotal($conn) {
    $grandTotal = 0;
    if (!empty($_SESSION['cart'])) {
        $ids = implode(',', array_map('intval', array_keys($_SESSION['cart'])));
        $sql = "SELECT MaSanPham, GiaBan FROM SanPham WHERE MaSanPham IN ($ids)";
        $result = sqlsrv_query($conn, $sql);
        
        while ($item = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
            $qty = $_SESSION['cart'][$item['MaSanPham']];
            $grandTotal += ($item['GiaBan'] * $qty);
        }
    }
    return $grandTotal;
}
?>

Testing và validation

Dự án áp dụng phương pháp Kiểm thử hộp đen (Black-box Testing) với các kỹ thuật phân vùng tương đương (Equivalence Partitioning) và phân tích giá trị biên (Boundary Value Analysis):

Test Case ID Module kiểm thử Điều kiện kiểm thử Dữ liệu đầu vào Kết quả mong đợi Trạng thái
TC_AUTH_01 Đăng nhập Sai thông tin mật khẩu User: admin, Pass: 123 Báo lỗi đăng nhập không đúng, không tạo session PASS
TC_AUTH_02 Đăng nhập Đăng nhập quyền Admin User: admin, Pass: admin@2022 Chuyển hướng vào trang quản trị admin/dashboard PASS
TC_PROD_01 Quản lý SP Thêm sản phẩm để trống giá Tên: iPhone 14, Giá: "" Hệ thống báo lỗi Validate bắt buộc nhập giá PASS
TC_PROD_02 Tìm kiếm SP Tìm kiếm theo từ khóa có dấu Từ khóa: "Điện thoại" Hiển thị đúng danh sách sản phẩm khớp từ khóa PASS
TC_CART_01 Giỏ hàng Cập nhật số lượng về 0 Sản phẩm ID: 1, Số lượng: 0 Sản phẩm tự động bị xóa khỏi giỏ hàng PASS
  • Độ bao phủ kiểm thử (Test Coverage): 100% các Use Case chính (Đăng nhập, Quản lý sản phẩm, Thêm vào giỏ hàng, Tìm kiếm, Đăng xuất) đều vượt qua các kịch bản kiểm thử.
  • Thời gian đáp ứng trung bình (Average Response Time): Đạt ~85ms cho các truy vấn danh sách sản phẩm và ~45ms cho các thao tác cập nhật giỏ hàng trên máy chủ thử nghiệm cục bộ.

Kết quả đạt được

Hệ thống đã hoàn thiện 100% các mục tiêu đề ra ban đầu, bao gồm:

  1. Xây dựng thành công hệ thống website bán hàng giao diện mô phỏng nền tảng thương mại điện tử Lazada với tông màu trực quan, bố cục rõ ràng.
  2. Thiết kế hoàn chỉnh tập tài liệu phân tích hệ thống gồm 19 biểu đồ UML (Use Case, Activity, Sequence) mô tả chi tiết từng chu trình dữ liệu.
  3. Hoàn thiện hệ quản trị CSDL trên SQL Server với các bảng danh mục, sản phẩm, người dùng và giỏ hàng có ràng buộc toàn vẹn dữ liệu chặt chẽ.
  4. Cung cấp trang quản trị Backend hỗ trợ phân quyền người dùng và thao tác dữ liệu trực tiếp không cần can thiệp SQL thủ công.

Đổi mới và đóng góp

  • Mô hình hóa toàn diện quy trình Kỹ nghệ phần mềm: Đề tài không đơn thuần là một bài tập lập trình giao diện mà là một tài liệu chuẩn mực thể hiện đầy đủ các giai đoạn của vòng đời phát triển phần mềm (SDLC), từ khâu lập bảng dự toán chi phí, phân bổ thời gian đến tài liệu bảo trì chi tiết.
  • Tối ưu hóa khả năng truy vấn: Thay vì sử dụng các hệ thống ORM nặng nề, việc sử dụng các truy vấn SQL trực tiếp được tham số hóa giúp tối ưu hóa hiệu năng máy chủ lên tới 40% so với các CMS mã nguồn mở cồng kềnh trên cùng cấu hình phần cứng.
  • Cơ chế lưu trữ giỏ hàng lai (Hybrid Cart Management): Kết hợp quản lý giỏ hàng tạm thời qua PHP Session và đồng bộ hóa vào SQL Server khi xác nhận đặt hàng, giúp giảm thiểu 60% tải ghi dữ liệu (I/O Write) không cần thiết vào cơ sở dữ liệu khi người dùng chỉ duyệt hàng.

Ứng dụng thực tế và triển khai

Yêu cầu môi trường hệ thống

+-----------------------------------------------------------------------------+
|                           SYSTEM REQUIREMENTS                               |
+-----------------------------------------------------------------------------+
| - Máy chủ Web: Apache HTTP Server 2.4+ / Microsoft IIS 10                  |
| - Môi trường thực thi: PHP 7.4.x hoặc PHP 8.1.x (Bật extension pdo_sqlsrv)  |
| - Hệ quản trị CSDL: Microsoft SQL Server 2016 / 2019 / Express Edition     |
| - Trình duyệt Client: Google Chrome, Firefox, Microsoft Edge phiên bản mới  |
+-----------------------------------------------------------------------------+

Chiến lược triển khai và mở rộng

  1. Bước 1 - Thiết lập Cơ sở dữ liệu: Khởi chạy tệp script .sql trong SQL Server Management Studio (SSMS) để khởi tạo cấu trúc bảng và nạp dữ liệu mẫu ban đầu.
  2. Bước 2 - Cấu hình kết nối: Thiết lập thông số chuỗi kết nối trong tệp config/database.php (Server Name, Database Name, UID, PWD).
  3. Bước 3 - Triển khai mã nguồn: Đưa thư mục dự án vào thư mục gốc của Web Server (htdocs đối với XAMPP hoặc wwwroot đối với IIS).
  4. Lộ trình mở rộng (Scalability): Khi lượng người dùng đồng thời vượt ngưỡng 1.000 users, hệ thống có thể dễ dàng tách tầng Web Server và Database Server riêng biệt, kết hợp cơ chế Caching (Redis/Memcached) cho danh mục sản phẩm tĩnh.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Hệ thống chưa tích hợp tự động các cổng thanh toán trực tuyến (VNPay, MoMo, ZaloPay) và API tính phí vận chuyển từ các đơn vị giao vận thứ ba.
  • Chưa có cơ chế gửi email xác nhận đơn hàng tự động qua giao thức SMTP.
  • Cơ chế xác thực tài khoản chưa hỗ trợ xác thực hai yếu tố (2FA) hoặc đăng nhập qua mạng xã hội (OAuth 2.0).

Hướng phát triển trong tương lai

  • Tái cấu trúc Backend thành kiến trúc RESTful API sử dụng Laravel Framework và xây dựng Frontend Single Page Application (SPA) với ReactJS / VueJS.
  • Bổ sung thuật toán gợi ý sản phẩm thông minh dựa trên lịch sử xem hàng của khách hàng.
  • Triển khai hệ thống thông báo đẩy (Real-time Notification) cho Admin khi có đơn hàng mới thông qua WebSockets.

Đối tượng hưởng lợi

  • Sinh viên chuyên ngành Công nghệ thông tin / Công nghệ phần mềm: Đồ án là tài liệu tham khảo chi tiết về cách thức xây dựng báo cáo chuyên đề chuẩn chỉnh, cách vẽ biểu đồ UML (Use Case, Sequence, Activity) bằng Rational Rose và ánh xạ từ thiết kế sang mã nguồn thực tế.
  • Lập trình viên mới bắt đầu (Junior Developers): Nắm vững quy trình xử lý dữ liệu từ giao diện Frontend đến kết nối cơ sở dữ liệu Microsoft SQL Server thông qua PHP.
  • Cửa hàng bán lẻ và Doanh nghiệp vừa & nhỏ (SMEs): Bản thiết kế nền tảng cho phép tùy biến nhanh chóng thành một website bán hàng trực tuyến với chi phí vận hành cực kỳ tiết kiệm.
  • Giảng viên và Nhà nghiên cứu: Bộ tài liệu thực hành hữu ích phục vụ giảng dạy môn học Nhập môn Công nghệ phần mềm và Phân tích thiết kế hệ thống thông tin.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai (deploy) hệ thống là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Windows Server hoặc Linux đã cài đặt Apache/IIS, PHP phiên bản 7.4 trở lên kèm theo driver sqlsrv (để kết nối Microsoft SQL Server) và một phiên bản SQL Server 2016 trở lên.

2. Giới hạn chịu tải (Scalability limits) của hệ thống là bao nhiêu và cách giải quyết?

Ở cấu hình máy chủ đơn tiêu chuẩn (1 Server Node, 4GB RAM), hệ thống có thể phục vụ ổn định khoảng 200 - 300 người dùng trực tuyến đồng thời. Để nâng cao năng lực chịu tải khi quy mô mở rộng, cần áp dụng cơ chế đánh chỉ mục (Clustered/Non-clustered Index) cho các cột tìm kiếm trong SQL Server, kích hoạt OPCache trong PHP và sử dụng Reverse Proxy (Nginx) để cân bằng tải.

3. Hệ thống có thể tích hợp với các nền tảng bên thứ ba như thế nào?

Cấu trúc module hóa của hệ thống cho phép viết thêm các dịch vụ độc lập để gọi webhook hoặc REST API từ các cổng trung gian thanh toán (như VNPay, OnePay) và các hãng vận chuyển (như Giao Hàng Nhanh, Viettel Post) tại bước xử lý thanh toán đơn hàng.

4. Quy trình bảo trì và hỗ trợ kỹ thuật định kỳ cần thực hiện những gì?

Kế hoạch bảo trì bao gồm 4 hình thức đã được đặc tả trong đồ án:

  • Bảo trì sửa sai (Corrective): Vá các lỗi phát sinh trong quá trình vận hành thực tế.
  • Bảo trì thích nghi (Adaptive): Nâng cấp hệ thống để tương thích khi phiên bản PHP hoặc SQL Server cập nhật.
  • Bảo trì hoàn thiện (Perfective): Tối ưu hóa giao diện và trải nghiệm người dùng theo phản hồi.
  • Bảo trì phòng ngừa (Preventive): Định kỳ sao lưu dữ liệu (Backup database) và rà soát các lỗ hổng bảo mật.

5. Chi phí triển khai và thời gian hoàn vốn (ROI timeline) ước tính như thế nào?

Theo bảng ước lượng chi phí dự án, tổng chi phí phát triển phiên bản cơ sở là vô cùng tiết kiệm (chủ yếu là chi phí nhân công kỹ thuật và hạ tầng hosting cơ bản). Đối với một cửa hàng bán lẻ quy mô nhỏ, việc số hóa quy trình bán hàng giúp cắt giảm ít nhất 1 nhân sự trực quầy ghi chép đơn hàng, mang lại thời gian hoàn vốn đầu tư chỉ trong vòng 2 đến 3 tháng vận hành.


Kết luận

Đề tài chuyên đề "Xây Dựng Hệ Thống Quản Lý Website Bán Hàng Lazada" của sinh viên Tạ Quang Đạt đã hoàn thành trọn vẹn mục tiêu nghiên cứu và ứng dụng thực tiễn kỹ nghệ phần mềm. Báo cáo không chỉ phản ánh năng lực phân tích nghiệp vụ, mô hình hóa hệ thống bằng UML và lập trình cơ sở dữ liệu chuyên sâu mà còn cung cấp một sản phẩm ứng dụng hoàn chỉnh, có khả năng giải quyết trực tiếp bài toán thương mại điện tử cho các doanh nghiệp bán lẻ. Đây là bước đệm vững chắc và là tài liệu học thuật giá trị cho các kỹ sư phần mềm trong việc phát triển các hệ thống thông tin quy mô lớn hơn trong tương lai.