Bối cảnh và vấn đề nghiên cứu
Trong môi trường giáo dục hiện đại, kỹ năng làm việc nhóm đóng vai trò quan trọng nhằm phát huy thế mạnh cá nhân và nâng cao hiệu suất học tập. Tuy nhiên, hoạt động nhóm truyền thống của học sinh, sinh viên tại Việt Nam đang đối mặt với nhiều bất cập thực tiễn:
- Tình trạng ỷ lại và thiếu trách nhiệm cá nhân: Xuất hiện tâm lý "cha chung không ai khóc", các thành viên đùn đẩy công việc vì cho rằng trách nhiệm thuộc về tập thể.
- Tổ chức và phân chia công việc thiếu minh bạch: Việc phân công nhiệm vụ chủ yếu qua trao đổi trực tiếp bằng lời nói, không được ghi nhận và lưu trữ cụ thể, dẫn đến nhầm lẫn hoặc trùng lặp công việc.
- Rào cản tâm lý trong giao tiếp: Sinh viên thường có tâm lý nể nang, ngại phát biểu ý kiến hoặc phản biện trực tiếp trước đám đông do sợ ảnh hưởng đến các mối quan hệ xã hội hoặc sợ bị trù dập.
- Ý thức kỷ luật chưa cao: Thói quen "giờ dây thun" trong các buổi họp mặt trực tiếp làm lãng phí thời gian của tập thể.
Đồng thời, sự phổ biến của điện thoại thông minh (smartphone) kết hợp kết nối mạng không dây đã mở ra cơ hội tối ưu hóa cách thức cộng tác. Xuất phát từ bối cảnh đó, đề tài "Xây dựng ứng dụng Kuro Team chạy trên nền tảng hệ điều hành Android để hỗ trợ và quản lí công việc nhóm" được tác giả Nguyễn Văn Mẫn thực hiện dưới sự hướng dẫn của PGS. Võ Trung Hùng tại Khoa Công nghệ Thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng (12/2019).
Mục tiêu và nhiệm vụ nghiên cứu:
- Nghiên cứu tổng quan lý thuyết về các ngôn ngữ lập trình Ruby, Kotlin, framework Ruby on Rails và dịch vụ gửi tin nhắn đám mây Firebase Cloud Messaging (FCM).
- Khảo sát hiện trạng, thu thập và phân tích yêu cầu của các nhóm người dùng nhằm xác định các ca sử dụng (Use-Case) và quy trình hoạt động của hệ thống.
- Thiết kế kiến trúc tổng thể, mô hình hóa dữ liệu quan hệ trên hệ quản trị PostgreSQL và các sơ đồ lớp, sơ đồ hoạt động.
- Xây dựng dịch vụ máy chủ cung cấp RESTful API và kênh truyền thông thời gian thực (WebSocket qua Action Cable).
- Phát triển ứng dụng khách trên hệ điều hành Android bằng ngôn ngữ Kotlin, tích hợp thông báo đẩy qua FCM.
- Cài đặt thử nghiệm, kiểm thử chức năng và đánh giá kết quả thực hiện.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Ứng dụng hỗ trợ và quản lý công việc nhóm trên thiết bị di động (Kuro Team).
- Phạm vi không gian và đối tượng phục vụ: Nhóm học sinh, sinh viên hoặc các đội nhóm có quy mô vừa và nhỏ (nhóm học tập, làm bài tập thuyết trình, sinh hoạt cộng đồng).
- Phạm vi công nghệ: Nền tảng di động Android (Client) và máy chủ Web API trên nền tảng Ruby on Rails kết nối cơ sở dữ liệu PostgreSQL.
Cơ sở lý thuyết và phương pháp
Đồ án ứng dụng phương pháp phân tích thiết kế hệ thống hướng đối tượng (OOAD), mô hình hóa thông qua hệ thống biểu đồ UML và xây dựng phần mềm theo mô hình Client - Server phân tán:
1. Nền tảng phía máy chủ (Backend)
- Ngôn ngữ Ruby và Framework Ruby on Rails: Ruby là ngôn ngữ kịch bản hướng đối tượng thuần túy do Yukihiro Matsumoto phát triển. Ruby on Rails (RoR) do David Heinemeier Hansson sáng lập năm 2005, vận hành theo mô hình kiến trúc MVC (Model-View-Controller), tuân thủ nguyên lý DRY (Don't Repeat Yourself) và quy ước cấu hình (Convention over Configuration).
- Cơ chế thời gian thực với Action Cable: Khắc phục hạn chế đóng ngắt liên tục của giao thức HTTP truyền thống, RoR tích hợp Action Cable dựa trên giao thức WebSocket, cho phép thiết lập kết nối hai chiều bền vững (two-way persistent connection) giữa client và server để truyền phát dữ liệu tức thời dạng kênh (channels).
2. Nền tảng phía ứng dụng di động (Android Client)
- Ngôn ngữ lập trình Kotlin: Ngôn ngữ tĩnh chạy trên máy ảo Java (JVM) do JetBrains phát triển và được Google công nhận là ngôn ngữ chính thức cho Android từ năm 2017. Kotlin cung cấp cơ chế an toàn bộ nhớ (Null Safety), giảm thiểu lỗi
NullPointerException, hỗ trợ cú pháp ngắn gọn với Data Classes và tương thích 100% với hệ sinh thái mã nguồn Java.
3. Dịch vụ truyền thông báo Firebase Cloud Messaging (FCM)
Hệ thống sử dụng FCM của Google để gửi thông báo đẩy đến thiết bị người dùng dựa trên device_token. Dịch vụ phân tách hai định dạng thông điệp:
- Notification messages: Hiển thị trực tiếp lên khay hệ thống, do FCM SDK tự động quản lý.
- Data messages: Chứa dữ liệu dạng cặp key-value do ứng dụng tự xử lý tùy biến thông qua phương thức
onMessageReceived() trong FirebaseMessagingService.
| Trạng thái ứng dụng |
Notification messages |
Data messages |
| Foreground (Đang mở) |
onMessageReceived() |
onMessageReceived() |
| Background (Chạy ngầm) |
Khay hệ thống |
onMessageReceived() |
Thiết kế và triển khai
Hệ thống được thiết kế theo mô hình kiến trúc phân tầng gồm 3 khối thành phần:
[ Android Client (Kotlin) ] <== HTTP / RESTful API ==> [ Rails Server (RoR) ] <==> [ PostgreSQL DB ]
[ Android Client (Kotlin) ] <===== WebSocket ======> [ Action Cable ]
[ Android Client (Kotlin) ] <====== FCM Push ======= [ Firebase Cloud Messaging ]
1. Kiến trúc phân quyền và ca sử dụng (Use-Case)
Hệ thống xác định 3 tác nhân chính:
- Khách (Guest): Người dùng chưa có tài khoản; có quyền thực hiện chức năng đăng ký tài khoản mới.
- Người dùng bình thường (Normal User): Đăng nhập, đăng xuất, quản lý thông tin cá nhân (ảnh đại diện, tên, ngày sinh, số điện thoại, địa chỉ, giới tính); tìm kiếm và gửi yêu cầu gia nhập nhóm; đồng ý/từ chối lời mời vào nhóm; xem danh sách bảng công việc, ghi chú, lịch hẹn; tạo và cập nhật trạng thái công việc (Todo, Doing, Done); đính kèm tệp tin/hình ảnh; nhận xét công việc; gửi tin nhắn trò chuyện nhóm và nhận thông báo.
- Trưởng nhóm (Team Leader): Sở hữu toàn bộ quyền của người dùng bình thường, bổ sung các quyền quản trị: tạo và chỉnh sửa thông tin nhóm (tên, mô tả, ảnh đại diện, chế độ công khai/bí mật); mời thành viên, duyệt/xóa yêu cầu tham gia; tạo mới, cập nhật hoặc xóa các bảng công việc, ghi chú và lịch hẹn của nhóm.
2. Thiết kế cơ sở dữ liệu quan hệ (PostgreSQL)
Cơ sở dữ liệu bao gồm 12 bảng lưu trữ được chuẩn hóa:
| Tên bảng |
Mô tả chức năng |
users |
Lưu thông tin định danh người dùng, mật khẩu mã hóa (password_digest) và mảng device_tokens. |
teams |
Lưu trữ thông tin nhóm, trạng thái riêng tư (is_private), ảnh đại diện và mô tả. |
user_teams |
Bảng trung gian quản lý quan hệ người dùng - nhóm, cờ quyền trưởng nhóm (is_owner), trạng thái kích hoạt (is_activated) và trạng thái lời mời (is_invited). |
boards |
Lưu danh mục các bảng công việc thuộc về từng nhóm (team_id). |
tasks |
Quản lý nhiệm vụ: tiêu đề, mô tả, thời gian bắt đầu (start_at), kết thúc (end_at), trạng thái (status: todo, doing, done), người tạo (creator_id), người thực hiện (assignee_id) và mảng người theo dõi (following_ids). |
sub_tasks |
Quản lý các đầu việc con trực thuộc bảng tasks. |
notes |
Lưu trữ ghi chú văn bản của nhóm. |
appointments |
Lưu trữ lịch hẹn: mô tả, địa điểm, thời gian và ghi chú cuộc hẹn. |
comments |
Quản lý các bình luận, phản hồi của thành viên bên dưới từng công việc. |
attachments |
Quản lý tệp đính kèm (source, source_type: image, video, document, other). |
chat_messages |
Lưu trữ nội dung tin nhắn trao đổi trong nhóm. |
notifications |
Lưu trữ các thông báo phát sinh từ sự kiện cập nhật công việc, ghi chú hoặc lịch hẹn. |
3. Môi trường triển khai và công cụ phát triển
- Hệ điều hành máy chủ: Ubuntu 16.04.
- Nền tảng thực thi backend: Ruby 2.5 (quản lý qua
rbenv), Ruby on Rails 6.0, Bundler.
- Hệ quản trị cơ sở dữ liệu: PostgreSQL 11 và thư viện kết nối
libpq-dev.
- Dịch vụ lưu trữ máy chủ: Heroku.
- Quản lý mã nguồn: Bitbucket (mã nguồn máy chủ Rails) và GitHub (mã nguồn ứng dụng Android).
- Môi trường phát triển tích hợp (IDE): Android Studio, Visual Studio Code, Valentina Studio.
Nội dung chính theo từng chương
Mở đầu
Trình bày tổng quan về sự bùng nổ của công nghệ di động và tầm quan trọng của smartphone trong đời sống; phân tích ý nghĩa của việc chuyển đổi phương thức làm việc nhóm từ truyền thống sang số hóa nhằm nâng cao hiệu quả hoạt động của học sinh, sinh viên; xác định mục tiêu, phạm vi chức năng và bố cục 3 chương của đồ án.
Chương I: Ngôn ngữ lập trình và công cụ sử dụng
Tập trung phân tích nền tảng lý thuyết và công nghệ được lựa chọn:
- Khái quát lịch sử, ưu nhược điểm của ngôn ngữ Ruby và các nguyên lý cốt lõi của framework Ruby on Rails (mô hình MVC, nguyên lý DRY, quy ước cấu hình).
- Cơ chế truyền thông hai chiều giữa HTTP và WebSocket, cấu trúc thư mục
channels và cơ chế vận hành của Action Cable trong việc xử lý dữ liệu thời gian thực.
- Khảo sát ngôn ngữ Kotlin: tính năng gõ tĩnh, cú pháp rút gọn của Data Classes, cơ chế tương thích với Java Virtual Machine (JVM) và khả năng hạn chế ngoại lệ con trỏ rỗng.
- Cấu trúc và nguyên lý gửi nhận thông báo đa nền tảng thông qua Firebase Cloud Messaging (FCM), phân biệt luồng xử lý giữa Notification messages và Data messages.
Chương II: Phân tích và thiết kế hệ thống
Đi sâu vào mô hình hóa bài toán quản trị nhóm:
- Phân tích hiện trạng tâm lý và rào cản làm việc nhóm của sinh viên Việt Nam, từ đó đề xuất giải pháp cải thiện bằng giao diện bảng công việc và kênh trao đổi trên smartphone.
- Phân loại yêu cầu nghiệp vụ chi tiết cho 3 nhóm tác nhân (Khách, Người dùng bình thường, Trưởng nhóm).
- Xây dựng hệ thống sơ đồ Use-Case tổng quát và chi tiết cho từng chức năng (đăng ký, đăng nhập, quản lý yêu cầu, quản lý thông tin, quản lý công việc, quản lý thành viên, ghi chú, cuộc hẹn).
- Thiết lập các biểu đồ hoạt động (Activity Diagram) cho 5 quy trình cốt lõi: xin gia nhập nhóm, mời thành viên, gửi tin nhắn nhóm tức thời, tạo mới công việc và cập nhật tiến độ công việc.
- Thiết kế biểu đồ lớp (Class Diagram) và sơ đồ kiến trúc hệ thống 3 tầng kết nối giữa Android Client, Rails Web API Server, Action Cable, FCM và cơ sở dữ liệu PostgreSQL.
Chương III: Xây dựng, thử nghiệm và đánh giá
Mô tả chi tiết quá trình hiện thực hóa giải pháp phần mềm:
- Hướng dẫn thiết lập môi trường phát triển trên Ubuntu 16.04 (cài đặt gói hệ thống,
rbenv, Ruby 2.5, Rails 6.0, PostgreSQL 11).
- Trình bày lược đồ quan hệ và cấu trúc chi tiết của 12 bảng dữ liệu trong hệ thống.
- Xây dựng hệ thống Web API phục vụ trao đổi dữ liệu định dạng JSON và cấu hình kênh WebSocket cho tính năng trò chuyện.
- Phát triển giao diện và logic ứng dụng Android bằng Kotlin, bao gồm các màn hình chính: đăng nhập/đăng ký, thông tin cá nhân, tìm kiếm/gia nhập nhóm, tạo nhóm, cập nhật thông tin nhóm, mời thành viên, tạo bảng công việc/ghi chú/cuộc hẹn, danh sách và chi tiết công việc, màn hình cập nhật trạng thái (Todo/Doing/Done), giao diện trò chuyện nhóm và trung tâm thông báo.
- Đánh giá kết quả đạt được sau khi biên dịch, chạy thực nghiệm hệ thống và đề xuất các hướng mở rộng trong tương lai.
Kết quả và đóng góp
1. Kết quả kỹ thuật đạt được
- Xây dựng hoàn chỉnh ứng dụng di động Kuro Team chạy trên hệ điều hành Android, có khả năng tương tác ổn định với hệ thống máy chủ backend.
- Xây dựng thành công hệ thống dịch vụ RESTful API trên framework Ruby on Rails kết hợp cơ sở dữ liệu PostgreSQL, lưu trữ và vận hành trên nền tảng đám mây Heroku.
- Triển khai thành công tính năng trao đổi tin nhắn tức thời (real-time chat) thông qua Action Cable (WebSocket) và hệ thống thông báo đẩy (push notifications) thông qua dịch vụ FCM.
- Hoàn thiện đầy đủ các chức năng quản lý nhóm: phân chia công việc theo trạng thái rõ ràng, phân công nhiệm vụ cụ thể cho từng thành viên, hỗ trợ theo dõi tiến độ, tạo ghi chú và thiết lập lịch hẹn tập trung.
2. Đóng góp thực tiễn của đề tài
- Cung cấp một công cụ hỗ trợ cộng tác phù hợp với thói quen sử dụng điện thoại thông minh của học sinh, sinh viên, giúp tiết kiệm thời gian quản lý.
- Giải quyết các vấn đề tồn đọng của phương thức làm việc nhóm truyền thống: minh bạch hóa nhiệm vụ để triệt tiêu tình trạng ỷ lại; tạo môi trường thảo luận trực tuyến giúp người học vượt qua rào cản tâm lý e ngại đám đông; cập nhật thông báo tức thời nhằm loại bỏ tình trạng chậm trễ thông tin.
Hạn chế và hướng nghiên cứu tiếp
1. Hạn chế
- Ứng dụng mới chỉ được xây dựng và triển khai trên nền tảng hệ điều hành Android, chưa hỗ trợ nền tảng iOS hoặc phiên bản giao diện Web đồng bộ cho người dùng máy tính.
- Phạm vi thiết kế và thử nghiệm tập trung chủ yếu vào các nhóm học tập quy mô vừa và nhỏ; chưa kiểm thử hiệu năng với các tổ chức có quy mô lớn hoặc lượng dữ liệu trao đổi đồng thời cao.
2. Hướng phát triển
- Mở rộng ứng dụng sang các hệ điều hành di động khác (đặc biệt là iOS) hoặc phát triển phiên bản Web đồng bộ.
- Bổ sung và tối ưu hóa các tính năng nâng cao như gọi thoại/gọi video trực tuyến trong nhóm, chia sẻ và biên tập tài liệu trực tiếp, tích hợp công cụ biểu đồ theo dõi tiến độ tự động (Gantt chart, Burndown chart).
- Nâng cấp giao diện người dùng và tối ưu hóa trải nghiệm tương tác trên nhiều kích thước màn hình thiết bị khác nhau.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho các nhóm đối tượng sau:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Cung cấp tài liệu mẫu về quy trình hoàn chỉnh xây dựng một hệ thống phần mềm Client - Server, từ khâu khảo sát nghiệp vụ, phân tích thiết kế hướng đối tượng (Use-Case, Activity Diagram, Class Diagram) đến lập trình thực tế.
- Lập trình viên phát triển ứng dụng di động Android: Tham khảo cấu trúc mã nguồn và phương pháp sử dụng ngôn ngữ Kotlin để xây dựng giao diện người dùng, kết nối Web API và tích hợp Firebase Cloud Messaging.
- Lập trình viên backend Ruby on Rails: Cung cấp kiến thức thực tế về việc thiết kế cơ sở dữ liệu quan hệ PostgreSQL chuẩn hóa, xây dựng API RESTful và cấu hình Action Cable để xử lý luồng dữ liệu thời gian thực (WebSocket).
Câu hỏi thường gặp
1. Hệ thống Kuro Team xử lý tính năng trò chuyện thời gian thực (Real-time Chat) như thế nào?
Hệ thống sử dụng tính năng Action Cable tích hợp sẵn trong Ruby on Rails (từ phiên bản 5 trở lên). Khác với giao thức HTTP truyền thống yêu cầu client gửi yêu cầu liên tục, Action Cable thiết lập một kết nối WebSocket hai chiều bền vững duy nhất giữa client và server. Khi một người dùng gửi tin nhắn, máy chủ Rails sẽ xử lý lưu trữ vào bảng chat_messages và thực hiện broadcast (truyền phát) dữ liệu tức thời đến tất cả các thiết bị client đang đăng ký cùng kênh (channel) trò chuyện của nhóm.
2. Cơ chế phân biệt và xử lý thông báo của Firebase Cloud Messaging (FCM) trong ứng dụng ra sao?
FCM chia thông điệp thành 2 loại: Notification messages (thông báo hiển thị, do hệ thống tự động đưa lên khay thông báo khi ứng dụng chạy ngầm) và Data messages (thông điệp dữ liệu tùy biến dạng key-value). Trong ứng dụng Android, tác giả xây dựng một service kế thừa FirebaseMessagingService và ghi đè phương thức onMessageReceived(). Nếu ứng dụng đang mở (Foreground), mọi thông điệp đều chuyển vào phương thức này để xử lý giao diện; nếu ứng dụng đang ở chế độ ngầm (Background), phần Notification sẽ do hệ điều hành đưa lên thanh trạng thái, còn phần Data sẽ được chuyển tiếp khi người dùng chạm vào thông báo.
3. Hệ thống phân chia quyền hạn giữa Trưởng nhóm và Người dùng bình thường như thế nào?
Người dùng bình thường có thể tạo/chỉnh sửa công việc trong bảng, bình luận, đính kèm tệp, đổi trạng thái công việc và tham gia trò chuyện nhóm. Trưởng nhóm có toàn bộ quyền của người dùng bình thường, đồng thời có thêm các quyền quản trị đặc thù: tạo nhóm, sửa thông tin nhóm (tên, mô tả, ảnh đại diện, chế độ riêng tư), mời thành viên mới, phê duyệt hoặc từ chối yêu cầu xin gia nhập nhóm, cũng như tạo mới, chỉnh sửa hoặc xóa bỏ các bảng công việc, ghi chú và lịch hẹn của nhóm.
4. Cơ sở dữ liệu PostgreSQL của đồ án quản lý mối quan hệ giữa người dùng và nhóm bằng cấu trúc nào?
Hệ thống sử dụng bảng trung gian user_teams để liên kết giữa bảng users và bảng teams. Bảng này lưu trữ khóa ngoại user_id và team_id, đồng thời chứa các cờ trạng thái logic quan trọng: is_owner (xác định người dùng có phải trưởng nhóm hay không), is_activated (trạng thái thành viên đã được kích hoạt hay chưa) và is_invited (phân biệt bản ghi phát sinh do trưởng nhóm chủ động mời hay do người dùng tự gửi yêu cầu gia nhập).
5. Toàn bộ hạ tầng công nghệ và mã nguồn của đồ án được triển khai trên những nền tảng nào?
Phần máy chủ backend được phát triển bằng Ruby 2.5 và Rails 6.0 trên hệ điều hành Ubuntu 16.04, sử dụng cơ sở dữ liệu PostgreSQL 11 và được lưu trữ trên nền tảng đám mây Heroku. Phần ứng dụng khách được viết bằng ngôn ngữ Kotlin trên môi trường Android Studio. Mã nguồn dự án được phân tách và quản lý phiên bản trên hai kho lưu trữ: Bitbucket dành cho mã nguồn phía máy chủ (Ruby on Rails) và GitHub dành cho mã nguồn ứng dụng di động Android.
Kết luận
Đồ án tốt nghiệp của sinh viên Nguyễn Văn Mẫn đã hoàn thành trọn vẹn mục tiêu nghiên cứu và xây dựng ứng dụng "Kuro Team" nhằm hỗ trợ và quản lý công việc nhóm học sinh, sinh viên trên nền tảng Android. Bằng việc kết hợp ngôn ngữ Kotlin cho ứng dụng di động cùng hệ thống backend Ruby on Rails, Action Cable và dịch vụ Firebase Cloud Messaging, hệ thống đã giải quyết hiệu quả các rào cản cố hữu trong hoạt động làm việc nhóm truyền thống. Báo cáo đồ án được cấu trúc mạch lạc, chuẩn mực từ khâu phân tích thiết kế hướng đối tượng đến hiện thực hóa kỹ thuật, đóng vai trò là tài liệu tham khảo có giá trị chuyên môn cao cho sinh viên ngành Công nghệ thông tin.