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

Trong quá trình phát triển của công nghệ phần mềm và các nền tảng trực tuyến, việc xây dựng website đóng vai trò thiết yếu đối với hoạt động của cá nhân và doanh nghiệp. Tuy nhiên, rào cản về kiến thức chuyên môn trong lập trình giao diện (frontend) và thiết kế trải nghiệm người dùng khiến những đối tượng không chuyên gặp nhiều trở ngại khi muốn tự tạo lập trang web. Xuất phát từ thực tế đó, các công cụ xây dựng trang web tự động (web builder) với phương thức tương tác trực quan kéo thả ra đời nhằm tối ưu hóa thời gian và nguồn lực triển khai.

Đồ án tốt nghiệp đại học ngành Khoa học Máy tính của tác giả Bùi Văn Mạnh, dưới sự hướng dẫn của ThS. Nguyễn Thị Nhung tại Trường Đại học Công nghiệp Hà Nội (năm 2024), tập trung giải quyết bài toán trên thông qua đề tài "Xây dựng ứng dụng hỗ trợ thiết kế giao diện website" với sản phẩm phần mềm mang tên Component Craft.

Lưu ý về hiện trạng văn bản: Toàn bộ hồ sơ đồ án ghi nhận hiện tượng không đồng nhất ở phần đầu tài liệu. Cụ thể, báo cáo đính kèm hai trang bìa: bìa chính ngành Khoa học Máy tính (năm 2024) với đề tài "Xây dựng ứng dụng hỗ trợ thiết kế giao diện website", và một trang bìa phụ ngành Công nghệ Thông tin (năm 2023) với tên đề tài "Xây dựng giải pháp tìm việc và tuyển dụng trực tuyến". Phần Lời nói đầu và tiểu mục khảo sát ban đầu của Chương 1 bị lẫn một phần nội dung của hệ thống tuyển dụng trực tuyến. Tuy nhiên, căn cứ vào phần Mở đầu chính thức, Danh mục hình ảnh, Danh mục bảng biểu và toàn bộ nội dung phân tích, thiết kế, hiện thực hóa tại Chương 2 và Chương 3, đề tài hoàn toàn tập trung vào ứng dụng thiết kế giao diện website Component Craft.

Mục tiêu nghiên cứu của đồ án bao gồm:

  1. Xây dựng một ứng dụng web builder giúp người dùng thiết kế giao diện website một cách trực quan, nhanh chóng thông qua thao tác kéo thả các khối thành phần.
  2. Cung cấp các công cụ và tài nguyên giao diện mẫu (template) hỗ trợ người dùng tạo lập giao diện mà không đòi hỏi kỹ năng lập trình chuyên sâu.
  3. Tích hợp tính năng hợp tác trực tuyến, phân quyền chia sẻ liên kết dự án để nhiều người dùng có thể cùng tham gia xem xét, đánh giá hoặc chỉnh sửa giao diện.
  4. Cung cấp chức năng chuyển đổi và xuất mã nguồn trang giao diện sang các framework lập trình phổ biến.

Nhiệm vụ nghiên cứu được văn bản phân định qua các nội dung chính:

  • Khảo sát các công cụ web builder phổ biến trên thị trường để xác định yêu cầu chức năng và phi chức năng.
  • Quản lý thông tin tài khoản người dùng và xác thực hệ thống.
  • Quản lý cơ sở dữ liệu các trang thiết kế và cấu trúc giao diện tương ứng.
  • Xây dựng cơ chế phân quyền, quản lý cộng đồng người dùng và cơ chế chia sẻ tài nguyên.
  • Kiểm thử và đánh giá các chức năng đã cài đặt.

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

  • Đối tượng nghiên cứu: Hệ thống ứng dụng hỗ trợ thiết kế giao diện kéo thả (Component Craft).
  • Phạm vi chức năng: Hệ thống dừng lại ở mức hỗ trợ thiết kế các thành phần giao diện đơn giản, chưa cung cấp đủ tính năng để xây dựng các bố cục giao diện phức tạp; hỗ trợ tính năng chia sẻ trang trong phạm vi người dùng nội bộ của hệ thống; hỗ trợ xuất mã nguồn giao diện sang hai framework là React và Vue.
  • Phạm vi môi trường: Hệ thống vận hành trên môi trường mạng Internet, tương thích với các trình duyệt web phổ biến gồm Chrome, Firefox, Safari, Edge và hỗ trợ hiển thị trên các thiết bị máy tính cũng như di động.

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

Đồ án ứng dụng quy trình phân tích và thiết kế hệ thống hướng đối tượng (OOAD) kết hợp việc mô hình hóa bằng ngôn ngữ UML và thiết kế cơ sở dữ liệu quan hệ.

Khung công nghệ và nền tảng lý thuyết được tác giả trình bày bao gồm:

  • Công nghệ phía máy khách (Frontend): HTML, CSS, JavaScript thuần và thư viện ReactJS dùng để xây dựng giao diện tương tác một trang (Single Page Application), quản lý trạng thái các component và hỗ trợ xử lý kéo thả giao diện.
  • Công nghệ phía máy chủ (Backend): Ngôn ngữ lập trình Java kết hợp nền tảng Spring Boot nhằm hiện thực hóa các dịch vụ web (RESTful API), xử lý logic nghiệp vụ, quản lý phiên làm việc, gửi email tự động và kết nối dữ liệu.
  • Hệ quản trị cơ sở dữ liệu: MySQL được sử dụng để lưu trữ dữ liệu người dùng, thông tin dự án trang và các liên kết quyền hạn.

Phương pháp nghiên cứu và phát triển phần mềm được triển khai qua các bước:

  • Phương pháp mô hình hóa cấu trúc và hành vi hệ thống: Sử dụng biểu đồ Use Case tổng quát và phân rã; biểu đồ hoạt động (Activity Diagram) thể hiện luồng xử lý; biểu đồ lớp (Class Diagram) theo mô hình phân tách Boundary - Control - Entity; biểu đồ trình tự (Sequence Diagram) mô tả tương tác giữa các đối tượng theo thời gian.
  • Phương pháp thiết kế dữ liệu: Mô hình hóa thực thể mối quan hệ (ERD - Entity Relationship Diagram) và chuyển đổi thành lược đồ bảng dữ liệu quan hệ trong MySQL.
  • Phương pháp kiểm thử: Thực hiện kiểm thử hộp đen (Black-box testing) với kế hoạch kiểm thử, chiến lược kiểm thử chức năng dựa trên các kịch bản kiểm thử ca sử dụng.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình hướng đối tượng với sự tách biệt rõ ràng giữa tầng giao diện (Boundary), tầng điều khiển logic (Control) và tầng thực thể dữ liệu (Entity).

Kiến trúc các thực thể dữ liệu chính

Các thực thể nền tảng được định nghĩa trong hệ thống gồm:

  • Thực thể User: Lưu trữ thông tin định danh và xác thực của người dùng, gồm các thuộc tính id, firstName, lastName, photo, cover, email, password. Các phương thức quản trị đi kèm gồm CreateUser(), getUserById(), getUserByEmail(), setUserById().
  • Thực thể Page: Lưu trữ trạng thái và cấu trúc của trang giao diện, gồm các thuộc tính id, name, json, previewImage, privacy, userId, modified_at. Các thao tác tương tác gồm createPage(), getPageById(), getPageByName(), setPageById(), deletePageById(), exportPageById(). Điểm then chốt trong giải pháp lưu trữ là việc đóng gói toàn bộ cấu trúc cây thành phần giao diện kéo thả dưới dạng chuỗi JSON (json).

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

Cơ sở dữ liệu của ứng dụng gồm 5 bảng chính được thiết kế phục vụ lưu trữ thông tin hệ thống và giải quyết quan hệ cộng tác:

Tên bảng Chức năng lưu trữ chính
user Lưu trữ thông tin định danh tài khoản, email, mật khẩu đã mã hóa, họ tên và ảnh đại diện.
page Lưu trữ thông tin trang thiết kế, chuỗi dữ liệu JSON biểu diễn giao diện, mã người tạo (userId), ảnh xem trước và trạng thái quyền riêng tư (privacy).
page_user Bảng trung gian liên kết phân quyền cộng tác, lưu trữ quan hệ giữa trang và các người dùng được cấp quyền chỉnh sửa.
user_shortcut_pages Lưu trữ danh mục các trang được người dùng đánh dấu lối tắt để truy cập nhanh trên giao diện cá nhân.
saved_pages Quản lý danh sách các trang được người dùng lưu lại từ kho trang giao diện cộng đồng.

Cơ chế xử lý ca sử dụng cốt lõi

  1. Cơ chế kéo thả và lưu trữ giao diện: Khi người dùng thao tác kéo thả component trên màn hình thiết kế, hệ thống cập nhật mô hình DOM ảo và chuyển đổi cấu trúc thành chuỗi JSON. Khi nhấn "Lưu", lớp điều khiển SuaTrangController chuyển giao dữ liệu xuống thực thể Page để thực thi cập nhật bản ghi trong cơ sở dữ liệu.
  2. Cơ chế xuất mã nguồn: Cho phép người dùng chuyển đổi dữ liệu cấu hình giao diện thành mã nguồn ứng dụng hoàn chỉnh. Hệ thống cung cấp hai tùy chọn biên dịch xuất mã: React hoặc Vue.
  3. Cơ chế chia sẻ và hợp tác: Chủ sở hữu trang có thể tìm kiếm người dùng khác trong hệ thống theo email thông qua giao diện XemChiTietTrangUI, chọn người cần phân quyền để cập nhật vào bảng page_user, đồng thời hệ thống kích hoạt thông báo quyền chỉnh sửa gửi đến email của người được chia sẻ.

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

Chương 1: Tổng quan về cơ sở lý thuyết

  • Trình bày kiến trúc và vai trò của bộ ba công nghệ web nền tảng: HTML (định hình cấu trúc tài liệu), CSS (định dạng bố cục, kiểu dáng) và JavaScript (xử lý logic kịch bản phía client).
  • Giới thiệu thư viện ReactJS, cơ chế hoạt động dựa trên Component, Virtual DOM và khả năng tối ưu hóa việc cập nhật giao diện trong các ứng dụng web phức tạp.
  • Khái quát về ngôn ngữ lập trình Java và framework Spring Boot, làm rõ cơ chế cấu hình tự động (auto-configuration), việc nhúng máy chủ web và xây dựng các tầng dịch vụ backend độc lập.
  • Giới thiệu hệ quản trị cơ sở dữ liệu quan hệ MySQL, nguyên lý lưu trữ dữ liệu dạng bảng và khả năng bảo đảm tính toàn vẹn quan hệ.
  • Ghi nhận hiện tượng lẫn nội dung: Trong chương này, ngoài lý thuyết công nghệ, văn bản còn chứa tiểu mục mô tả bài toán tuyển dụng trực tuyến, phân tích các yêu cầu chức năng (đăng tin, tìm việc, tạo hồ sơ cá nhân, nộp CV) và yêu cầu phi chức năng (hiệu suất, bảo mật, tương thích trình duyệt, SEO).

Chương 2: Phân tích thiết kế hệ thống

Chương 2 chiếm dung lượng lớn nhất trong đồ án, tập trung mô tả chi tiết 13 ca sử dụng (Use Case) chính cùng hệ thống biểu đồ UML hoàn chỉnh:

Nhóm chức năng Tên ca sử dụng (Use Case) Mô tả tóm tắt luồng xử lý
Quản lý tài khoản Đăng ký tài khoản Người dùng nhập họ, tên, email; hệ thống kiểm tra tính hợp lệ và thêm bản ghi vào bảng user.
Đăng nhập Xác thực tên đăng nhập/email và mật khẩu với dữ liệu trong bảng user.
Xem thông tin tài khoản Truy xuất dữ liệu từ bảng user thông qua định danh id để hiển thị trang hồ sơ cá nhân.
Thay đổi mật khẩu Kiểm tra mật khẩu cũ; nếu khớp, tiến hành cập nhật mật khẩu mới vào bảng user.
Lấy lại mật khẩu Nhập email; hệ thống kiểm tra tồn tại, tạo mật khẩu ngẫu nhiên và gửi thông tin qua email.
Cập nhật thông tin cá nhân Cho phép sửa họ và tên, sau đó ghi đè thông tin mới vào cơ sở dữ liệu.
Quản lý trang giao diện Tạo trang giao diện Chọn chức năng tạo mới, nhập tên trang, chọn mẫu; hệ thống kiểm tra trùng tên và tạo trang.
Chỉnh sửa trang giao diện Thao tác thiết kế kéo thả các thành phần trực tiếp trên workspace và lưu cấu hình JSON.
Xem chi tiết trang Hiển thị thông số chi tiết của trang từ bảng page dựa trên pageId.
Tìm kiếm trang giao diện Tìm kiếm các trang theo từ khóa tên trang thông qua phương thức getPageByName().
Xóa trang giao diện Xác nhận yêu cầu xóa và thực hiện loại bỏ bản ghi trang trong bảng page.
Xuất mã nguồn trang Cho phép chọn định dạng xuất là mã nguồn React hoặc Vue, sau đó tải về máy cục bộ.
Thêm người chỉnh sửa Nhập email cộng tác viên; hệ thống phân quyền và gửi email thông báo cấp quyền chỉnh sửa.

Bên cạnh bảng mô tả chi tiết, tác giả xây dựng 43 hình vẽ kỹ thuật bao gồm:

  • Biểu đồ use case tổng quát và phân rã cho hai phân hệ Quản lý tài khoản và Quản lý trang giao diện.
  • Biểu đồ hoạt động mô tả chi tiết luồng xử lý chính và rẽ nhánh của toàn bộ 13 use case.
  • Biểu đồ lớp phân tích phân định rõ các lớp biên giao diện (*UI), lớp điều khiển nghiệp vụ (*Controller) và các thực thể (User, Page).
  • Biểu đồ trình tự mô tả tuần tự các thông điệp truyền giữa tác nhân người dùng, giao diện, bộ điều khiển và thực thể cơ sở dữ liệu.
  • Biểu đồ thực thể liên kết ERD và cấu trúc dữ liệu chi tiết của 5 bảng quan hệ.

Chương 3: Kết quả, kiểm thử và đánh giá

  • Giới thiệu tổng quan và minh chứng kết quả triển khai ứng dụng thực tế thông qua 24 màn hình giao diện:
    • Phân hệ tài khoản: Màn hình đăng ký, mẫu thông báo gửi đến email, màn hình đăng nhập, giao diện lấy lại mật khẩu, trang thông tin cá nhân của chủ tài khoản và giao diện xem hồ sơ của người dùng khác.
    • Phân hệ thiết kế giao diện: Màn hình cấu hình khởi tạo trang mới, thư viện mẫu giao diện gợi ý, không gian làm việc (workspace) chỉnh sửa kéo thả trực quan, màn hình xem trước (preview) giao diện khi hiển thị thực tế.
    • Phân hệ cộng tác và quản lý: Hộp thoại phân quyền thêm người chỉnh sửa, nội dung email tự động gửi thông báo phân quyền, giao diện xuất mã nguồn (React/Vue), danh sách quản lý trang cá nhân (kèm các thao tác đổi tên, xóa, thiết lập lối tắt), danh sách trang cộng đồng và chế độ xem chi tiết trang được chia sẻ.
  • Công tác kiểm thử chương trình: Trình bày kế hoạch kiểm thử, chiến lược kiểm thử, mô hình kiểm thử và tổng hợp kết quả kiểm thử chức năng trên các giao diện thành phần nhằm xác nhận tính đúng đắn của các use case đã thiết kế.

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

Các kết quả kỹ thuật cụ thể được ghi nhận trong văn bản bao gồm:

  • Xây dựng hoàn chỉnh ứng dụng web builder Component Craft với các tính năng: đăng ký/đăng nhập, quản lý hồ sơ, tạo trang mới theo mẫu, thiết kế giao diện dạng kéo thả thành phần, lưu trữ cấu trúc trang dưới dạng JSON, tìm kiếm, đổi tên, xóa trang và chia sẻ dự án giữa các người dùng.
  • Hiện thực hóa thành công chức năng xuất mã nguồn trang giao diện hỗ trợ hai framework phổ biến là React và Vue.
  • Tích hợp dịch vụ email tự động trong hai quy trình nghiệp vụ: cấp lại mật khẩu ngẫu nhiên cho tài khoản và gửi thư mời cộng tác chỉnh sửa trang giao diện.
  • Đóng gói đầy đủ hồ sơ thiết kế phần mềm với 43 biểu đồ UML chi tiết (Use Case, Activity, Class, Sequence), biểu đồ ERD và 5 bảng cơ sở dữ liệu MySQL tương ứng.
  • Đóng góp tự nêu của tác giả: Cung cấp một giải pháp trực quan giúp người dùng không có chuyên môn về lập trình hay thiết kế web vẫn có thể xây dựng giao diện ứng dụng/website một cách dễ dàng, đồng thời tạo ra môi trường chia sẻ và hợp tác trực tuyến giữa các thành viên trong cộng đồng.

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

Hạn chế được văn bản đề cập trực tiếp gồm:

  • Các thành phần giao diện hỗ trợ trong công cụ mới dừng lại ở mức độ đơn giản, chưa cung cấp đủ tính năng và khối dựng sẵn để thiết kế các hệ thống giao diện phức tạp hoặc có độ tùy biến sâu.
  • Báo cáo đồ án tồn tại lỗi biên tập kỹ thuật khi để lẫn lộn trang bìa, lời nói đầu và nội dung khảo sát của đề tài tuyển dụng trực tuyến vào phần đầu của tài liệu.

Hướng nghiên cứu và phát triển tiếp (dựa trên phạm vi nghiên cứu):

  • Mở rộng thư viện linh kiện giao diện với nhiều thành phần phức tạp, đa dạng về kiểu dáng và bố cục.
  • Nâng cao tính năng cộng tác nhóm theo thời gian thực (real-time collaboration).
  • Tối ưu hóa bộ công cụ biên dịch để xuất mã nguồn sạch hơn, hỗ trợ thêm nhiều nền tảng frontend khác ngoài React và Vue.

Giá trị tham khảo

Đồ án có giá trị tham khảo thiết thực đối với:

  • Sinh viên các ngành Khoa học Máy tính, Công nghệ Thông tin, Kỹ thuật Phần mềm đang tìm kiếm tài liệu mẫu về quy trình phân tích và thiết kế hệ thống phần mềm hướng đối tượng theo chuẩn UML.
  • Những người phát triển các ứng dụng dạng công cụ kéo thả, web builder hoặc hệ thống quản lý nội dung (CMS).

Các nội dung có giá trị tham khảo nổi bật:

  • Hệ thống biểu đồ phân tích use case tại Chương 2: Phương pháp phân rã theo mô hình Boundary - Control - Entity, kết hợp đồng bộ giữa Biểu đồ lớp và Biểu đồ trình tự cho từng ca sử dụng cụ thể.
  • Giải pháp lưu trữ cấu trúc trang linh hoạt bằng cách kết hợp trường dữ liệu JSON (json) trong bảng quan hệ page, kết hợp mô hình phân quyền chia sẻ qua bảng trung gian page_user.

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

1. Ứng dụng Component Craft hỗ trợ người dùng xuất mã nguồn trang giao diện sang những định dạng nào?

