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

Trong bối cảnh công nghệ thông tin và mạng Internet phát triển mạnh mẽ, việc tiếp cận các dịch vụ giải trí trực tuyến đã trở thành một phần thiết yếu trong đời sống hàng ngày của người dùng. Trong số các hình thức giải trí đa phương tiện, đọc và chia sẻ truyện tranh trực tuyến là một lĩnh vực thu hút sự quan tâm lớn của đông đảo độc giả trẻ trên toàn quốc. Phương thức đọc truyện và mua sắm trực tuyến mang lại nhiều thuận lợi rõ rệt như: thu hẹp khoảng cách địa lý, xóa bỏ trở ngại về việc đi lại hay tình trạng tắc nghẽn giao thông, đồng thời mở rộng không gian và thời gian tiếp cận sản phẩm của các đơn vị cung cấp.

Tuy nhiên, việc triển khai các mô hình kinh doanh và phân phối nội dung trực tuyến tại Việt Nam vẫn đối mặt với nhiều thách thức từ thực tiễn:

  • Người dùng còn tồn tại tâm lý lo ngại khi tham gia mua sắm và đọc nội dung trên không gian mạng do không được tiếp xúc trực tiếp với ấn phẩm, băn khoăn về chất lượng thực tế so với thông tin quảng cáo, cũng như các rủi ro về chậm trễ hay thất lạc hàng hóa sau khi thanh toán.
  • Về phía đơn vị quản lý, việc vận hành đòi hỏi nền tảng công nghệ thông tin vững chắc để kiểm soát chi phí sản xuất, xử lý rủi ro giao hàng sai địa chỉ hoặc không có người nhận, quản lý kho hàng và nắm bắt kịp thời thị hiếu của độc giả.
  • Vấn đề an toàn thông tin khi người dùng thực hiện các giao dịch nạp tiền, bảo mật tài khoản cá nhân, cùng yêu cầu về khả năng bảo trì, nâng cấp hệ thống linh hoạt khi mở rộng quy mô.

Trước thực trạng đó, đề tài "Xây dựng website đọc truyện" (báo cáo chuyên đề học phần Ngôn ngữ kịch bản) được nhóm tác giả thực hiện nhằm giải quyết bài toán xây dựng một nền tảng trực tuyến vừa đáp ứng nhu cầu đọc truyện thời gian thực, vừa tích hợp cơ chế quản lý xuất bản và thương mại sản phẩm truyện.

Nhiệm vụ nghiên cứu và triển khai của đề tài bao gồm các mục tiêu cụ thể:

  1. Nghiên cứu nền tảng Node.js và cơ chế xử lý không đồng bộ (Asynchronous I/O) để áp dụng vào việc xây dựng ứng dụng web thời gian thực.
  2. Khảo sát hiện trạng, phân tích bài toán thực tế và thu thập các yêu cầu chức năng, phi chức năng cho hệ thống website đọc truyện.
  3. Xây dựng mô hình hóa hệ thống thông qua biểu đồ ca sử dụng (Use Case) và biểu đồ hoạt động (Activity Diagram), đồng thời lập bảng đặc tả chi tiết cho từng tác vụ của người dùng và ban quản trị.
  4. Thiết kế cấu trúc các trang giao diện trực quan nhằm tối ưu hóa trải nghiệm đọc truyện và quản lý hệ thống.

Về phạm vi và đối tượng:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế hệ thống phần mềm và kỹ thuật xây dựng ứng dụng web phân phối nội dung truyện tranh trên nền tảng JavaScript/Node.js.
  • Phạm vi thực hiện: Đồ án chuyên đề học phần Ngôn ngữ kịch bản, chuyên ngành Công nghệ phần mềm, Lớp D15CNPM2, Khoa Công nghệ Thông tin - Trường Đại học Điện Lực, thực hiện trong niên khóa 2020–2024 (hoàn thành vào tháng 5 năm 2023).

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

