Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và hội nhập quốc tế, tiếng Anh đã trở thành kỹ năng thiết yếu trong học tập và việc làm. Tại Việt Nam, chứng chỉ TOEIC (Test of English for International Communication) được áp dụng rộng rãi làm chuẩn đầu ra tại hơn 85% các trường đại học, cao đẳng cũng như tiêu chuẩn tuyển dụng, xét duyệt tăng lương tại hầu hết các doanh nghiệp. Tuy nhiên, rào cản chi phí luyện thi tại trung tâm cùng sự thiếu hụt phương pháp tự học linh hoạt, cá nhân hóa đã tạo ra nhu cầu cấp thiết cho các giải pháp học tập số hóa.

Theo báo cáo của Nielsen Việt Nam và Gartner, tỷ lệ người sử dụng điện thoại thông minh chiếm tới 84% tổng số người dùng thiết bị di động, trong đó hệ điều hành Android chiếm lĩnh hơn 86% thị phần toàn cầu. Người dùng dành trung bình 7 giờ mỗi ngày trên Internet qua các thiết bị di động. Nhằm tận dụng nền tảng này, đề tài "Xây dựng ứng dụng luyện thi TOEIC trên Android" được thực hiện bởi nhóm tác giả tại Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn.

Vấn đề thực tế và rào cản

  • Sự phân mảnh kiến thức: Đa số tài liệu luyện thi ở dạng sách giấy tĩnh hoặc tệp PDF/Audio rời rạc, không có cơ chế đo lường tiến độ tự động.
  • Hạn chế của ứng dụng hiện hành: Các app miễn phí trên thị trường thường chỉ hỗ trợ một số phần đọc (Reading Part 5, 6), thiếu audio nghe trực tiếp chất lượng cao (Part 1 - 4), hoặc thiếu hệ thống CMS (Content Management System) độc lập để cập nhật ngân hàng đề thi.
  • Thiếu tương tác và động lực học tập: Tỷ lệ bỏ học giữa chừng cao do việc học từ vựng khô khan, thiếu cơ chế nhắc nhở thông minh và trò chơi hóa (Gamification).

Mục tiêu của dự án

  1. Nghiên cứu kiến trúc hệ điều hành Android, cơ chế phân tầng máy ảo Android Runtime (ART/Dalvik) và chu trình vòng đời ứng dụng (Activity Lifecycle).
  2. Tích hợp nền tảng Backend-as-a-Service (BaaS) Google Firebase (Firebase Realtime Database, Firebase Authentication) nhằm đồng bộ hóa dữ liệu thời gian thực.
  3. Thiết kế và phát triển toàn diện mô-đun ôn luyện 7 phần thi chuẩn TOEIC (Listening: Part 1 - 4; Reading: Part 5 - 7) kèm giải thích chi tiết.
  4. Triển khai phương pháp học từ vựng tương tác cao qua Flashcard, trò chơi ghép từ (Mini-Game), thuật toán lọc "Từ khó" (Spaced Repetition) và chế độ thử thách "3 mạng sống".
  5. Xây dựng phần mềm quản trị độc lập trên Windows bằng JavaFX để quản lý nội dung đề thi, từ vựng và bài tập mà không cần can thiệp trực tiếp vào mã nguồn ứng dụng.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng mô hình kiến trúc lai (Hybrid Client-Cloud Architecture): Android Native Client kết hợp BaaS Firebase và cơ sở dữ liệu nội bộ SQLite trên máy khách. Mục tiêu là đạt thời gian phản hồi giao diện dưới 200ms, tỷ lệ đồng bộ dữ liệu Realtime Database đạt 99.8%, và hỗ trợ ghi nhớ từ vựng tăng 40% so với phương pháp ghi chép truyền thống.


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

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

Khảo sát các ứng dụng luyện thi TOEIC phổ biến trên Google Play Store cho thấy các ưu và nhược điểm rõ rệt:

Tiêu chí TOEIC Practice (NTStudio) TOEIC Test - TFLAT Giải pháp của Đề tài
Phạm vi kỹ năng Chỉ hỗ trợ phần Reading (Part 5, 6) Đầy đủ 7 Part, nhiều từ vựng Đầy đủ 7 Part chuẩn đề thi ETS
Thi thử (Full/Mini Test) Chỉ có bài tập ngắn Không có chế độ Full Test chuẩn Hỗ trợ Full Test (120p) & Mini Test (40p)
Hệ thống Quản trị (CMS) Dữ liệu nhúng tĩnh trong APK Dữ liệu nhúng tĩnh CMS Desktop JavaFX kết nối Firebase
Cơ chế Gamification Không có Có game đơn giản, không giới hạn Game sinh tồn 3 mạng, xếp chữ tính điểm
Lưu trữ tiến độ Lưu cục bộ trên thiết bị Cục bộ / Đăng nhập cơ bản Đồng bộ Cloud Firebase + Local SQLite
                Phân loại yêu cầu người dùng theo mô hình MoSCoW

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống gồm 3 phân hệ chính:

  1. Android Client (Mobile App): Xây dựng bằng Java Native, giao tiếp với Firebase qua Firebase SDK và lưu trữ cấu hình, lịch sử điểm thi trên SQLite nội bộ.
  2. Backend as a Service (Google Firebase): Cung cấp Realtime Database (cấu trúc cây NoSQL JSON), xác thực người dùng (Firebase Auth) và Firebase Cloud Storage lưu trữ Audio MP3/Hình ảnh đề thi.
  3. Admin Management System (Desktop App): Xây dựng bằng JavaFX, cho phép quản trị viên thêm, sửa, xóa dữ liệu câu hỏi và từ vựng theo thời gian thực.

Ngăn xếp công nghệ (Technology Stack)

  • Mobile Client: Android SDK (API Level 21 - 28, Android 5.0 đến 9.0), Ngôn ngữ Java 8.
  • Desktop CMS: Java SE Runtime Environment 8, JavaFX SDK.
  • Cloud Infrastructure: Google Firebase Realtime Database, Firebase Authentication API, Firebase Storage.
  • Local Storage & Utilities: SQLite 3, Android AlarmManager, BroadcastReceiver, MediaPlayer.
  • Giao thức bảo mật: Mã hóa đường truyền SSL/TLS với chứng chỉ 2048-bit, Firebase Security Rules xác thực phân quyền dữ liệu.

Thiết kế cơ sở dữ liệu NoSQL (Firebase JSON Schema)

Cấu trúc cơ sở dữ liệu trên Firebase Realtime Database được tổ chức theo dạng cây phân cấp NoSQL JSON:

{
  "Users": {
    "$userId": {
      "email": "student@hcmute.edu.vn",
      "displayName": "Doan Thanh Thang",
      "createdAt": 1561766400000,
      "HardWords": {
        "$wordId": { "word": "negotiate", "wrongCount": 3 }
      }
    }
  },
  "Part1_Practice": {
    "$questionId": {
      "imageUrl": "https://firebasestorage.googleapis.com/.../img01.png",
      "audioUrl": "https://firebasestorage.googleapis.com/.../aud01.mp3",
      "answerA": "A. He is holding a pen.",
      "answerB": "B. He is looking at the monitor.",
      "answerC": "C. He is typing on a keyboard.",
      "answerD": "D. He is writing in a notebook.",
      "correctAnswer": "B",
      "script": "Full transcript and translation..."
    }
  },
  "Grammar": {
    "$grammarId": {
      "title": "Present Simple Tense",
      "theory": "Markdown/HTML Content of theory...",
      "level": "Easy",
      "questions": {
        "q1": { "content": "She ___ to school every day.", "ans": "goes", "choices": ["go", "goes", "gone", "going"] }
      }
    }
  }
}

Trên thiết bị di động, cơ sở dữ liệu SQLite quản lý các bảng:

  • Score (id, examId, scoreListening, scoreReading, totalScore, completedDate)
  • AlarmExam (id, timeHour, timeMinute, isRepeat, status)
  • AlarmVocabulary (id, timeHour, timeMinute, interval, status)

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm lặp (Iterative & Agile Development) kéo dài 15 tuần (từ 18/03/2019 đến 29/06/2019) với 5 giai đoạn chính:

Tuần 1-2   : Thiết lập môi trường Git VCS, kiến trúc Firebase, UI cơ bản, chức năng Cài đặt.
Tuần 3-6   : Phát triển mô-đun Luyện tập Part 1, 2, 3, 4 (Listening) & Giao diện Admin.
Tuần 7-9   : Hoàn thiện mô-đun Luyện tập Part 5, 6 (Reading) & Module Học Từ vựng/Ngữ pháp.
Tuần 10-13 : Phát triển mô-đun Part 7, Mini Test, Full Test & Tích hợp xác thực mạng xã hội.
Tuần 14-15 : Kiểm thử tích hợp trên máy ảo và thiết bị thật, tối ưu hiệu năng, đóng gói APK.

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

1. Thuật toán Ôn tập Từ vựng theo cơ chế Sinh tồn (3 Mạng sống)

Chế độ "Ôn tập lại từ đã học" sử dụng thuật toán đếm ngược thời gian và trừ mạng sống nhằm rèn luyện phản xạ nhanh. Dữ liệu từ vựng được lấy từ node Vocabulary của người dùng.

public class VocabularyReviewManager {
    private int currentLife = 3;
    private final int MAX_LIFE = 3;
    private int consecutiveCorrect = 0;
    private int currentProcess = 0;
    private static final int TOTAL_QUESTIONS = 30;

    public void handleAnswerSubmission(boolean isCorrect) {
        if (isCorrect) {
            consecutiveCorrect++;
            currentProcess++;
            // Thưởng thêm mạng khi trả lời đúng liên tiếp 5 câu
            if (consecutiveCorrect % 5 == 0 && currentLife < MAX_LIFE) {
                currentLife++;
            }
        } else {
            consecutiveCorrect = 0;
            currentLife--;
        }

        if (currentLife <= 0 || currentProcess >= TOTAL_QUESTIONS) {
            terminateSession(currentProcess, currentLife > 0);
        }
    }

    private void terminateSession(int score, boolean passed) {
        // Lưu tỷ lệ hoàn thành lên Firebase và hiển thị thông báo tổng kết
        DatabaseReference userRef = FirebaseDatabase.getInstance()
                .getReference("Users").child(CurrentSession.getUserId()).child("Summary");
        userRef.child("vocabCompletionRate").setValue((score * 100) / TOTAL_QUESTIONS);
    }
}

2. Xử lý đồng bộ Firebase Realtime Listener trong Android

Để tải câu hỏi luyện thi Part 1 và phát Audio đồng thời hiển thị hình ảnh mượt mà:

DatabaseReference part1Ref = FirebaseDatabase.getInstance().getReference("Part1_Practice");
part1Ref.limitToFirst(20).addListenerForSingleValueEvent(new ValueEventListener>() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        List<Part1Question> questions = new ArrayList<>();
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            Part1Question q = snapshot.getValue(Part1Question.class);
            if (q != null) questions.add(q);
        }
        renderQuestionUI(questions.get(currentIndex));
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.e("FirebaseError", "Lỗi tải câu hỏi: " + databaseError.getMessage());
    }
});

Kiểm thử và đánh giá chất lượng (Testing & Validation)

Hệ thống được kiểm thử toàn diện thông qua kiểm thử đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) và kiểm thử chấp nhận người dùng (UAT) trên các thiết bị thực tế (Samsung Galaxy S8, Xiaomi Redmi Note 5, Sony Xperia Z5 chạy từ Android 6.0 đến Android 9.0).

                      Tỷ lệ bao phủ kiểm thử (Test Coverage)

Trích dẫn Test Case tiêu biểu

ID Chức năng kiểm thử Điều kiện đầu vào Kết quả mong đợi Trạng thái
TC01 Học từ mới (Kéo thả ký tự) Kéo thả đúng thứ tự chữ cái "P-R-A-C-T-I-C-E" Tăng thanh tiến độ lên 1 bước, chuyển câu hỏi kế tiếp PASS
TC02 Thêm vào danh sách từ khó Người dùng trả lời sai một từ vựng > 2 lần ID từ vựng được tự động đẩy vào node Users/{id}/HardWords PASS
TC03 Hết giờ làm bài Full Test Hết 120 phút (45p Nghe + 75p Đọc) Hệ thống tự động thu bài, tính điểm Listening/Reading và lưu SQLite PASS
TC04 Cập nhật câu hỏi từ CMS Admin thêm câu hỏi Part 3 trên JavaFX Firebase ghi nhận và hiển thị ngay trên Mobile Client PASS

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

  • Mức độ hoàn thiện tính năng: Hoàn thành 100% các chức năng đề ra trong đề cương khóa luận (Học từ mới, Ôn tập, Ngữ pháp, Luyện 7 Part, Full Test, Mini Test, Đăng nhập MXH, Quản trị CMS).
  • Hiệu năng hệ thống:
    • Dung lượng bộ nhớ RAM trung bình khi chạy: 45MB – 65MB.
    • Tốc độ truy xuất câu hỏi từ Firebase Realtime Database: $\approx 180\text{ms}$ qua Wi-Fi và $\approx 320\text{ms}$ qua mạng 4G LTE.
    • Mức tiêu hao năng lượng pin: Dưới 3.5% cho mỗi 45 phút nghe/làm bài liên tục.
  • Đánh giá trải nghiệm người dùng (UAT): Thử nghiệm trên nhóm 35 sinh viên luyện thi TOEIC tại HCMUTE cho điểm đánh giá trung bình đạt 4.6 / 5.0 về độ mượt mà và tính tiện ích của tính năng nhắc học tự động.

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

  1. Kiến trúc Hybrid Cloud-Edge Caching: Kết hợp linh hoạt giữa Google Firebase Realtime NoSQL và SQLite local giúp giảm 35% băng thông tiêu thụ, hỗ trợ lưu lịch sử bài thi và cài đặt báo thức ngay cả khi mất kết nối mạng.
  2. Cơ chế Gamification nâng cao hiệu suất ghi nhớ: Áp dụng thuật toán theo dõi số lần sai để tự động chuyển vào danh sách "Từ khó" (Spaced Repetition cá nhân hóa), kết hợp chế độ sinh tồn "3 mạng sống" giúp giảm 40% tỷ lệ nản chí so với cách học Flashcard thụ động.
  3. Mô hình Quản trị CMS độc lập (JavaFX): Tách biệt hoàn toàn tầng quản trị dữ liệu học tập ra khỏi ứng dụng di động, cho phép giáo viên/quản trị viên cập nhật ngân hàng câu hỏi, tải lên tệp âm thanh và hình ảnh theo thời gian thực mà không cần phát hành lại file APK lên Google Play.

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

Kịch bản sử dụng trong thực tế

  • Sinh viên đại học tự ôn luyện: Luyện nhanh từng phần yếu (ví dụ: nghe Part 3 Hội thoại hoặc đọc Part 7 Đoạn văn) trong thời gian rảnh giữa các tiết học.
  • Người đi làm chuẩn bị thi chứng chỉ: Sử dụng chế độ Mini Test (40 phút) trong giờ nghỉ trưa để duy trì phản xạ đề thi thực tế.
  • Trung tâm ngoại ngữ: Triển khai ứng dụng quản trị JavaFX để cấp quyền cho trợ giảng cập nhật ngân hàng đề thi hàng tuần cho học viên.

Yêu cầu triển khai và khả năng mở rộng

  • Phía máy khách: Thiết bị chạy Android 5.0 (Lollipop) trở lên, tối thiểu 1GB RAM, bộ nhớ trống 150MB.
  • Phía máy chủ (Firebase): Kiến trúc serverless tự động mở rộng theo lưu lượng truy cập, sẵn sàng chịu tải từ 10.000 đến 100.000 người dùng đồng thời mà không cần cấu hình cụm máy chủ vật lý.
  • Chi phí vận hành: Tiết kiệm 100% chi phí máy chủ trong giai đoạn đầu nhờ gói dịch vụ Spark miễn phí từ Google Firebase.

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

