CHƯƠNG 2: PHÂN TÍCH – THIẾT KẾ HỆ THỐNG
2.5 Thiết kế các Bảng dữ liệu của hệ thống
❖ Bảng người dùng: Lưu trữ thông tin của các người dùng trong hệ thống. Bảng 2 - 1 Thiết kế cấu trúc bảng người dùng.
STT
1 2 3 4 5 6 7 8 9 10
❖ Bảng bài viết: Lưu trữ thông tin của các bài viết trong hệ thống.
Bảng 2 - 2 Thiết kế cấu trúc bảng bài viết.
STT
1 2 3 4 5 6 7 8 9 10 11
❖ Bảng tin nhắn: Lưu trữ thông tin các tin nhắn trong hệ thống.
Bảng 2 - 3 Thiết kế cấu trúc bảng tin nhắn STT
1 2 3 4 5 6
❖ Bảng danh sách nhắn tin: Lưu trữ mã người dùng trên hệ thống Firebase.
Bảng 2 - 4 Thiết kế cấu trúc bảng danh sách nhắn tin.
STT
1
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 22
❖ Bảng bình luận: Lưu trữ thông tin các bình buận trong hệ thống.
Bảng 2 - 5 Thiết kế cấu trúc bảng bình luận.
STT 1 2 3 4 5 6 7
❖ Bảng nhóm tin nhắn: Lưu trữ thông tin các nhóm nhắn tin trong hệ thống.
Bảng 2 - 6 Thiết kế cấu trúc các nhóm nhắn tin.
STT 1 2 3 4 5 6 7 8
❖ Bảng tin nhắn nhóm: Lưu trữ thông tin các tin nhắn trong nhóm trong hệ thống. Bảng 2 - 7 Thiết kế cấu trúc bảng tin nhắn nhóm.
STT 1 2 3 4
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 23
2.6 Xây dựng biểu đồ quan hệ thực thể 2.6.1 Ký hiệu sử dụng
Hình 2 - 12 Ký hiệu sử dụng trong biểu đồ quan hệ thực thể 2.6.2 Lập biểu đồ quan hệ thực thể
Hình 2 - 13 Lược đồ quan hệ thực thể 2.6.3 Mối liên kết trong biểu đồ quan hệ thực thể
Quan hệ thực thể giữa Các bài viết và Các người dùng:
• Nhiều người dùng không viết một bài viết nào hoặc viết nhiều bài viết.
• Nhiều bài viết được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Các bài viết và Các bình luận:
• Nhiều bài viết có nhiều bình luận hoặc nhiều bài viết không có bình luận.
• Nhiều bình luận được có trong một bài viết hoặc nhiều bài viết Quan hệ thực thể giữa Các bình luận và Các người dùng:
• Nhiều người dùng bình luận nhiều hoặc nhiều người dùng không bình luận.
• Nhiều bình luận được bình luận bởi một người hoặc bởi nhiều người.
Quan hệ thực thể giữa Các người dùng và Danh sách nhắn tin:
• Một người dùng xem một danh sách nhắn tin
• Một danh sách nhắn tin được xem bởi một người dùng Quan hệ thực thể giữa Các người dùng và Các tin nhắn:
• Nhiều người dùng viết nhiều tin nhắn hoặc không viết tin nhắn nào.
• Nhiều tin nhắn được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Các tin nhắn và Danh sách nhắn tin:
• Một danh sách nhắn tin chứa một hoặc nhiều tin nhắn.
• Nhiều tin nhắn phải thuộc một danh sách nhắn tin.
Quan hệ thực thể giữa Các người dùng và Danh sách nhóm tin nhắn:
• Một người dùng xem một danh sách nhóm tin nhắn.
• Một danh sách nhóm tin nhắn được xem bởi một người dùng.
Quan hệ thực thể giữa Các người dùng và Tin nhắn nhóm:
• Nhiều người dùng viết nhiều tin nhắn nhóm hoặc không viết tin nhắn nhóm nào.
• Nhiều tin nhắn nhóm được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Tin nhắn nhóm và Danh sách nhóm tin nhắn:
• Một danh sách nhóm tin nhắn chứa một hoặc nhiều tin nhắn nhóm.
• Nhiều tin nhắn nhóm phải thuộc một danh sách nhóm tin nhắn.
2.7 Xác định các yêu cầu phi chức năng
▪ Tin nhắn phải cập nhật theo thời gian thực
▪ Tương tác giữa người dùng với hệ thống không nên vượt quá 3s
▪ Có thể hoạt động ổn định trên các dòng điện thoại khác nhau
▪ Thời gian xử lý nhanh
▪ Dễ sử dụng với những giao diện đồ họa thân thiện phù hợp với người dùng
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT
3.1 Hệ điều hành Android 3.1.1 Giới thiệu
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng.
Ban đầu, Android được phát triển bởi Android, Inc. với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005.
Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008.
Hình 3 - 1 Biểu tượng của hệ điều hành Android
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do.
Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các
sửa đổi. Tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian OS vào quý 4 năm 2010, và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu.
Kết quả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác. Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác.
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 2 năm 2017, với tổng cộng 2 tỷ thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày. Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
3.1.2 Kiến trúc của hệ điều hành Android
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice Cream Sandwich (bánh ngọt kẹp kem) trở về sau, là phiên bản 3.x, với middleware, thư viện và API viết bằng C, còn phần mềm ứng dụng chạy trên một nền tảng ứng dụng gồm các thư viện tương thích với Java dựa trên Apache Harmony.
Android sử dụng máy ảo Dalvik với một trình biên dịch động để chạy 'mã dex' (Dalvik Executable) của Dalvik, thường được biên dịch sang Java bytecode. Nền tảng phần cứng chính của Android là kiến trúc ARM. Người ta cũng hỗ trợ x86 thông qua dự án Android x86, và Google TV cũng sử dụng một phiên bản x86 đặc biệt của Android.
Hình 3 - 2 Kiến trúc của hệ điều hành Android
Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến trúc so với nhân Linux gốc. Android không có sẵn X Window System cũng không hỗ trợ các thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn sang Android rất khó khăn. Các ứng dụng C đơn giản và SDL cũng được hỗ trợ bằng cách chèn những đoạn shim Java và sử dụng tương tự JNI, như khi người ta chuyển Jagged Alliance 2 sang Android.
3.1.3 Ưu nhược điểm của hệ điều hành Android a) Ưu điểm
+ Là hệ điều hành có mã nguồn mở nên khả năng tuỳ biến cao, có thể tùy ý chỉnh sửa mà không có sự can thiệp hay cấm cản từ Google.
+ Đa dạng sản phẩm, rất nhiều hãng điện thoại, thiết bị công nghệ đã ưu ái chọn Android cho thiết bị của họ, giá cả thì hợp lý từ bình dân đến cao cấp.
+ Kho ứng dụng Google Play Store đồ sộ.
+ Thân thiện và dễ sử dụng.
+ Khả năng đa nhiệm, chạy cùng lúc nhiều ứng dụng cao b) Nhược điểm
- Dễ nhiễm phần mềm độc hại và virus. Do tính chất mã nguồn mở, nhiều phần mềm không được kiểm soát có chất lượng không tốt hoặc lỗi bảo mật vẫn được sử dụng.
- Kho ứng dụng quá nhiều dẫn đến khó kiểm soát chất lượng, thiếu các ứng dụng thật sự tốt.
-Sự phân mảnh lớn. Trong khi một số thiết bị Android xuất sắc đã trình làng như Galaxy S5, Galaxy Note 4, Xperia Z3…, vẫn còn rất nhiều sản phẩm giá rẻ bình thường khác.
-Cập nhật không tự động với tất cả thiết bị. Khi một phiên bản hệ điều hành mới ra mắt, không phải tất cả sản phẩm đều được cập nhật, thậm chí nếu muốn trải nghiệm bạn
thường xuyên phải mua mới thiết bị.
3.2 Ngôn ngữ lập trình Java 3.2.1 Lịch sử
Java được khởi đầu bởi James Gosling và đồng nghiệp ở Sun Microsystems năm 1991. Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi, do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ đó thay cho C++, nhưng các tính năng giống Objective C. Không nên lẫn lộn Java với JavaScript, hai ngôn ngữ đó chỉ giống tên và loại cú pháp như C. Công ty Sun Microsystems đang giữ bản quyền và phát triển Java thường xuyên. Tháng 04/2011, công ty Sun Microsystems tiếp tục cho ra bản JDK 1.6.24.
3.2.2 Đặc điểm
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của các ngôn ngữ hướng đối tượng:
▪ Tính trừu tượng (Abstraction): Là tiến trình xác định và nhóm các thuộc tính, các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển.
▪ Tính đa hình (Polymorphism): Cho phép một phương thức có các tác động khác nhau trên nhiều loại đối tượng khác nhau. Với tính đa hình, nếu cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những kết quả khác nhau. Bản chất của sự việc chính là phương thức này bao gồm cùng một số lượng các tham số.
▪ Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.
▪ Tính đóng gói (Encapsulation): Là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy.
Bên cạnh đó Java còn có một số đặc tính khác:
▪ Độc lập nền (Write Once, Run Anywhere): Không giống như nhiều ngôn ngữ lập trình khác như C và C ++, khi Java được biên dịch, nó không được biên dịch sang mã máy cụ thể, mà thay vào đó là mã byte code chạy trên máy ảo Java (JVM). Điều này đồng nghĩa với việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể thực thi được các chương trình Java.
Hình 3 - 3 Quá trình biên dịch qua máy ảo JVM
▪ Đơn giản: Học Java thật sự dễ hơn nhiều so với C/C++, nếu bạn đã quen với các ngôn ngữ lập trình hướng đối tượng thì việc học Java sẽ dễ dàng hơn. Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và phép toán con trỏ từ C/C++.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 31
▪ Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa như mã hóa một chiều (one way hashing) hoặc mã hóa công cộng (public key).
▪ Đa luồng: Với tính năng đa luồng Java có thể viết chương trình có thể thực thi nhiều task cùng một lúc. Tính năng này thường được xử dụng rất nhiều trong lập trình game.
▪ Hiệu suất cao: Nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ đối với các đối tượng không được dùng đến.
▪ Linh hoạt: Java được xem là linh hoạt hơn C/C ++ vì nó được thiết kế để thích ứng với nhiều môi trường phát triển.
3.3 Firebase
3.3.1 Firebase là gì?
Firebase là một nền tảng để phát triển ứng dụng di động và trang web, bao gồm các API đơn giản và mạnh mẽ mà không cần backend hay server. Nó giúp các lập trình viên rút ngắn thời gian triển khai và mở rộng quy mô của ứng dụng mà họ đang phát triển.
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud.
Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu cụ thể là những giao diện lập trình ứng dụng API đơn giản với mục đích nhằm tăng số lượng người dùng và thu lại nhiều lợi nhuận hơn.
Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt. Firebase hỗ trợ cả hai nền tảng Android và IOS. Không có gì khó hiểu khi nhiều lập trình viên chọn Firebase làm nền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toàn thế giới.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 32
3.3.2 Lịch sử phát triển
Firebase phát triển từ Envolve, một công ty khởi nghiệp trước đó do James Tamplin và Andrew Lee thành lập vào năm 2011. Envolve cung cấp cho các nhà phát triển một API cho phép tích hợp chức năng trò chuyện trực tuyến vào trang web của họ.
Sau khi phát hành dịch vụ trò chuyện, Tamplin và Lee nhận thấy rằng nó đang được sử dụng để chuyển dữ liệu ứng dụng không phải là tin nhắn trò chuyện. Các nhà phát triển đã sử dụng Envolve để đồng bộ hóa dữ liệu ứng dụng, chẳng hạn như trạng thái trò chơi trong thời gian thực giữa người dùng của họ. Tamplin và Lee quyết định tách biệt hệ thống trò chuyện và kiến trúc thời gian thực cung cấp năng lượng cho nó.
Họ thành lập Firebase như một công ty riêng biệt vào tháng 9 năm 2011 và ra mắt công chúng vào tháng 4 năm 2012.
Hình 3 - 4 Biểu tượng của Firebase
Sản phẩm đầu tiên của Firebase là Cơ sở dữ liệu thời gian thực của Firebase, một API đồng bộ hóa dữ liệu ứng dụng trên các thiết bị iOS, Android và Web, đồng thời lưu trữ trên đám mây của Firebase. Sản phẩm hỗ trợ các nhà phát triển phần mềm trong việc xây dựng các ứng dụng cộng tác, theo thời gian thực.
3.3.3 Cách thức hoạt động của Firebase
➢ Firebase Realtime Database:
Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở dữ liệu thời gian thực. Dữ liệu bạn nhận được dưới dạng JSON. Đồng thời nó cũng luôn được đồng bộ thời gian thực đến mọi kết nối client.
Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở dữ liệu. Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên phát triển ứng dụng. Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối an toàn SSL có bảo mật với chứng nhận 2048 bit.
Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local vì thế khi có mọi sự thay đổi nào đều được tự động cập nhật lên Server của Firebase. Bên cạnh đó, đối với các dữ liệu ở local cũ hơn với Server thì cũng tự động cập nhật để được dữ liệu mới nhất.
➢ Firebase Authentication:
Hoạt động nổi bật của Firebase Authentication là xây dựng các bước xác thực người dùng bằng Email, Facebook, Twitter, GitHub, Google. Đồng thời cũng xác thực nặc danh cho các ứng dụng. Hoạt động xác thực có thể giúp thông tin cá nhân của người sử dụng được an toàn và đảm bảo không bị đánh cắp tài khoản.
➢ Firebase Hosting:
Hosting được phân phối qua tiêu chuẩn công nghệ bảo mật SSL từ mạng CDN (Content Delivery Network) - mạng lưới máy chủ lưu giữ bản sao của các nội dung tĩnh bên trong website và phân phối đến nhiều máy chủ PoP.
Mạng lưới máy chủ CDN được đặt ở khắp mọi nơi trên toàn cầu. Từ PoP (Points of Presence), dữ liệu sẽ tiếp tục được gửi đến người dùng cuối. Thông qua CDN, bản sao nội dung trên máy chủ gần nhất sẽ được trả về cho người dùng khi họ truy cập website.
Hoạt động này giúp lập trình viên tiết kiệm thời gian thiết kế, xây dựng và phát triển ứng dụng.
3.3.4 Ưu nhược điểm của Firebase
a) Ưu điểm
✓ Tạo tài khoản và sử dụng dễ dàng: Firebase cho phép người dùng đăng nhập bằng tài khoản Google đơn giản. Gói Spark của Firebase miễn phí và cung cấp nhiều Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 34