Nhiệm vụ nghiên cứu
- Nghiên cứu về các ứng dụng học ngôn ngữ hiện có trên thị trường và cách tiếp cận của chúng nhằm giải quyết nhu cầu học của người dùng;
- Nghiên cứu lợi ích của việc trao đổi ngôn ngữ chéo giữa hai người;
- Nghiên cứu xây dựng cơ sở dữ liệu và các kết nối đối với phần mềm;
- Nghiên cứu lập trình, bố trí các mục và thiết kế ứng dụng;
- Nghiên cứu uỷ quyền, bảo mật và các vấn đề liên quan;
Mục đích nghiên cứu
Học ngoại ngữ giúp người học kết nối với những người có cùng sở thích, tạo cơ hội kết bạn và trao đổi về văn hóa, ngôn ngữ và cuộc sống.
Tạo một không gian mạng xã hội cho người học ngoại ngữ giúp họ phát triển khả năng ngôn ngữ và cải thiện sự linh hoạt, tự nhiên trong việc sử dụng ngoại ngữ.
- Phá bỏ rào cản về địa lý của những người học ngoại ngữ đến từ nhiều quốc gia trên thế giới;
Kết hợp việc dạy ngôn ngữ mẹ đẻ với việc học ngoại ngữ có thể giúp người học cải thiện khả năng diễn đạt và trình bày ý kiến của mình, đồng thời nâng cao kỹ năng lắng nghe và hiểu thông điệp từ người khác.
Phương pháp nghiên cứu
- Tìm hiểu thông tin về các ứng dụng tương đương trên thị trường
- Tìm hiểu thông tin về tài liệu có liên quan đến hệ thống trao đổi ngôn ngữ
- Tổng hợp, đánh giá những thông tin tìm hiểu được và đưa ra những tính năng cần thiết cho ứng dụng
- Áp dụng kiến thức lập trình về Flutter, Firebase, Rest API để xây dựng ứng dụng dựa trên những thông tin đã nghiên cứu
Công cụ sử dụng
- Công cụ dùng để phân tích, thiết kế: draw.io, Figma
- Công cụ dung để xây dựng ứng dụng: Visual Studio Code, Android studio
- Công cụ quản lý dự án: Github, Notion, Messenger, Microsoft Teams
- Công cụ soạn thảo: Google Sheet, Excel, Word, Notepad
- Công cụ quản lý Database: Firebase
PHÂN TÍCH ĐẶC TẢ YÊU CẦU
Khảo sát thị trường
Các ứng dụng học tiếng anh
Duolingo là ứng dụng học tiếng Anh miễn phí được chính phủ Mỹ khuyên dùng, cho phép người học truy cập vào kho bài học phong phú từ cơ bản đến nâng cao Với giao diện rõ ràng và dễ hiểu, Duolingo phù hợp với mọi đối tượng và không giới hạn độ tuổi, giúp người dùng có thể học tiếng Anh mọi lúc mọi nơi trên điện thoại.
Douling phù hợp cho những người mất gốc hoặc chưa có kiến thức về ngôn ngữ, nhưng có thể gây nhàm chán cho những ai đã có nền tảng Ngoài ra, ứng dụng này còn hạn chế trong việc hỗ trợ giao tiếp tương tác giữa người với người.
Two min English là ứng dụng học tiếng Anh độc đáo, giúp người dùng nâng cao khả năng ngôn ngữ chỉ với 2 phút mỗi ngày Khác với các ứng dụng khác, Two min English cung cấp các video ngắn kèm phụ đề, tạo điều kiện thuận lợi cho việc học tập hiệu quả.
Mặc dù phần mềm học tiếng Anh này hữu ích cho việc tự học, nhưng chủ đề video còn hạn chế và thiếu đa dạng, dễ khiến người học cảm thấy nhàm chán sau một thời gian dài Hơn nữa, khả năng tương tác với người khác trong ứng dụng vẫn còn hạn chế.
Cambly là ứng dụng tuyệt vời cho việc học ngoại ngữ thông qua trò chuyện video với người bản xứ Đây được xem là một trong những ứng dụng tốt nhất hiện nay để cải thiện kỹ năng ngôn ngữ của bạn Tuy nhiên, người dùng cần trả phí để sử dụng dịch vụ này.
ELSA (English Learning Speech Assistant) là ứng dụng tiên tiến hàng đầu trong việc học phát âm tiếng Anh, đã giúp hơn 7 triệu người trên toàn thế giới tự tin nói tiếng Anh nhờ công nghệ trí tuệ nhân tạo nhận diện giọng nói và nhận nhiều giải thưởng quốc tế danh giá Ứng dụng hiện đang đứng đầu trên Google Store và App Store, tuy nhiên, ELSA chủ yếu hỗ trợ học phát âm và giao tiếp, không tập trung vào kỹ năng đọc và viết Để sử dụng dịch vụ, người dùng cần trả phí.
Một số ứng dụng về trao đổi ngôn ngữ
Mylanguageexchange.com là một nền tảng giúp bạn kết nối và giao lưu với người nước ngoài để học ngôn ngữ thông qua giao tiếp Tuy nhiên, trang web này thường bị đánh giá là không hấp dẫn và khó khăn trong việc tìm kiếm người phù hợp để học.
Speaky là một ứng dụng thực hành ngôn ngữ hiện có trên Google Store và App
Store là ứng dụng giúp người dùng tìm bạn đồng hành để học ngôn ngữ, cho phép bạn dạy ngôn ngữ của mình và học từ người khác Tuy nhiên, ứng dụng này vẫn còn tồn tại nhiều hạn chế, bao gồm tốc độ tải trang tìm kiếm chậm và thiếu các bộ lọc hữu ích để tìm kiếm đối tượng phù hợp với sở thích cá nhân.
Sau quá trình tìm hiểu các ứng dụng và trang web học tiếng Anh cũng như ngoại ngữ, chúng tôi nhận thấy rằng các ứng dụng hiện nay hỗ trợ lẫn nhau trong nhiều khía cạnh của việc học Duolingo là lựa chọn lý tưởng cho người mới bắt đầu làm quen với ngôn ngữ Elsa tập trung vào luyện phát âm và giao tiếp, trong khi Cambly chuyên về luyện nói với người bản xứ Speaky cung cấp cơ hội thực hành ngôn ngữ thông qua việc tìm kiếm bạn học.
Nhóm chúng tôi đã phát triển một ý tưởng tương tự như Speaky, nhưng nhận thấy rằng Speaky còn hạn chế trong việc tìm kiếm người phù hợp và đánh giá trình độ của họ, gây khó khăn trong việc xây dựng niềm tin và đồng hành Hơn nữa, tốc độ tải ứng dụng chưa ổn định, ảnh hưởng đến trải nghiệm người dùng.
Thông tin trên đã cung cấp cho nhóm cái nhìn tổng quan, từ đó giúp họ xác định và phát triển những chức năng phù hợp cho ứng dụng của mình.
Sơ đồ usecase
STT Tên Actor Ý nghĩa/ ghi chứ
1 Người dùng Người dùng sử dụng ứng dụng trao đổi ngôn ngữ
1 Đăng nhập Đăng nhập vào ứng dụng để sử dụng các chức năng
2 Đăng ký Đăng ký tài khoản để đăng nhập vào ứng dụng
3 Tìm kiếm Tìm kiếm những user khác để xem thông tin, kết bạn hoặc hủy bạn
4 Thiết lập Cài đặt thông tin các nhân: về ảnh đại diện, tên, ngôn ngữ, sở thích
5 Nhắn tin Nhắn và nhận tin với những user khác Đặc tả usecase
- Đặc tả usecase đăng nhập
Mô tả Người dùng đăng nhập vào hệ thống nhằm sử dụng các chức năng trong phần mềm
Trigger Người dùng muốn đăng nhập vào ứng dụng trao đổi ngôn ngữ Pre-condition -Tài khoản người dùng đã được tạo sẵn
-Thiết bị người dùng đã kết nối internet khi thực hiện đăng nhập
Post-condition -Người dùng đăng nhập ứng dụng thành công
-Hệ thống ghi nhận hoạt động đăng nhập thành công
Basic flow 1.Người dùng truy cập vào ứng dụng
2.Người dùng chọn phương thức đăng nhập 3.Người dùng nhập tài khoản và chọn đăng nhập
4.Hệ thống xác thực thông tin đăng nhập và cho phép người dùng truy cập vào ứng dụng
5.Hệ thống ghi nhận hoạt động đăng nhập thành công
Exceptionflow 1.Người dùng xác nhận thông tin đăng nhập không thành công 2.Nguời dùng chọn lệnh hủy đăng nhập usecase dừng lại
- Đặc tả usecase đăng ký
Mô tả Được sử dụng bởi người dùng nhằm tạo tài khoản đăng nhập vào ứng dụng
Người dùng muốn tạo tài khoản để đăng nhập vào ứng dụng, với điều kiện là họ chưa có tài khoản hoặc muốn tạo thêm tài khoản mới Để thực hiện quá trình đăng ký, thiết bị của người dùng cần được kết nối với internet.
Post-condition -Người dùng đăng ký tài khoản ứng dụng thành công -Hệ thống ghi nhận thông tin đăng ký vào database
Basic flow 1.Người dùng truy cập vào ứng dụng
Người dùng bắt đầu bằng cách chọn phương thức đăng ký phù hợp, sau đó nhập thông tin cần thiết để tạo tài khoản và nhấn đăng ký Hệ thống sẽ tiến hành xác thực thông tin và thông báo nếu việc tạo tài khoản thành công Cuối cùng, thông tin đăng ký sẽ được lưu trữ an toàn trong cơ sở dữ liệu.
Exceptionflow 1.Thông tin đăng ký không hợp lệ
2.Nguời dùng chọn lệnh hủy đăng ký usecase dừng lại
Mô tả Được sử dụng bởi người dùng nhằm tìm kiếm người dùng khác trong ứng dụng
Trigger Người dùng muốn tìm kiếm những người dùng khác trong hệ thống Pre-condition -Người đã đăng nhập thành công vào ứng dụng
-Thiết bị người dùng đã kết nối interner khi thực hiện đăng ký
Post-condition -Người dùng tìm kiếm thông tin thành công
-Có thể xem thông tin, kết bạn, xóa bạn người dùng tìm kiếm
Basic flow 1.Người dùng đăng nhập thành công vào ứng dụng 2.Người dùng chọn tìm kiếm
3.Người dùng nhập thông tin tìm kiếm 4.Hệ thống tìm kiếm thông tin và trả về danh sách người dùng thích hợp
Exceptionflow 1.Thông tin tìm kiếm không hợp lệ
2.Nguời dùng không tìm kiếm nữa usecase dừng lại
Mô tả Được sử dụng bởi người dùng nhằm thiết lập những thông tin liên quan đến tài khoản
Người dùng có nhu cầu thiết lập hoặc chỉnh sửa thông tin tài khoản của mình Để thực hiện điều này, thiết bị của người dùng cần được kết nối với internet trong quá trình đăng ký.
Post-condition -Người dùng thiết lập thông tin thành công
-Hệ thống ghi nhận thông tin thiết lập vào database
Basic flow 1.Người dùng truy cập vào ứng dụng
2.Người dùng chọn phương thức thiết lập 3.Người dùng nhập thay đổi thông tin cần chỉnh sửa
4.Hệ thống xác thực thông tin thiết lập và thông báo thiết lập thành công
5.Hệ thống ghi nhận thông tin thiết lập vào database
Exceptionflow 1.Thông tin thiết lập không hợp lệ
2.Nguời dùng chọn hủy thiết lập khiến usecase dừng lại
Mô tả Được sử dụng bởi người dùng nhằm nhắn tin với người dùng khác
Trigger Người dùng muốn nhắn tin trong phần mềm
Pre-condition -Người dùng muốn nhắn tin
-Thiết bị người dùng đã kết nối interner Post-condition -Người dùng gửi và nhận tin thành công
Basic flow 1.Người dùng truy cập vào ứng dụng
2.Người dùng chọn bạn bè nhắn tin 3.Người dùng nhắn gửi tin nhắn đến người dùng khác
4.Người dùng khác phản hồi lại tin nhắn 5.Hệ thống ghi nhận thông tin tin nhắn vào database
Exceptionflow 1.Người dùng bỏ chọn nhắn tin khiến usecase dừng lại
Sơ đồ trạng thái
Gửi yêu cầu kết bạn
Xóa bạn Đồng ý yêu cầu kết bạn
Sơ đồ hoạt động
Sơ đồ lớp
Tên thuộc tính Kiểu dữ liệu Ràng buộc Giải thích userId String UID - ID của người dùng
Nickname String Tên hiển thị của người dùng profilePicture String Đường dẫn đến ảnh đại diện của người dùng coverPhoto String Đường dẫn đến ảnh bìa của người dùng
Hobbies List Danh sách các sở thích (tham chiếu đến bảng Hobby) của người dùng languages List Danh sách ngôn ngữ (tham chiếu đến bảng
Trong Firestore, thuộc tính languageId là một chuỗi (String) đại diện cho ID của ngôn ngữ Tên hiển thị của ngôn ngữ được lưu trữ dưới thuộc tính name, cũng là kiểu chuỗi Mô tả về ngôn ngữ được ghi lại trong thuộc tính description, với kiểu dữ liệu tương tự Cuối cùng, thuộc tính level là kiểu số nguyên (int), cho biết trình độ hiện tại mà người dùng đang có đối với ngôn ngữ được tham chiếu.
Trong Firestore, thuộc tính hobbyId là một chuỗi (String) dùng để xác định ID của thói quen, trong khi thuộc tính name cũng là một chuỗi (String) để ghi lại tên thói quen Thêm vào đó, description là một chuỗi (String) mô tả chi tiết về thói quen, và additionalInfo là chuỗi (String) cho phép người dùng cung cấp các thông tin bổ sung nhằm làm rõ hơn về thói quen hoặc sự gắn bó của họ với thói quen đó.
Trong bài viết này, chúng tôi sẽ giới thiệu các thuộc tính quan trọng liên quan đến relationship trong Firestore Đầu tiên, relationshipId là một chuỗi (String) đại diện cho ID của relationship Tiếp theo, name là tên của relationship, trong khi description cung cấp mô tả chi tiết về relationship đó Cuối cùng, additionalInfo là chuỗi thông tin bổ sung mà người dùng có thể thêm vào để mô tả rõ hơn về relationship hoặc sự gắn bó của họ với thói quen tương ứng.
TÌM HIỀU VỀ FLUTTER VÀ FIREBASE
Flutter Framework
Flutter là framework UI di động do Google phát triển, cho phép tạo ra giao diện chất lượng cao trên cả iOS và Android một cách nhanh chóng Nó tận dụng mã nguồn có sẵn mà các lập trình viên và tổ chức có thể sử dụng.
Flutter hoàn toàn miễn phí và cũng là mã nguồn mở
Tại sao lại là Flutter?
Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụng Android, hãy xem xét Flutter của Google, một framework sử dụng ngôn ngữ lập trình Dart.
Các ứng dụng phát triển bằng Flutter có giao diện và hiệu suất tương đương với những ứng dụng được tạo ra từ Android SDK Đặc biệt, với một số điều chỉnh nhỏ, chúng có thể hoạt động trên thiết bị iOS.
Chạy ở 60 fps, giao diện người dùng được phát triển bằng Flutter hoạt động tốt hơn so với các ứng dụng sử dụng các framework đa nền tảng khác như React Native và Ionic Dưới đây là một số lý do khiến bạn nên quan tâm đến Flutter.
1 Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích như mixin, generic, isolate, và static type
Flutter cung cấp các thành phần giao diện người dùng độc đáo và cơ chế để hiển thị chúng trên cả nền tảng Android và iOS Hầu hết các thành phần này đều sẵn có và tuân thủ các nguyên tắc của Material Design.
3 Các ứng dụng Flutter có thể được phát triển bằng cách4 sử dụng IntelliJ IDEA, một IDE rất giống với Android Studio Đặc điểm nổi bật
Tính năng Hot Reload cho phép phát triển giao diện nhanh chóng chỉ trong vài mili giây, giúp bạn xây dựng giao diện bằng các widget tùy chỉnh trong vài phút Ngoài ra, Hot Reload còn tiết kiệm thời gian khi thêm tính năng và sửa lỗi mà không cần phải sử dụng máy ảo hoặc thiết bị Android, iOS.
2 Expressive and Flexible UI: Có rất nhiều các thành phần để xây dựng giao diện của Flutter vô cùng đẹp mắt theo phong cách Material Design và
Cupertino, hỗ trợ nhiều các APIs chuyển động, smooth scrolling
Flutter widgets leverage the unique features of different platforms, such as scrolling, navigation, icons, and fonts, to deliver optimal performance on both iOS and Android devices.
FIREBASE
Firebase là dịch vụ cơ sở dữ liệu dựa trên nền tảng đám mây của Google, cung cấp hệ thống máy chủ mạnh mẽ Nó giúp người dùng lập trình ứng dụng dễ dàng hơn bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase cung cấp giao diện lập trình ứng dụng API đơn giản, giúp tăng số lượng người dùng và tối ưu hóa lợi nhuận Dịch vụ này không chỉ đa năng mà còn đảm bảo tính bảo mật cao, hỗ trợ cả hai nền tảng Android và iOS.
Tại sao lại là Firebase?
Firebase cung cấp tính năng đăng nhập dễ dàng qua tài khoản Google, giúp người dùng truy cập nhanh chóng Gói Spark miễn phí của Firebase cung cấp nhiều tính năng hữu ích, hỗ trợ các nhà phát triển trong việc khởi đầu dự án.
Sử dụng Firebase và Firestore, các Frontend Developer có thể quản lý dự án hiệu quả hơn và rút ngắn thời gian hoàn thành công việc Những công nghệ này mang lại nhiều lợi ích nổi bật cho quá trình phát triển ứng dụng.
Cũng giống như lý do lựa chọn Firebase, ngoài ra còn có một số đặc điểm khác nổi bật như:
Firebase cung cấp tính năng đăng nhập đơn giản bằng tài khoản Google, giúp người dùng dễ dàng truy cập Gói Spark miễn phí của Firebase đi kèm với nhiều tính năng hữu ích, hỗ trợ các nhà phát triển khởi đầu hiệu quả.
- Thông qua việc sử dụng Firebase và Firestore, Frontend Developer có thể quản lý, giảm thời gian cần thiết để hoàn thành tất cả công việc
- Firebase đi kèm với kiến trúc không máy chủ (Serverless Architecture) Do đó, bạn sẽ không cần lo lắng về cơ sở hạ tầng máy chủ
Firebase cung cấp bảo mật tối ưu và đảm bảo tính sẵn có của dữ liệu thông qua việc sao lưu thường xuyên Nhờ vào tính năng sao lưu tự động, các ứng dụng được bảo vệ khỏi nguy cơ mất dữ liệu, mang lại sự an tâm cho người dùng.
Sơ đồ thiết kế hệ thống:
Giao diện được thiết kế bằng phần mềm Figma
Màn hình thiết lập thông tin tài khoản
PHÁT TRIỂN VÀ CÀI ĐẶT ỨNG DỤNG
Môi trường phát triển ứng dụng
Hệ điều hành: Android/IOS
Hệ quản trị cơ sở dữ liệu: Firebase
Môi trường chạy thử: Oppo A92, Máy ảo Pixel 3
Framework đã sử dụng: Flutter
Môi trường triển khai ứng dụng
CPU: Snapdragon 439 / MediaTek MT6762 (P22) trở lên
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN