5. BỐ CỤC ĐỀ TÀI
1.2 GOOGLE CLOUD MESSAGING
1.2.1 Giới thiệu Google Cloud Messaging
Google Cloud Messaging (GCM) [8] là một dịch vụ cho phép gửi dữ liệu từ máy chủ của bạn đến các thiết bị Android của người dùng, và ngược lại.
GCM được sử dụng cho hoạt động giao dịch giữa các ứng dụng và máy chủ hỗ trợ đầu cuối. Cloud Messaging hiện đang được tích hợp vào Google Play Services.
GCM là hoàn toàn miễn phí và không giới hạn băng thông. Dịch vụ hoạt động trên các gói dữ liệu có dung lượng nhỏ hơn 4kb và tin nhắn tới thiết bị Android là tức thời (Push notification).
GCM là phù hợp cho việc xây dựng các ứng dụng nhắn tin tức thời hoặc tương tác giữa người dùng và nhà phát triển ứng dụng.
1.2.2 Quy trình hoạt động
Hình 1.2 Quy trình hoạt động Google Cloud Messaging
Thiết bị di động gửi request từ thiết bị đến GCM. GCM đăng ký cho thiết bị và gửi về RegID.
Thiết bị di động gửi GCM RegID đến Web Server của chúng ta để lưu lại và sử dụng.
Web Server lưu GCM RegID trong cơ sở dữ liệu, RegID sẽ được dùng để gửi thông báo.
Khi Web Server muốn gửi thông báo đến thiết bị di động thì sẽ dùng RegID từ cơ sở dữ liệu để gửi request đến GCM (gồm RegID và nội dung).
GCM gửi đi một thông báo đẩy về thiết bị sau khi nhận một request từ Web Server.
1.3 WEB SERVICE
1.3.1 Giới thiệu về Web Service
- Web service [9] là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML. Web service có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra thông tin mà người dùng yêu cầu. Web Service được xây dựng dựa trên SOAP. Web Service cho phép máy chủ cũng cấp dịch vụ trao đổi và truyền dữ liệu với máy client. Khi phía máy client gửi yêu cầu truy vấn, phía server kiểm tra yêu cầu và trả lời yêu cầu dữ liệu của client bằng cách truyền dữ liệu dựa trên chuẩn SOAP.
1.3.2 Đặc điểm của Web Service
- Web Service cho phép client và server tương tác được với nhau trong những môi trường khác nhau.
- Web Service được xây dựng dựa trên mã nguồn mở bà được phát triển từ các chuẩn đã được công nhận.
- Web Service bao gồm nhiều mô đun và có thể đưa lên mạng Internet. - Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client –
server.
1.3.3 Ưu và nhược điểm
a. Ưu điểm
Web service cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau.
Sử dụng các giao thức và chuẩn mở. Giao thức và định dạng dữ liệu dựa trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được. Nâng cao khả năng tái sử dụng.
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web service.
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán. Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá
thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác.
b. Nhược điểm
Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Web service, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành.
Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt. Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật.
1.4 JSON
1.4.1 Json là gì ?
Json (JavaScript Object Notation) [10] là định dạng trao đổi dữ liệu độc lập. Json chỉ cho phép lưu trữ dữ liệu dưới dạng chữ và số. Json được hỗ trợ trực tiếp trong JavaScript.
Cấu trúc dữ liệu của Json được dựa trên các cặp Key / Value. Trong đó, Key là một chuỗi còn Value có thể là chuỗi, số, giá trị boolean hoặc object.
Một Json Object bao gồm các cặp Key / Value và được bắt đầu bởi dấu “{” và kết thúc bởi dấu “}”.
Một mảng các giá trị được nằm trong cặp dấu ngoặc vuông [ ] và cách nhau bởi dấu phẩy “,”.
1.4.2 Json Object
Json Object là class đại diện cho một đối tượng trong chuỗi Json.
Một đối tượng trong chuỗi Json được bọc trong cặp dấu ngoặc nhọn “{”, “}”.
Để tạo ra đối tượng Json Object chúng ta sử dụng phương thức khởi tạo và truyền chuỗi Json biểu diễn đối tượng đó vào tham số thứ nhất. Json Object cung cấp các phương thức getter để chúng ta truy xuất đến
các thuộc tính của nó.
1.4.3 Json Array
Là class đại diện cho array trong chuỗi Json.
Array trong chuỗi Json là một đối tượng được bọc trong cặp ngoặc vuông “[”, “]”.
Để tạo ra đối tượng Json Array chúng ta sử dụng phương thức khởi tạo và truyền chuỗi Json biểu diễn nó vào tham số thứ nhất.
Json Array cũng cung cấp các phương thức getter giống như Json Object để truy xuất giá trị các thuộc tính.
1.4.4 Các bước để parse Json
Tạo Json Array từ chuỗi Json đã cho.
Sử dụng vòng lặp for để xử lý cho các Json Object bên trong. Lấy Json Object từ Json Array qua các bước lặp.
CHƯƠNG 2
PHÂN TÍCH THIẾT KẾ
2.1 XÁC ĐỊNH YÊU CẦU
Yêu cầu chức năng
- Cung cấp nhiều bài học tiếng Nhật cho phép người dùng chọn bài học để học.
- Cung cấp nhiều bài luyện tập để người dùng có thể luyện tập những gì đã học.
- Xây dựng cơ sở dữ liệu online để có thể dễ dàng cập nhật nội dung bài học, bài luyện tập.
- Người dùng có thể tìm kiếm từ theo nghĩa tiếng Việt.
- Ghi nhớ những từ vựng, ngữ pháp đã học qua và thông báo cho người dùng.
- Tra cứu từ vựng nhanh chóng.
- Tự động cập nhật dữ liệu khi mở ứng dụng nếu dữ liệu thay đổi. - Gởi thông báo đẩy về điện thoại khi thay đổi dữ liệu trên server. - Đăng ký Google Cloud Messaging tự động
- Tự động tải dữ liệu khi mở ứng dụng lần đầu tiên. Yêu cầu phi chức năng
- Đơn giản, dễ sử dụng.
- Giao diện thân thiện, phù hợp với nhiều thiết bị. - Đáp ứng nhanh.
2.2 PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 2.2.1 Sơ đồ phân rã chức năng 2.2.1 Sơ đồ phân rã chức năng
Hình 2.1 Sơ đồ phân rã chức năng
2.2.2 Sơ đồ ngữ cảnh
2.2.3 Sơ đồ dòng dữ liệu mức đỉnh
Hình 2.3 Sơ đồ dòng dữ liệu mức đỉnh
2.2.4 Biểu đồ Activity
a. Học tiếng Nhật
b. Luyện tập
Hình 2.5 Biểu đồ Activity “Luyện tập”
c. Tải dữ liệu từ Web API
d. Tìm kiếm
Hình 2.7 Biểu đồ Activity “Tìm kiếm”
e. Đăng ký Google Cloud Messaging
2.2.5 Một số kịch bản đa sử dụng
a. Chức năng học tiếng Nhật
Tên chức năng Học tiếng Nhật Tác nhân Người dùng
Mô tả Chức năng này cho phép người dùng học tiếng Nhật. Điều kiện ban đầu Không có
Luồng sự kiện chính:
1. Hệ thống sẽ hiện ra danh sách các bài học. 2. Người dùng chọn bài học muốn học.
3. Hệ thống sẽ hiện ra nội dung bài học mà người dùng chọn.
Ngoại lệ: Người dùng có thể chọn bài học khác bằng cách bấm nút menu
Bảng 2.1 Kịch bản sử dụng chức năng học tiếng Nhật
b. Chức năng luyện tập
Tên chức năng Luyện tập Tác nhân Người dùng
Mô tả Chức năng này cho phép người dùng luyện tập.
Điều kiện ban đầu Không có
Luồng sự kiện chính:
1. Hệ thống sẽ hiện ra danh sách các bài luyện tập. 2. Người dùng chọn bài luyện tập muốn luyện tập.
3. Hệ thống sẽ hiện ra bài luyện tập mà người dùng chọn.
Ngoại lệ: Người dùng có thể chọn bài học khác bằng cách bấm nút menu
c. Chức năng tìm kiếm
Tên chức năng Tìm kiếm Tác nhân Người dùng
Mô tả Chức năng này cho phép người dùng tìm kiếm từ.
Điều kiện ban đầu Không có
Luồng sự kiện chính:
1. Người dùng nhập vào từ cần tìm.
2. Hệ thống sẽ xử lý và hiển thị kết quả ra màn hình.
Bảng 2.3 Kịch bản sử dụng chức năng tìm kiếm
2.3 PHÂN TÍCH VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU 2.3.1 Sơ đồ thực thể liên kết (ERD) 2.3.1 Sơ đồ thực thể liên kết (ERD)
2.3.2 Sơ đồ quan hệ dữ liệu
Hình 2.10 Sơ đồ quan hệ dữ liệu
2.3.3 Các lược đồ quan hệ
a. Lesson
Lược đồ quan hệ:
Lesson (LessonID, LessonName, Description) Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: LessonID là khóa chính - Toàn vẹn tham chiếu:
Thuộc tính Ý nghĩa Kiểu dữ liệu Kích thước Giá trị
duy nhất Null LessonID Mã bài học Int 11 x
LessonName Tên bài học Varchar 40
Description Mô tả Varchar 40 x
Phụ thuộc hàm: LessonID LessonName, Description Dạng chuẩn: Boyce-Codd.
b. Vocabulary
Lược đồ quan hệ:
Vocabulary (VocabularyID, LessonID, Word, Meaning, Description, SoundUrl, ImageUrl, SoundFile, ImageFile)
Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: VocabularyID là khóa chính
- Toàn vẹn tham chiếu: Thuộc tính LessonID của quan hệ Vocabulary là khóa ngoại tham chiếu đến khóa chính LessonID của quan hệ Lesson.
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ liệu Kích thước Giá trị duy nhất Null VocabularyID Mã từ vựng Int 11 x
LessonID Mã bài học Int 11 Word Từ vựng Varchar 100 Meaning Nghĩa từ vựng Varchar 100
SoundUrl Link âm thanh Varchar 100 ImageUrl Link hình ảnh Varchar 100 SoundFile Tên âm thanh Varchar 10 ImageFile Tên hình ảnh Varchar 10
Phụ thuộc hàm:
VocabularyID LessonID, Word, Meaning, Description, SoundUrl, ImageUrl, SoundFile, ImageFile
Dạng chuẩn: Boyce-Codd.
c. Grammar
Lược đồ quan hệ:
Grammar (GrammarID, LessonID, Title, Content) Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: GrammarID là khóa chính
- Toàn vẹn tham chiếu: Thuộc tính LessonID của quan hệ Grammar là khóa ngoại tham chiếu đến khóa chính LessonID của quan hệ Lesson.
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ
liệu Kích thước
Giá trị
duy nhất Null GrammarID Mã ngữ pháp Int 11 x
LessonID Mã bài học Int 11 Title Tiêu đề ngữ pháp Varchar 250 Content Nội dung ngữ pháp Varchar 2048
Phụ thuộc hàm: GrammarID LessonID, Title, Content Dạng chuẩn: Boyce-Codd.
d. Grammar Example
Lược đồ quan hệ:
Grammar_Example (ExampleID, GrammarID, Sentence_Jp, Sentence_Vn)
Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: ExampleID là khóa chính
- Toàn vẹn tham chiếu: GrammarID của quan hệ Grammar_Example là khóa ngoại tham chiếu đến khóa chính GrammarID của quan hệ Grammar.
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ liệu Kích thước
Giá trị
duy nhất Null ExampleID Mã ví dụ Int 11 x
GrammarID Mã ngữ pháp Int 11 Sentence_Jp Ví dụ tiếng Nhật Varchar 2048 Sentence_Vn Ví dụ tiếng Việt Varchar 2048
Phụ thuộc hàm:
ExampleID GrammarID, Sentence_Jp, Sentence_Vn Dạng chuẩn: Boyce-Codd.
e. Question
Lược đồ quan hệ:
Question (QuestionID, LessonID, PractiseTypeID, Content, QuestionTypeID, Answer1, Answer2, Answer3, Answer4, CorrectAnswer)
- Toàn vẹn thực thể: QuestionID là khóa chính - Toàn vẹn tham chiếu:
+ Thuộc tính LessonID của quan hệ Question là khóa ngoại tham chiếu đến khóa chính LessonID của quan hệ Lesson.
+ Thuộc tính PractiseTypeID của quan hệ Question là khóa ngoại tham chiếu đến khóa chính PractiseTypeID của quan hệ PractiseType.
+ Thuộc tính QuestionTypeID của quan hệ Question là khóa ngoại tham chiếu đến khóa chính QuestionTypeID của quan hệ QuestionType.
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ liệu
Kích thước
Giá trị
duy nhất Null QuestionID Mã câu hỏi Int 11 x
LessonID Mã bài học Int 11 PractiseTypeID Mã loại luyện tập Int 11 QuestionTypeID Mã loại câu hỏi Int 11 Content Nội dung câu hỏi Int 350 Answer1 Đáp án 1 Varchar 150 Answer2 Đáp án 2 Varchar 150 Answer3 Đáp án 3 Varchar 150 Answer4 Đáp án 4 Varchar 150 CorrectAnswer Đáp án đúng Varchar 150 Phụ thuộc hàm:
QuestionID QuestionTypeID, PractiseTypeID, LessonID, Content, Answer1, Answer2, Answer3, Answer4, CorrectAnswer
Dạng chuẩn: Boyce-Codd.
f. Practise Type
Lược đồ quan hệ:
PractiseType (PractiseTypeID, PractiseTypeName) Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: PractiseTypeID là khóa chính - Toàn vẹn tham chiếu:
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ liệu
Kích thước
Giá trị
duy nhất Null PractiseTypeID Mã loại luyện tập Int 11 x
PractiseTypeName Tên loại luyện tập Varchar 100
Phụ thuộc hàm:
PractiseTypeID PractiseTypeName Dạng chuẩn: Boyce-Codd.
g. Question Type
Lược đồ quan hệ:
QuestionType (QuestionTypeID, QuestionTypeName) Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: QuestionTypeID là khóa chính - Toàn vẹn tham chiếu:
Thuộc tính Ý nghĩa Kiểu dữ liệu Kích thước Giá trị duy nhất Null QuestionTypeID Mã loại câu hỏi Int 11 x
QuestionTypeName Tên loại câu hỏi Varchar 100
Phụ thuộc hàm: QuestionTypeID QuestionTypeName Dạng chuẩn: Boyce-Codd.
h. GCM Users
Lược đồ quan hệ:
Gcm_Users (ID, Gcm_RegID, Created_At) Ràng buộc toàn vẹn dữ liệu
- Toàn vẹn thực thể: ID là khóa chính - Toàn vẹn tham chiếu:
- Toàn vẹn giá trị:
Thuộc tính Ý nghĩa Kiểu dữ liệu Kích thước Giá trị duy nhất Null ID Số thứ tự đăng ký Int 11 x
Gcm_RegID Mã đăng ký GCM Text Created_At Thời gian đăng ký Timestamp
Phụ thuộc hàm: ID Gcm_RegID, Created_At Dạng chuẩn: Boyce-Codd.
CHƯƠNG 3
KẾT QUẢ ĐẠT ĐƯỢC
3.1 WEBSITE QUẢN LÝ ỨNG DỤNG HỌC TIẾNG NHẬT 3.1.1 Bài học 3.1.1 Bài học
Ở trang này người quản lý có thêm mới bài học, chỉnh sửa các thông tin liên quan về bài học.
Người dùng nhập tên bài học, mô tả bài học rồi chọn nút “Add new” để nhập bài học.
Hình 3.1 Giao diện phần bài học
3.1.2 Từ vựng
Ở trang này người quản lý có thêm mới từ vựng, chỉnh sửa các thông tin liên quan về từ vựng.
Người dùng nhập mã bài học, nhập từ vựng, nhập nghĩa từ vựng, nhập file âm thanh, file hình ảnh… rồi bấm chọn nút “Add new” để thêm mới từ vựng.
Hình 3.2 Giao diện phần từ vựng
3.1.3 Ngữ pháp
Người dùng nhập mã bài học, tiêu đề ngữ pháp, nội dung ngữ pháp rồi bấm chọn nút “Add new” để thêm mới ngữ pháp.
3.1.4 Ví dụ ngữ pháp
Người dùng nhập mã ngữ pháp, ví dụ ngữ pháp tiếng Nhật, nghĩa tiếng Việt của ví dụ rồi bấm chọn nút “Add new” để thêm mới ví dụ.
Hình 3.4 Giao diện phần ngữ pháp
3.1.5 Gởi thông báo
Người dùng nhập nội dung thông báo rồi bấm chọn nút “Send” để gởi thông báo đến các thiết bị Android đã đăng ký.
3.1.6 Câu hỏi luyện tập
Ở trang này người quản lý có thể thêm mới câu hỏi luyện tập, chỉnh sửa các thông tin liên quan về câu hỏi luyện tập.
Người dùng nhập mã bài học, loại luyện tập, loại câu hỏi, các câu trả lời, đáp án đúng rồi bấm chọn nút “Add new” để thêm mới câu hỏi. Người dùng bấm chọn mã câu hỏi thì sẽ chuyển sang trang chỉnh sửa
thông tin câu hỏi luyện tập
Hình 3.6 Giao diện phần câu hỏi luyện tập
3.1.7 Web API
Ở trang này sẽ hiển thị ra cơ sở dữ liệu của ứng dụng học tiếng Nhật dưới dạng Json. Điện thoại sẽ kết nối đến API này, lấy dữ liệu xuống