Đề tài vận dụng các cơ sở lý thuyết về môi trường thực thi phía máy chủ và các phương pháp kỹ thuật phần mềm chuẩn mực trong phân tích thiết kế hệ thống.

Cơ sở lý thuyết về nền tảng Node.js

Node.js là môi trường thực thi mã JavaScript ở phía máy chủ (server-side), được xây dựng dựa trên nền tảng Chrome V8 JavaScript Engine. Ra đời vào năm 2009 bởi Ryan Dahl, Node.js giải quyết bài toán xây dựng môi trường lập trình máy chủ gọn nhẹ, phản hồi nhanh cho các ứng dụng web thời gian thực thông qua hệ sinh thái thư viện phong phú và các khung làm việc (framework) tiêu biểu như Express.js.

Cơ chế vận hành của Node.js dựa trên mô hình phi khóa (non-blocking), hướng sự kiện (event-driven) và xử lý I/O không đồng bộ (asynchronous I/O), bao gồm 5 giai đoạn cốt lõi:

  1. Khởi tạo môi trường (Node.js Environment): Tải toàn bộ module, gói thư viện cần thiết và nạp mã nguồn ứng dụng khi tiến trình bắt đầu chạy.
  2. Xử lý mã JavaScript: Chrome V8 Engine biên dịch trực tiếp mã JavaScript sang mã máy để thực thi tối ưu.
  3. Xử lý không đồng bộ (Asynchronous Processing): Áp dụng cơ chế hàm gọi lại (Callback) và Promise, cho phép hệ thống tiếp tục xử lý các luồng công việc khác mà không bị chặn (blocking) trong lúc chờ tác vụ hoàn thành.
  4. Xử lý sự kiện (Event Handling): Lắng nghe và điều phối các sự kiện (yêu cầu HTTP, kết nối máy chủ) tới các hàm xử lý tương ứng thông qua vòng lặp sự kiện (Event Loop).
  5. Xử lý I/O không đồng bộ: Thực hiện đọc/ghi tệp tin hoặc truy vấn cơ sở dữ liệu nền, kích hoạt hàm phản hồi khi I/O hoàn tất nhằm duy trì hiệu năng cao.

Phương pháp nghiên cứu và phân tích thiết kế

  • Phương pháp khảo sát hiện trạng: Phân tích quy trình tiếp cận nội dung số của độc giả và nghiệp vụ quản lý bán hàng của các cửa hàng phân phối truyện tranh.
  • Phương pháp mô hình hóa 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 đồ Use Case tổng quan, biểu đồ Use Case phân rã và biểu đồ hoạt động (Activity Diagram) thể hiện luồng dữ liệu giữa các thực thể.
  • Phương pháp đặc tả ca sử dụng: Xác định rõ ràng các tác nhân (Actor), mô tả chức năng, tiền điều kiện (Pre-conditions), hậu điều kiện (Post-conditions), luồng sự kiện chính (Main flow), luồng sự kiện phụ (Alternative flow) và các điểm mở rộng (Extension points).

Thiết kế và triển khai

Hệ thống được tổ chức phân quyền phân định rõ ràng giữa hai nhóm tác nhân chính: Nhóm Quản trị (Quản lý và Nhân viên) và Nhóm Người dùng cuối (Độc giả/Khách hàng).

Tác nhân Quyền hạn và phạm vi tác động Mục tiêu chức năng
Quản lý (Admin/Manager) Toàn quyền kiểm soát hệ thống, cơ sở dữ liệu và nhân sự Quản lý nhân viên, phân quyền truy cập, theo dõi thống kê toàn diện doanh thu và đơn hàng.
Nhân viên (Staff) Quyền tác nghiệp giới hạn theo chức vụ được phân quyền Quản lý sản phẩm truyện, xử lý đơn hàng, quản lý danh mục, mã giảm giá và phản hồi liên hệ.
Người dùng (User/Reader) Quyền truy cập các tính năng công khai và tài khoản cá nhân Đăng ký, đăng nhập, tìm kiếm truyện, đọc truyện, lưu truyện theo dõi, quản lý giỏ hàng, đặt mua và phản hồi.

Thiết kế các phân hệ chức năng quản trị

Phân hệ quản trị bao gồm 9 khối nghiệp vụ chính được chuẩn hóa theo quy trình vận hành:

  1. Đăng nhập quản trị: Xác thực thông tin tài khoản nhân viên/quản lý từ cơ sở dữ liệu, phân cấp menu chức năng theo vai trò và chặn truy cập trái phép.
  2. Quản lý nhân viên: Thực hiện các thao tác thêm mới, điều chỉnh thông tin, xóa tài khoản và tìm kiếm hồ sơ nhân viên trong quá trình làm việc tại cửa hàng.
  3. Quản lý người dùng: Cho phép kiểm soát dữ liệu tài khoản khách hàng, xem thông tin chi tiết và xóa các tài khoản vi phạm.
  4. Quản lý sản phẩm (Truyện): Kiểm soát kho dữ liệu truyện, thêm truyện mới, cập nhật mô tả, xóa truyện và nhập bổ sung số lượng ấn bản.
  5. Quản lý mã giảm giá: Khởi tạo, chỉnh sửa điều kiện áp dụng và hủy bỏ các mã khuyến mãi nhằm xúc tiến bán hàng.
  6. Quản lý danh mục sản phẩm: Phân loại thể loại truyện, cấu trúc danh mục phục vụ tra cứu nhanh.
  7. Quản lý đơn hàng: Tiếp nhận đơn đặt hàng từ website, duyệt đơn, cập nhật trạng thái thanh toán và xử lý yêu cầu hủy đơn.
  8. Quản lý liên hệ: Tiếp nhận thông tin phản ánh/góp ý từ khách hàng, gửi phản hồi trực tiếp và dọn dẹp các thư liên hệ cũ.
  9. Thống kê: Tổng hợp dữ liệu định lượng về người dùng mới, số lượng sản phẩm, doanh thu bán hàng, bài viết tin tức và tổng số đơn hàng phát sinh trong toàn bộ chu kỳ hoạt động.

Thiết kế phân hệ người dùng

  • Xác thực và phục hồi tài khoản: Đăng ký tài khoản mới, đăng nhập hệ thống; tích hợp cơ chế khôi phục mật khẩu thông qua thư điện tử (email) tự động khi người dùng quên thông tin đăng nhập.
  • Đọc truyện và tương tác: Cho phép xem danh mục truyện, đọc chi tiết từng chương truyện, thêm truyện vào danh sách theo dõi riêng biệt và tương tác qua kênh trò chuyện chung (chat box) tại trang chủ.
  • Giao dịch thương mại: Cung cấp giỏ hàng cá nhân hóa, cho phép chọn/xóa sản phẩm, áp dụng mã ưu đãi, thực hiện đặt hàng và gửi phản hồi dịch vụ.

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

Chương 1: Tổng quan về đề tài và nền tảng Node.js

Chương mở đầu tập trung giới thiệu bối cảnh hình thành đề tài, lý do lựa chọn xây dựng website đọc truyện phục vụ nhu cầu giải trí của giới trẻ và giải quyết các bài toán giao thông, tiếp cận ấn phẩm từ xa. Tác giả trình bày chi tiết về nguồn gốc phát triển của Node.js từ năm 2009 bởi Ryan Dahl, khẳng định ưu thế của kiến trúc non-blocking I/O và V8 Engine trong việc tối ưu hóa tài nguyên máy chủ. Chương này cũng phân tích tổng quan các trang chức năng cốt lõi cấu thành nên hệ thống bao gồm: Trang đăng nhập/đăng ký, Trang chủ (tích hợp kênh trò chuyện), Trang danh mục truyện, Trang chi tiết đọc truyện và Trang theo dõi truyện.

Chương 2: Khảo sát và phân tích hệ thống

Đây là nội dung trọng tâm của báo cáo, trình bày chi tiết kết quả khảo sát hiện trạng thương mại và giải trí trực tuyến tại Việt Nam, nêu bật tâm lý e ngại của khách hàng cũng như rủi ro tồn kho, vận chuyển của đơn vị quản lý.

Tác giả mô tả bài toán vận hành giỏ hàng ảo và xác lập các yêu cầu phi chức năng về tính thẩm mỹ, giao diện thân thiện, khả năng mở rộng, bảo trì và tính an toàn thông tin khi thực hiện giao dịch nạp tiền. Chương 2 thiết lập hệ thống Use Case và biểu đồ hoạt động chi tiết cho 9 chức năng quản trị và 1 chức năng người dùng chính, trong đó xác định rõ ràng:

  • Tiền điều kiện: Yêu cầu đăng nhập, tính sẵn sàng của dữ liệu trong CSDL.
  • Dòng sự kiện chính và phụ: Xử lý thành công việc thêm/sửa/xóa, cơ chế xác nhận "Bạn có muốn thoát?" khi điều hướng về trang chủ, cơ chế gửi mail cấp lại mật khẩu.
  • Hậu điều kiện: Thông báo trạng thái cập nhật thành công hoặc trả mã lỗi giao diện khi xử lý dữ liệu thất bại.

Chương 3: Thiết kế trang web

Chương 3 trình bày cấu trúc giao diện trực quan của hệ thống website đọc truyện, tập trung vào hai màn hình hiển thị sản phẩm chính:

  • Trang sản phẩm: Hiển thị danh sách truyện theo thể loại, bộ lọc tìm kiếm và các mục truyện mới cập nhật.
  • Trang chi tiết sản phẩm/chi tiết truyện: Trình bày thông tin xuất xứ, giá cả, số chương phát hành, phần tóm tắt nội dung và không gian đọc truyện tối ưu hóa cho người dùng.

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

Báo cáo chuyên đề học phần đã hoàn thành các mục tiêu học thuật và kỹ thuật đề ra, với các kết quả cụ thể:

  • Chuẩn hóa quy trình nghiệp vụ phần mềm: Xây dựng hoàn chỉnh hồ sơ phân tích thiết kế hệ thống bao gồm 10 biểu đồ ca sử dụng và 10 biểu đồ hoạt động chi tiết, bao quát toàn bộ các luồng nghiệp vụ từ quản lý nhân sự, quản lý kho truyện, quản lý tài chính đến hỗ trợ khách hàng.
  • Ứng dụng công nghệ bất đồng bộ: Làm rõ phương thức vận hành của Node.js kết hợp cùng V8 Engine, Callback và Promise, chứng minh tính phù hợp của nền tảng trong việc xử lý luồng I/O đa kết nối thời gian thực cho website phân phối nội dung.
  • Tích hợp mô hình dịch vụ kép: Kết hợp thành công giữa nền tảng đọc truyện trực tuyến miễn phí và hệ thống thương mại điện tử (bán truyện, quản lý đơn hàng, phát hành mã giảm giá, nạp tiền an toàn).

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

Theo tự đánh giá của nhóm tác giả trong văn bản, báo cáo còn tồn tại một số hạn chế xuất phát từ kiến thức chuyên môn bước đầu của sinh viên trong quá trình tiếp cận học phần Ngôn ngữ kịch bản.

Các định hướng phát triển và mở rộng được xác định bao gồm:

  • Hoàn thiện và nâng cao tính bảo mật tuyệt đối cho hệ thống, đặc biệt là cơ chế mã hóa thông tin liên quan đến người dùng trong quá trình nạp tiền và thanh toán trực tuyến.
  • Tối ưu hóa kiến trúc mã nguồn để tăng cường tính dễ bảo trì, sửa chữa và dễ dàng nâng cấp khi cần tích hợp thêm các tính năng tương tác mới trong tương lai.

Giá trị tham khảo

Báo cáo chuyên đề học phần mang lại giá trị học tập và ứng dụng thực tế cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ phần mềm và Công nghệ thông tin: Là tài liệu tham khảo cụ thể về phương pháp trình bày báo cáo chuyên đề môn học, cách vẽ biểu đồ ca sử dụng, biểu đồ hoạt động và cách viết tài liệu đặc tả Use Case chuẩn mực.
  • Lập trình viên phát triển ứng dụng web: Cung cấp tài liệu tổng quan về nguyên lý hoạt động của Node.js (V8 Engine, mô hình hướng sự kiện non-blocking I/O) và cấu trúc phân hệ chức năng cho một website phân phối nội dung số kết hợp thương mại điện tử.

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

1. Đề tài báo cáo chuyên đề này được thực hiện bởi ai, thuộc đơn vị nào và vào thời gian nào?
Đề tài do hai sinh viên Nguyễn Ngọc Vương (MSV: 20810310279) và Trần Hoàng Trung (MSV: 20810310271), thuộc lớp D15CNPM2, chuyên ngành Công nghệ phần mềm, Khóa 2020–2024, 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 thầy Phương Văn Cảnh, hoàn thành vào tháng 5 năm 2023 tại Hà Nội.

2. Nền tảng Node.js hoạt động dựa trên những nguyên lý kỹ thuật cốt lõi nào theo mô tả của tác giả?
Node.js sử dụng Chrome V8 JavaScript Engine để biên dịch mã JavaScript sang mã máy, hoạt động theo mô hình phi khóa (non-blocking), hướng sự kiện (event-driven) và xử lý I/O không đồng bộ (asynchronous I/O) thông qua cơ chế Callback và Promise.

3. Phân hệ Quản trị (Admin) trong hệ thống gồm những chức năng nghiệp vụ cụ thể nào?
Phân hệ Quản trị bao gồm 9 chức năng: Đăng nhập quản trị, Quản lý nhân viên, Quản lý người dùng, Quản lý sản phẩm (truyện), Quản lý mã giảm giá, Quản lý danh mục sản phẩm, Quản lý đơn hàng, Quản lý liên hệ và Thống kê (người dùng, sản phẩm, doanh thu, bài viết, đơn hàng).

4. Khi người dùng quên mật khẩu đăng nhập, hệ thống xử lý theo quy trình nào?
Theo luồng sự kiện phụ trong đặc tả Use Case đăng nhập người dùng, nếu người dùng chọn chức năng quên mật khẩu, hệ thống sẽ thực hiện gửi thư tự động về địa chỉ email đã đăng ký của người dùng và cung cấp đường dẫn để thiết lập lại mật khẩu mới.

5. Ngoài chức năng đọc truyện, website còn tích hợp những tính năng tương tác và thương mại nào?
Website tích hợp kênh trò chuyện chung (chat) tại trang chủ, hệ thống theo dõi truyện yêu thích, giỏ hàng trực tuyến để đặt mua ấn phẩm, tính năng áp dụng mã giảm giá và gửi thông tin phản hồi/liên hệ tới ban quản trị.


Kết luận

Báo cáo chuyên đề "Xây dựng website đọc truyện hiệu quả với Node.js" của sinh viên Nguyễn Ngọc Vương và Trần Hoàng Trung đã hoàn thành việc khảo sát, phân tích và thiết kế chi tiết một hệ thống website đọc truyện đa tính năng. Đề tài làm rõ cơ chế hoạt động phi khóa, hướng sự kiện của Node.js và xây dựng hệ thống biểu đồ Use Case, Activity Diagram hoàn chỉnh cho cả phân hệ quản trị lẫn người dùng. Đây là công trình thực hành kỹ thuật phần mềm có cấu trúc rõ ràng, đóng vai trò là tài liệu tham khảo hữu ích cho sinh viên công nghệ thông tin trong các học phần phát triển ứng dụng web.