Hạn chế còn tồn tại

  • Giao diện một số màn hình trò chơi luyện từ vựng còn đơn giản, chưa tích hợp nhiều hiệu ứng đồ họa 2D động.
  • Ứng dụng chỉ tập trung vào 2 kỹ năng Listening và Reading, chưa hỗ trợ kiểm tra phát âm TOEIC Speaking hoặc chấm bài viết TOEIC Writing.
  • Ứng dụng quản trị JavaFX hiện mới chỉ hỗ trợ nền tảng hệ điều hành Windows.

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

  • Di chuyển sang Flutter / Kotlin Multiplatform: Xây dựng phiên bản đa nền tảng chạy đồng thời trên cả Android và iOS.
  • Tích hợp Trí tuệ nhân tạo (AI Engine): Ứng dụng Speech-to-Text để chấm điểm phát âm tiếng Anh và thuật toán AI gợi ý lộ trình học tập cá nhân hóa dựa trên điểm yếu của từng học viên.
  • Web-based CMS: Nâng cấp hệ thống quản trị từ JavaFX Desktop sang ứng dụng Web (ReactJS / Vue.js) để quản trị viên có thể cập nhật dữ liệu trên mọi trình duyệt.

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

                              Bảng phân tích đối tượng hưởng lợi

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

1. Ứng dụng yêu cầu cấu hình phần cứng và phần mềm như thế nào để vận hành?

Ứng dụng di động tương thích với tất cả các thiết bị Android từ phiên bản 5.0 (API Level 21) trở lên, yêu cầu tối thiểu 1GB RAM và kết nối Internet để đồng bộ đề thi. Đối với ứng dụng quản trị Desktop, máy tính cần cài đặt Java Runtime Environment (JRE) phiên bản 8 trở lên trên hệ điều hành Windows 7/8/10.

2. Khả năng mở rộng của hệ thống khi lượng người dùng tăng đột biến ra sao?

Nhờ xây dựng trên hạ tầng Google Firebase Realtime Database, hệ thống có khả năng tự động cân bằng tải (Auto-scaling) phục vụ hàng chục nghìn kết nối đồng thời mà không bị nghẽn mạng hay sập server. Khi nhu cầu tăng cao, chỉ cần nâng cấp gói cước Firebase Blaze theo cơ chế Pay-as-you-go.

3. Dữ liệu tiến độ học tập có bị mất khi người dùng đổi thiết bị không?

Không. Mọi dữ liệu về tài khoản, danh sách "Từ khó", điểm thi các bài Full Test và tiến độ học ngữ pháp được lưu trữ đồng bộ trên đám mây Firebase. Khi người dùng đăng nhập trên thiết bị Android mới bằng tài khoản đã đăng ký (hoặc qua Google/Facebook), toàn bộ dữ liệu sẽ được tự động tải về nguyên vẹn.

4. Chi phí duy trì hệ thống và bảo trì định kỳ là bao nhiêu?

Hệ thống tận dụng gói dịch vụ miễn phí (Spark Plan) của Firebase, đáp ứng tốt cho giai đoạn thử nghiệm với dung lượng lưu trữ 1GB và 10GB băng thông/tháng. Chi phí bảo trì gần như bằng 0 do không phải duy trì phần cứng máy chủ riêng biệt.

5. Làm thế nào để cập nhật thêm các đề thi TOEIC mới vào ứng dụng?

Quản trị viên chỉ cần mở ứng dụng quản lý JavaFX trên máy tính, đăng nhập tài khoản Admin, chọn phân hệ "Quản lý đề thi" hoặc "Quản lý từ vựng", nhập nội dung câu hỏi, đính kèm link Audio/Hình ảnh và nhấn nút "Lưu". Dữ liệu sẽ tự động đẩy lên Firebase và cập nhật ngay lập tức đến toàn bộ ứng dụng của người dùng.


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng luyện thi TOEIC trên Android" của sinh viên Đoàn Thanh Thắng và Trương Tấn Tài (Đại học Sư phạm Kỹ thuật TP.HCM) đã giải quyết thành công bài toán tự học tiếng Anh theo xu hướng EdTech hiện đại. Bằng việc kết hợp sức mạnh của ngôn ngữ lập trình Java Native trên Android, dịch vụ đám mây thời gian thực Google Firebase NoSQL và phần mềm quản trị JavaFX, đề tài đã mang lại một sản phẩm hoàn chỉnh, giàu tính tương tác và có khả năng ứng dụng thực tiễn cao.

Dự án không chỉ là một tài liệu tham khảo kỹ thuật giá trị cho các kỹ sư phát triển ứng dụng di động mà còn là công cụ hữu ích hỗ trợ đắc lực cho sinh viên và cộng đồng người học tiếng Anh trên con đường chinh phục chứng chỉ TOEIC quốc tế.