Theo đặc tả tại use case xuất mã nguồn (Bảng 2.12, Hình 2.29, Hình 2.33 và Hình 3.13), ứng dụng cho phép người dùng lựa chọn và tải xuống mã nguồn giao diện theo hai tùy chọn framework là React hoặc Vue.

2. Cấu trúc dữ liệu của một trang giao diện được lưu trữ trong cơ sở dữ liệu như thế nào?

Theo thiết kế thực thể và bảng dữ liệu page (tiểu mục 2.7 và Bảng 2.18), trang giao diện được lưu trữ với các thuộc tính: id (mã định danh), name (tên trang), json (chuỗi định dạng JSON chứa toàn bộ cấu trúc các thành phần kéo thả), previewImage (ảnh chụp xem trước giao diện), privacy (chế độ công khai hoặc riêng tư), userId (mã người tạo) và modified_at (thời gian chỉnh sửa gần nhất).

3. Quy trình cấp lại mật khẩu cho tài khoản người dùng được hệ thống xử lý ra sao?

Căn cứ mô tả use case lấy lại mật khẩu (Bảng 2.5 và Biểu đồ trình tự Hình 2.24), người dùng nhập email tại giao diện đăng nhập. Lớp điều khiển LayLaiMatKhauController gọi phương thức getUserByEmail() để kiểm tra; nếu email tồn tại trong bảng user, hệ thống tạo mật khẩu mới ngẫu nhiên (random), cập nhật vào cơ sở dữ liệu qua setPassword() và tự động gửi thông tin mật khẩu mới này về email của người dùng.

4. Cơ chế chia sẻ và hợp tác chỉnh sửa trang giữa các người dùng được thiết kế như thế nào?

Dựa vào use case "Thêm người chỉnh sửa" (Bảng 2.13, Hình 2.16 và Hình 3.11), chủ sở hữu trang mở giao diện chia sẻ, nhập email người dùng muốn cộng tác. Hệ thống ghi nhận liên kết này vào bảng page_user, đồng thời tự động gửi email thông báo cấp quyền chỉnh sửa đến người được chọn. Người cộng tác sau đó có thể truy cập trang và thao tác thiết kế thông qua màn hình giao diện dành riêng cho người chỉnh sửa (Hình 3.12).

5. Vì sao phần đầu của tài liệu xuất hiện nội dung về đề tài tuyển dụng việc làm trực tuyến?

Đây là lỗi kỹ thuật sao chép/ghép văn bản trong quá trình hoàn thiện hồ sơ của tác giả. Hồ sơ có hai trang bìa (Khoa học Máy tính năm 2024 và Công nghệ Thông tin năm 2023). Phần Lời nói đầu và tiểu mục khảo sát đầu Chương 1 bị sao chép nhầm từ đồ án tuyển dụng, trong khi phần Mở đầu, toàn bộ Chương 2 (phân tích thiết kế 13 use case), Chương 3 (kết quả giao diện, kiểm thử) và hệ thống bảng biểu, hình ảnh đều hoàn toàn thuộc về ứng dụng Component Craft.

Kết luận

Đồ án tốt nghiệp của tác giả Bùi Văn Mạnh đã phân tích, thiết kế và xây dựng thành công ứng dụng hỗ trợ thiết kế giao diện website mang tên Component Craft dựa trên nền tảng ReactJS, Spring Boot và MySQL. Mặc dù văn bản tài liệu còn tồn tại sai sót kỹ thuật biên tập ở phần đầu, phần nội dung cốt lõi đã hoàn thành đầy đủ quy trình kỹ thuật phần mềm từ khảo sát yêu cầu, mô hình hóa 13 ca sử dụng bằng UML, thiết kế 5 bảng cơ sở dữ liệu quan hệ đến việc cài đặt giao diện kéo thả trực quan và kiểm thử chức năng. Ứng dụng đã giải quyết được yêu cầu thiết kế website trực quan cơ bản, cung cấp cơ chế hợp tác chia sẻ dự án và hỗ trợ xuất mã nguồn giao diện sang React và Vue.