M Ụ C L Ụ C L Ờ I C ẢM ƠN 1 PH Ầ N 1 M Ở ĐẦ U 1 1 Lý do ch ọn đề tài 1 2 M ụ c tiêu c ủa đề tài 2 3 Đối tƣợ ng và ph ạ m vi nghiên c ứ u 2 4 Phƣơng pháp n ghiên c ứ u 2 5 C ấu trúc đề tài 3 PH Ầ N 2 N Ộ I DUNG NGHIÊN C Ứ U 4 CHƢƠNG 1: CƠ SỞ LÝ THUY Ế T 4 1 1 Gi ớ i thi ệ u h ệ điề u hành android 4 1 1 1 H ệ điề u hành 4 1 1 2 H ệ điề u hành Android 4 1 2 S ự ra đờ i và l ị ch s ử phát tri ể n 6 1 2 1 S ự ra đờ i c ủ a Android 6 1 2 2 L ị ch s ử phát tri ể n c ủ a Android 6 1 3 Sơ lƣợ c v ề Android Studio 7 1 4 Tìm hi ể u chung v ề Java 8 1 5 T ổ ng quan v ề Firebase 11 1 5 1 Khái ni ệ m 11 1 5 2 L ị ch s ử phát tri ể n c ủ a Firebase 12 1 5 3 Ưu nhược điể m c ủ a Firebase 12 1 5 4 D ị ch v ụ Firebase 13 1 5 5 D ị ch v ụ Firebase Analytics 13 1 5 6 Các d ị ch v ụ phát tri ể n và ki ể m th ử ứ ng d ụ ng 14 1 5 7 Các d ị ch v ụ tăng trưởng và thu hút ngườ i dùng 15 CHƢƠNG 2: PHẦ N TÍCH VÀ THI Ế T K Ế Ứ NG D Ụ NG 18 2 1 Mô t ả bài toán 18 2 2 Phân tích h ệ th ố ng 18 2 2 1 Xác đị nh yêu c ầ u c ủ a h ệ th ố ng 18 2 2 2 Bi ểu đồ Use case 19 2 2 3 Bi ểu đồ tu ầ n t ự 24 2 2 4 Bi ểu đồ l ớ p 29 2 3 Phân tích và thi ế t k ế d ữ li ệ u 30 2 3 1 Mô hình công ngh ệ ứ ng d ụ ng 30 2 3 2 Mô hình d ữ li ệ u 30 2 3 3 Các b ả ng d ữ li ệ u 30 CHƢƠNG 3: TRIỂ N KHAI H Ệ TH Ố NG 33 3 1 Cài đặ t d ữ li ệ u 33 3 2 Các giao di ệ n chính c ủ a App 34 3 2 1 Giao di ệ n App Admin 34 3 2 2 Giao di ệ n App User 39 PH Ầ N 3: K Ế T LU Ậ N 42 1 Điể m m ạ nh: 42 2 Điể m y ế u: 42 3 Hƣớ ng phát tri ể n: 42 TÀI LI Ệ U THAM KH Ả O 43 L Ờ I C ẢM ƠN Để hoàn thành khoá lu ậ n t ố t nghi ệ p này, l ời đầ u tiên em xin chân thành c ảm ơn đế n toàn th ể th ầ y cô trong trong Khoa Toán - Tin nh ững người đã tậ n tình hướ ng d ẫ n, d ạ y d ỗ và trang b ị cho em ki ế n thúc b ổ ích trong 4 năm vừ a qua Đặ c bi ệ t xin chân thành g ử i l ờ i c ảm ơn sâu sắc đế n cô Tr ầ n Th ị Di ệ u Hi ề n , người đã tận tình hướ ng d ẫ n, tr ự c ti ế p ch ỉ b ả o và t ạ o m ọi điề u ki ệ n giúp đỡ em trong su ố t quá trình làm khoá lu ậ n t ố t nghi ệ p Sau cùng em xin g ử i l ờ i c ảm ơn chân thành tới gia đình, bạn bè đã độ ng viên, c ổ vũ và đóng góp ý kiế n trong quá trình h ọ c t ậ p, nghiên c ứu cũng như quá trình làm khoá lu ậ n t ố t nghi ệ p này Em xin chân thành c ảm ơn! 1 PH Ầ N 1 M Ở ĐẦ U 1 Lý do ch ọn đề tài Công vi ệc kinh doanh buôn bán đã xuấ t hi ệ n t ừ r ấ t lâu, trãi qua m ọ i giai đoạ n l ị ch s ử nó mang hình th ức đặc thù riêng Trướ c kia, khi các công c ụ h ổ tr ợ công vi ệc mua bán chưa phát triể n m ạnh, thì ngườ i kinh doanh mua bán ch ỉ di ễ n ra dướ i hình th ứ c mua bán tr ự c ti ế p T ừ khi khoa h ọ c công ngh ệ phát tri ển, nó đã t ạ o ra phát tri ể n các lo ạ i hình th ứ c mua bán m ới, điể n hình là mua bán tr ự c tuy ế n Hình th ứ c mua bán tr ự c tuy ế n h ổ tr ợ đắ c l ực cho ngườ i kinh doanh ti ế p xúc v ới đượ c nhi ề u khách hàng, còn khách hàng thì công vi ệc mua bán đượ c di ễ n ra nhanh chóng, thu ậ n l ợ i, ti ế t ki ệm đượ c th ời gian, … Hi ện nay, Thương mại điệ n t ử (TMĐT) đang đượ c nhi ề u qu ố c gia quan tâm, coi là m ộ t trong nh ững độ ng l ự c phát tri ể n ch ủ y ế u c ủ a n ề n kinh t ế TMĐT đem lạ i nh ữ ng l ợ i ích ti ề m tàng, giúp doanh nghi ệp thu đượ c thông tin phong phú v ề th ị trường và đố i tác, gi ả m phí ti ế p th ị và giao d ị ch, t ạ o d ự ng và c ủ ng c ố quan h ệ b ạ n hàng Vi ệ c mua hàng qua m ạ ng ch ỉ v ớ i th ủ t ục đăng ký mua sắm đơn giả n nhưng đem lạ i nhi ề u l ợ i ích: ti ế t ki ệ m và ch ủ độ ng v ề th ờ i gian, tránh kh ỏ i nh ữ ng phi ề n ph ứ c khó ch ị u V ậ y nên vi ệ c mua bán hàng qua m ạng đang rấ t đượ c m ọi ngườ i quan tâm Tr ên cơ sở các ki ế n th ức đượ c h ọc trong nhà trườ ng và quá trình tìm hi ể u các website trong th ự c t ế, em đã quyết đị nh ch ọn đề tài: “Xây dự ng ứ ng d ụ ng đặt đồ ăn qua mạ ng trên n ề n t ảng Android” - Ph ụ c v ụ t ốt hơn nhu cầ u c ủ a khách hàng và qu ả n lý c ủ a nhà hàng trong ho ạt độ ng kinh doanh - Khách hàng ch ỉ c ần các thao tác đơn giản trên điệ n tho ại di độ ng là có th ể đặt hàng đượ c ngay 2 2 M ụ c tiêu c ủa đề tài Ứ ng d ụng đặt đồ ăn qua mạ ng ch ạ y trên n ề n t ảng Android đượ c th ự c hi ệ n d ự a trên hai m ục đích chính sau: + Th ứ nh ấ t, là nghiên c ứ u các công ngh ệ l ập trình như: lậ p trình ứ ng d ụ ng v ớ i Android + Th ứ hai, là phát tri ể n ứ ng d ụ ng có tính th ự c ti ễ n cao, có kh ả năng triể n khai ứ ng d ụ ng vào th ự c t ế , giúp nh ững ngườ i có nhu c ầ u mua bán th ức ăn có th ể thao tác d ễ dàng và ti ệ n l ợ i Em hy v ọ ng d ự a trên n ề n t ả ng lý thuy ết đã đượ c th ầ y cô truy ề n th ụ l ạ i, k ế t h ợ p v ớ i s ự tìm hi ể u công ngh ệ c ủ a cá nhân, khoá lu ậ n t ố t nghi ệ p c ủ a em s ẽ đạ t đượ c m ục đích mong đợ i 3 Đối tƣợ ng và ph ạ m vi nghiên c ứ u Xây d ự ng ứ ng d ụng đặt đồ ăn qua mạ ng Trong th ời đạ i thương mại điệ n t ử đang ngày càng phát triể n, vi ệ c ứ ng d ụ ng vào ho ạt động “Ứ ng d ụ ng bán hàng tr ự c tuy ến” đã mang lạ i nhi ều ý nghĩa như: - Đỡ t ố n nhi ề u th ời gian cho người tiêu dùng cũng như nhà quả n lý trong vi ệ c tham gia vào ho ạt độ ng mua bán hàng - Giúp người tiêu dùng có đượ c giá c ả và hình ả nh m ặ t hàng m ộ t cách chính xác - Nhà qu ả n lý có th ể th ố ng kê các s ả n ph ẩ m bán ch ạ y m ộ t cách nhanh nh ấ t giúp cho ho ạt độ ng s ả n xu ấ t kinh doanh c ủ a mình tr ở nên t ốt hơn 4 Phƣơng pháp nghiên cứ u - V ề m ặ t lý thuy ế t Đề tài “Xây dự ng ứ ng d ụng đặt đồ ăn qua mạ ng trên n ề n t ảng Android” là m ộ t ứ ng d ụ ng ch ạy trên điệ n tho ạ i s ử d ụ ng h ệ điề u hành Android Ứ ng d ụ ng g ồ m: 3 Ph ầ n ứ ng d ụ ng ch ạy trên điệ n tho ại đượ c phát tri ể n trên n ề n Android SDK Ph ầ m m ề m qu ản lý cho phép ngườ i qu ả n lý có th ể xoá c ậ p nh ật món ăn, x ử lý các thông tin t ừ ứ ng d ụ ng Android g ở i v ề Dưới đây là nhữ ng ch ức năng chính mà em dự đị nh phát triên ở phiên b ả n đầ u tiên c ủ a ứ ng d ụ ng này: • Tìm hi ể u các ho ạt độ ng kinh doanh ứ ng d ụ ng trên Android • Tìm hi ể u các th ứ c xây d ự ng m ộ t ứ ng d ụ ng trên Android • Xây d ự ng thành công ứ ng d ụng đặt đồ ăn qua mạ ng trên Android • Xây d ự ng ph ầ n m ề m qu ả n lý • Tìm hi ể u cách th ứ c xây d ự ng ứ ng d ụ ng bán hàng • Tìm hi ể u b ộ Android Development Tool - V ề m ặ t l ậ p trình • Chương trình thự c hi ện đượ c các yêu c ầu đề ra c ủa đề tài • Ứ ng d ụng đặt đồ ăn đã phầ n nào xây d ựng và đáp ứ ng m ộ t s ố ch ứ c năng chính • Qu ả n lý vi ệc đặ t hàng, x ử lý gi ỏ hàng, … • X ử lý th ố ng kê theo yêu c ầu như: Đơn hàng, hoá đơn • Cho phép tìm ki ế m thông tin trong h ệ th ống, … • Giao di ệ n thân thi ệ n d ễ s ử d ụ ng - V ề m ặ t ho ạt độ ng • Chương trình chỉ th ự c hi ện đầy đủ các ch ức năng ở ph ạ m vi thành ph ố 5 C ấu trúc đề tài PH Ầ N 1 M Ở ĐẦ U PH Ầ N 2 N Ộ I DUNG NGHIÊN C Ứ U Chương 1: Cơ sở lý thuy ế t Chương 2: Phân tích và thi ế t k ế ứ ng d ụ ng Chương 3: Tri ể n khai h ệ th ố ng 4 PH Ầ N 3 K Ế T LU Ậ N TÀI LI Ệ U THAM KH Ả O PH Ầ N 2 N Ộ I DUNG NGHIÊN C Ứ U CHƢƠNG 1: CƠ SỞ LÝ THUY Ế T 1 1 Gi ớ i thi ệ u h ệ điề u hành android 1 1 1 H ệ điề u hành H ệ điề u hành là m ộ t ph ầ n m ềm dùng để điề u hành, qu ả n lý các thi ế t b ị ph ầ n c ứ ng và các tài nguyên ph ầ n m ề m H ệ điều hành đóng vai trò trung g ian trong vi ệ c giao ti ế p gi ữa ngườ i s ử d ụ ng và ph ầ n c ứ ng c ủ a máy, cung c ấ p m ộ t môi trường cho phép ngườ i s ử d ụ ng phát tri ể n và th ự c hi ệ n các ứ ng d ụ ng c ủ a h ọ m ộ t cách d ễ dàng 1 1 2 H ệ điề u hành Android Android là h ệ điều hành trên điệ n tho ại di độ ng có màn hình c ả m ứng như điệ n tho ạ i thông minh, máy tính b ả ng và trên m ộ t s ố đầ u phát HD, HD Player, TV Đượ c phát tri ể n b ở i Google và d ự a trên n ề n t ảng Linux Trước đây Android đượ c phát tri ể n b ở i công ty liên h ợp Android, sau đó đượ c Google mua l ạ i vào năm 2005 Các n hà phát tri ể n vi ế t ừ ng d ụ ng b ằ n cho Android b ằ ng ngôn ng ữ Java Android ra m ắ t l ần đầu tiên vào ngày 5 tháng 11 năm 2007 và tuyên bố thành l ậ p Liên minh thi ế t b ị c ầ m tay m ở M ộ t hi ệ p hi ệ p h ội đượ c thành l ậ p v ớ i các công ty ph ầ n c ứ ng, ph ầ n m ề m và vi ễ n thông v ớ i m ục đích tạ o nên m ộ t chu ẩ n m ở cho điệ n tho ại thông minh trong tương lai Android là h ệ điề u hành mã ngu ồ n m ở cùng v ớ i vi ệ c phát hành mã ngu ồ n m ở theo gi ấ y phép Apache c ủ a Google Apache là là m ộ t gi ấ y phép không có nhi ề u ràng bu ộ c cùng v ớ i mã ngu ồ n m ở đã cho phép các nhà phát triể n thi ế t b ị di,các nhà m ạ ng và các l ậ p trình viên nhanh chóng ti ế p c ận điể u ch ỉ nh và phân ph ố i Android m ộ t cách t ự do M ộ t s ố lượ ng l ớ n l ậ p trình viên chuyên vi ế t các 5 ứ ng d ụ ng m ở r ộ ng ch ức năng củ a các thi ế t b ị , b ằ ng ngôn ng ữ l ậ p trình Java có s ửa đổ i Nh ờ y ế u t ố m ở và m ộ t gi ấ y phép không có nhi ề u ràng bu ộ c, Android ngày nay đã trở thành m ộ t trong nh ữ ng n ề n t ả ng d ị độ ng n ổ i ti ế ng kh ắ p th ế gi ớ i B ằ ng ch ứ ng là v ớ i b ả n ch ất “mở” của mình thì Android đã thu hút đượ c m ộ t c ộng đồ ng l ậ p trình viên, chuyên viên phát tri ể n ứ ng d ụ ng, theo thông kê tháng 10 năm 2012 đã xuấ t hi ệ n kho ả ng 700 000 ứ ng d ụ ng Android và s ố lượ ng t ả i t ừ Google Play, c ử a hàng ứ ng d ụ ng chính c ủa Android được ướ c tính vào kho ả ng 25 t ỷ lượ t V ề m ặ t thi ế t b ị thì n ề n t ả ng này liên t ục đượ c các nhà s ả n xu ấ t thi ế t b ị l ự a ch ọ n khi mà Android h ộ i t ụ quá nhi ều ưu điểm như: vậ n hành nh ẹ nhàng, có kh ả năng tinh chỉ nh t ố t và ti ế t ki ệm chi phí để ch ạ y trên các thi ế t b ị công ngh ệ cao c ủ a mình Hình 1 Kho ứ ng d ụ ng Android Vào th ời điểm quý II năm 2017 Android đã chiế m 87,7% th ị ph ầ n smartphone trên toàn th ế gi ớ i 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 Đây có thể đượ c xem là m ộ t d ấ u ấ n m ạ nh m ẽ nh ấ t trong công cu ộ c kh ẳng đị nh v ị th ế c ủ a Android trên th ị trườ ng qu ố c t ế 6 1 2 S ự ra đờ i và l ị ch s ử phát tri ể n 1 2 1 S ự ra đờ i c ủ a Android Cha đẻ c ủ a Android: h ệ điều hành Android đượ c l ấ y tên t ừ Android, Inc công ty khai sinh ra nó Công ty này đượ c thành l ậ p t ạ i Palo Alto, California vào tháng 10 năm 200 3 b ở i Andy Rubin, Rich Miner, và Chris White M ặ c dù nh ữ ng ngườ i sáng l ậ p và nhân viên c ủa công ty đề u là nh ững ngườ i có ti ếng tăm, Android Inc v ẫ n ho ạt độ ng m ộ t cách âm th ầ m, ch ỉ ti ế t l ộ r ằ ng h ọ đang làm phầ n m ềm cho điệ n tho ại di độ ng Cu ối năm 2003, Rub in c ạ n v ố n B ạ n thân c ủ a ông Steve Perlman, đã hùn vốn 10 ngàn USD nhưng từ ch ố i tham gia vào công ty 1 2 2 L ị ch s ử phát tri ể n c ủ a Android Tr ở thành m ộ t ph ầ n c ủ a Google: ngày 17/08/2005 Google mua l ạ i Android Inc, bi ế n nó thành m ộ t ph ầ n tr ự c thu ộ c c ủ a Google Nh ữ ng nhân viên ch ủ ch ố t c ủ a t ổ ng công ty Android v ẫ n là Rubin, Miner và While v ẫ n ti ế p t ụ c ở l ạ i phát tri ể n h ệ điề u hành c ủ a h ọ Quy ết định này đưa ra để s ử d ụ ng Linux làm làm n ề n t ả ng cho h ệ điều hành Android và điều đó cũng có nghĩa là Android sẽ đượ c cung c ấ p mi ễ n phí cho các nhà s ả n xu ất điệ n tho ại di độ ng c ủ a bên th ứ ba Google và nhóm Android c ả m th ấ y công ty có th ể ki ế m ti ề n v ớ i các d ị ch v ụ khác s ử d ụ ng h ệ điề u hành, bao g ồ m c ả ứ ng d ụ ng T ại Google, nhóm do Rubin đứng đầu đã phát triể n m ộ t n ề n t ả ng thi ế t b ị di độ ng d ựa trên nhân Linux, đượ c h ọ ti ế p th ị đế n các nhà s ả n xu ấ t thi ế t b ị c ầ m và các nhà m ạ ng trên nh ữ ng ti ền đề v ề vi ệ c cung c ấ p m ộ t h ệ th ố ng m ề m d ẻ o, có kh ả năng nâng cấ p m ở r ộ ng cao M ộ t s ố ngu ồ n tin cho bi ết trước đó Google đã lên danh sách các thành ph ầ n ph ầ n c ứng và các đố i tác ph ầ n m ềm, đồ ng th ờ i ra hi ệ u v ớ i các nhà m ạ ng r ằ ng h ọ s ẵ n sàng h ợ p tác ở nhi ề u c ấp độ khác nhau Ngày càng nhi ều suy đoán rằ ng Google s ẽ tham gia th ị trường điệ n tho ại di độ ng xu ấ t hi ện trong tháng 12 năm 2006 Tin tứ c c ủ a BBC và Nh ậ t báo ph ố Wall chú thích r ằ ng Google mu ốn đưa công nghệ tìm ki ế m và các ứ ng d ụ ng c ủ a h ọ vào điệ n tho ại di độ ng và h ọ đang nỗ l ự c làm vi ệc để th ự c hi ện điều này Các phương tiệ n 7 truy ền thông in và online cũng sớ m có bài vi ế t v ề nh ững tin đồ n cho r ằ ng Google đang phát triể n m ộ t thi ế t b ị c ầm tay mang thương hiệ u c ủ a Google Càng có nhi ều suy đoán sau bài viế t v ề vi ệc Google đang định nghĩa các đặ c t ả công ngh ệ và trình di ễ n các m ẫ u th ử v ớ i các nhà s ả n xu ất điệ n tho ại di độ ng và nhà m ạ ng Android liên t ục đượ c phát tri ể n, m ỗ i b ả n c ậ p nh ậ t t ừ Google là m ỗ i l ầ n Android đượ c t ối ưu hóa hoạt độ ng t ốt hơn, nhanh và ổn định hơn, hỗ tr ợ thêm công ngh ệ m ớ i Ch ẳ ng h ạn theo đanh giá thì Android phiên bả n 2 2 ho ạt độ ng nhanh hơn bả n 2 1 t ớ i 450% Hi ệ n nay, phiên b ả n m ớ i nh ấ t c ủ a Android là phiên b ả n Android Q 1 3 Sơ lƣợ c v ề Android Studio Có nhi ề u công c ụ để phát tri ển Android nhưng đế n nay công c ụ chính th ứ c và m ạ nh m ẽ nh ất là Android Studio Đây là Môi trườ ng phát tri ể n tích h ợ p (IDE) chính th ứ c cho n ề n t ả ng A ndroid, đượ c phát tri ể n b ởi Google và đượ c s ử d ụng để t ạ o ph ầ n l ớ n các ứ ng d ụ ng có th ể s ử d ụ ng hàng ngày Android Studio l ần đầu tiên đượ c công b ố t ạ i h ộ i ngh ị Google I/O vào (năm 2013 và được phát hành cho công chúng vào năm 2014 sau nhiề u phiên b ả n beta khác nhau Trước khi đượ c phát hành, các nhà phát tri ể n Android thườ ng s ử d ụ ng các công c ụ như Eclipse IDE, một IDE Java chung cũng hỗ tr ợ nhi ề u ngôn ng ữ l ậ p trình khác Android Studio là m ộ t ph ầ m m ề m bao g ồ m các b ộ công c ụ khác nhau dùng để phát tri ể n ứ ng d ụ ng ch ạ y trên thi ế t b ị s ử d ụ ng h ệ điề u hành Android như các loại điệ n tho ại smartphone, các tablet Android Studio được đóng gói v ớ i m ộ t b ộ code editor, debugger, các công c ụ performance tool và m ộ t h ệ th ố ng build/deploy (trong đó có trình giả l ậ p simu lator để gi ả l ập môi trườ ng c ủ a thi ế t b ị điệ n tho ạ i ho ặ c tablet trên máy tính) cho phép các l ậ p trình viên có th ể nhanh chóng phát tri ể n các ứ ng d ụ ng t ừ đơn giả n t ớ i ph ứ c t ạ p 8 1 4 Tìm hi ể u chung v ề Java Java là m ộ t ngôn ng ữ l ập trình đượ c Sun Microsystems gi ớ i thi ệ u vào tháng 6 năm 1995 Từ đó, nó đã trở thành m ộ t công c ụ l ậ p trình c ủ a các l ậ p trình viên chuyên nghi ệp Java đượ c xây d ự ng trên n ề n t ả ng c ủ a C và C++ Do v ậ y nó s ử d ụ ng các cú pháp c ủa C và đặc trưng hướng đối tượ ng c ủ a C++ Vào năm 1991, mộ t nhóm kyc sư của Sun Microsystems có ý đị nh thi ế t k ế m ộ t ngôn ng ữ l ập trình để điề u khi ể n các thi ế t b ị điệ n t ử như tivi, máy giặ t, lò nướng, … Mặ c dù C và C++ có kh ả năng làm việc này nhưng trình biên dị ch l ạ i ph ụ thu ộ c vào t ừ ng lo ạ i CPU Trình biên d ịch thườ ng ph ả i t ố n nhi ề u th ời gian để xây d ự ng nên r ất đắ t Vì v ậy để m ỗ i lo ạ i CPU có m ộ t trình biên d ị ch riêng là r ấ t t ốn kém Do đó nhu c ầ u th ự c t ế đòi hỏ i m ộ t ngôn ng ữ ch ạ y nhanh, g ọ n hi ệ u qu ả và độ c l ậ p thi ế t b ị t ứ c là có th ể ch ạ y trên nhi ề u lo ạ i CPU khác nhau, dưới các môi trườ ng khác nhau “Oak” đã ra đời và vào năm 1995 được đổ i tên thành Java M ặ c dù m ụ c tiêu ban đầ u không ph ải cho Internet nhưng do đặc trưng không phụ thu ộ c thi ế t b ị nên Java đã trở thành ngôn ng ữ l ậ p trình cho Internet Java là m ộ t công ngh ệ xây d ự ng các ứ ng d ụ ng ph ầ n m ề m có v ị trí r ấ t l ớ n trong nh ững năm cuố i th ế k ỉ 20, đầ u th ế k ỉ 21 Nó đượ c coi là công ngh ệ mang tính cách m ạ ng và kh ả thi nh ấ t trong vi ệ c t ạ o ra các ứ ng d ụ ng có kh ả năng chạ y th ố ng nh ấ t trên nhi ề u n ề n t ả ng mà ch ỉ c ầ n biên d ị ch m ộ t l ầ n Ngày nay, Java là m ộ t n ề n t ả ng t ấ t y ế u c ủ a các ứ ng d ụ ng quy mô l ớ n c ủ a các doanh nghi ệ p nh ờ vào kh ả năng mở r ộng cũng như nhữ ng n ề n t ả ng vô cùng phong phú mà nó cung c ấp Java đã trải 3 bướ c phát tri ể n quan tr ọ ng: Java 1 0 g ắ n li ề n v ớ i b ả n JDF đầ u tiên, Java 2 g ắ n v ớ i JDK 1 2 và Java 5 g ắ n v ớ i J2SDK 1 5 Đố i v ới Java ngườ i ta không còn nh ắc đến thư là 1 ngôn ngữ l ậ p tình mà nh ắc đế n m ộ t công ngh ệ hay n ề n t ả ng phát tri ể n, nó bao g ồ m các b ộ ph ậ n: - Máy ả o Java: JVM 9 - B ộ công c ụ phát tri ể n: J2SDK - Các đặ t t ả chi thi ết kĩ thuậ t (specifications) - Ngô ng ữ l ậ p tình (programming language) - Các công ngh ệ đi kèm như: JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI,… và Framework như: Struts, Spring, JSF, Hibermate,JavaFX,, … * Nh ững ưu điể m c ủ a Java: • Đơn gi ả n (Simple): Java đươn gi ả n vì m ặ c dù d ự a trên cơ s ở C++ nhưng Sun đã cârn th ậ n lư ợ c b ỏ các tính năng khó nh ấ t c ủ a C++ đ ể làm cho ngôn ng ữ này d ễ s ử d ụ ng hơn Là m ộ t ngôn ng ữ l ậ p trình hoàn toàn m ớ i, nó bu ộ c ph ả i có dáng v ẻ và s ự c ả m nh ậ n tương t ự như các ng ôn ng ữ ph ổ bi ế n hi ệ n hành đ ồ ng th ờ i đòi h ỏ i kho ả ng th ờ i gian hu ấ n luy ệ n l ạ i t ố i thi ể u và thân thi ệ n hơn v ớ i ngư ờ i dùng Do đơn gi ả n, ngôn ng ữ này cũng r ấ t khó – nên nh ớ r ằ ng t ừ đ ầ u nó đã đư ợ c xây d ự ng đ ể dùng cho đi ệ n t ử dân d ụ ng như đ ầ u ch ạ y b ằ ng video và h ộ p đi ề u khi ể n t ừ xa, nh ữ ng thi ế t b ị có không gian lưu tr ữ r ấ t h ạ n ch ế • Hư ớ ng đ ố i tư ợ ng (Object Oriented): Hư ớ ng đ ố i tư ợ ng trong Java tương t ự như C++ nhưng Java là m ộ t ngôn ng ữ l ậ p trình hư ớ ng đ ố i tư ợ ng hoàn toàn T ấ t c ả m ọ i th ứ đ ề c ậ p đ ế n trong Java đ ề u liên quan đ ế n các đ ố i tư ợ ng đư ợ c đ ị nh nghĩa trư ớ c, th ậ m chí hàm chính c ủ a m ộ t chương trình vi ế t b ằ ng Java (đó là hàm main) cũng ph ả i đ ặ t bên trong m ộ t l ớ p Hư ớ ng đ ố i tư ợ ng trong Java không có tính đa k ế th ừ a (multi inheritance) như trong C++ mà thay vào đ ó Java đưa ra khái ni ệ m interface đ ể h ỗ tr ợ tính đa k ế th ừ a • Hi ể u m ạ ng (Network - savvy): Java đư ợ c l ậ p ra đ ể ho ạ t đ ộ ng trên m ạ ng và có các th ủ t ụ c đ ể có th ể qu ả n lý các giao th ứ c m ạ ng như TCP/IP, FTP và HTTP Nói cách khác, Java đư ợ c xây d ự ng đ ể th ự c hi ệ n h oàn toàn thích h ợ p trên Internet Chương trình Java th ậ m chí có th ể xâm nh ậ p vào các đ ố i tư ợ ng khác thông qua Internet b ằ ng cách s ử d ụ ng URL (đ ị a ch ỉ Web) đ ể đ ị nh v ị chúng 10 • M ạ nh m ẽ (Robust): Kh ả năng m ạ nh ph ả i phù h ợ p v ớ i thi ế t k ế c ủ a ngôn ng ữ , và hư ớ ng nó vào vi ệ c kh ắ c ph ụ c nh ữ ng hư h ỏ ng b ộ nh ớ và đ ả m b ả o tính toàn v ẹ n d ữ li ệ u Ví d ụ , Java có tính năng “Automatic Garbage Collection” (t ự đ ộ ng thu gom rác) – có nghĩa là b ộ nh ớ đư ợ c gi ả i phóng m ộ t cách t ự đ ộ ng – nên l ậ p trình viên không ph ả i b ậ n tâm v ề vi ệ c q u ả n lý b ộ nh ớ và nh ờ đó ít có xu hư ớ ng làm nh ữ ng vi ệ c gây h ỏ ng b ộ nh ớ • An toàn (Secure): Kh ả năng hư ớ ng m ạ ng c ủ a Java t ự đ ộ ng đưa ra yêu c ầ u v ề an toàn Đ ặ c tính ân toàn c ủ a ngôn ng ữ l ậ p trình này b ắ t ngu ồ n t ừ vi ệ c nó có nh ữ ng ph ầ n h ạ n ch ế đư ợ c cài s ẵ n nh ằ m đ ề phòng các chương trình Java th ự c hi ệ n nh ữ ng ch ứ c năng như ghi vào ổ c ứ ng c ủ a ngư ờ i dùng hay cho phép virus t ừ m ạ ng ho ặ c t ừ môi trư ờ ng phân tán xâm nh ậ p vào • Đ ộ c l ậ p v ớ i c ấ u trúc (Architecture neutral): Đây là thu ộ c tính đ ặ c s ắ c nh ấ t c ủ a Java Java đư ợ c t ạ o ra v ớ i tiêu chí “Vi ế t (code) m ộ t l ầ n, th ự c thi kh ắ p nơi” (“Write Once, Run Anywhere” (WORA)) Tính năng biên d ị ch m ộ t l ầ n và ch ạ y nhi ề u n ề n có th ể đ ạ t đư ợ c nh ờ just - in - time compiler (JIT), chuy ể n mã bytecode c ủ a Java sang mã máy khi chương trình đang ch ạ y Chương trình ph ầ n m ề m vi ế t b ằ ng Java có th ể ch ạ y trên m ọ i n ề n t ả ng (platform) khác nhau thông qua m ộ t môi trư ờ ng th ự c thi v ớ i đi ề u ki ệ n có máy ả o java thích h ợ p h ỗ tr ợ n ề n t ả ng đó Môi trư ờ ng th ự c thi c ủ a Sun Microsystems hi ệ n h ỗ tr ợ Sun Solaris, Li nux, Mac OS, FreeBSD, Windows và nhi ề u h ệ th ố ng cài đ ặ t trên các thi ế t b ị di đ ộ ng • Di đ ộ ng (Portable): Đ ố i v ớ i m ộ t ph ạ m vi r ộ ng, Java là lo ạ i có th ể di chuy ể n nh ờ kh ả năng đ ộ c l ậ p v ớ i h ệ máy Đ ồ ng th ờ i, các lo ạ i d ữ li ệ u, giao di ệ n, cũng như dáng v ẻ và c ả m nh ậ n c ủ a Java đ ề u gi ố ng nhau trên m ọ i h ệ máy H ệ th ố ng các thành ph ầ n c ủ a java cũng có tính di đ ộ ng cao – nó đư ợ c vi ế t b ằ ng Java • Thông d ị ch (Interpreter): Java là m ộ t ngôn ng ữ l ậ p trình v ừ a biên d ị ch v ừ a thông d ị ch Chương trình ngu ồ n vi ế t b ằ ng ngôn ng ữ l ậ p trình Java có đuôi * java đ ầ u tiên đư ợ c biên d ị ch thành t ậ p tin có đuôi * class và sau đó s ẽ đư ợ c trình thông d ị ch thông d ị ch thành mã máy Đ ể ch ạ y Java bytecode, c ầ n cài đ ặ t 11 JRE (Java Runtime Environment) JRE cung c ấp các thư viện cơ bả n, Java Virtual Machine, plugin cho trình duy ệ t, và nh ữ ng th ứ khác • T ố c đ ộ cao (High perfprmance): Khi Sun Microsystems mô t ả Java có t ố c đ ộ cao, có l ẽ h ọ mu ố n nói v ề mã bytecode đư ợ c thông d ị ch hi ệ u qu ả như th ế nào (Java thư ờ ng ch ạ y nhanh hơn nh ữ ng ngôn ng ữ l ậ p trình th ông d ị ch khác như Python, Perl, PHP, …) V ề t ố c đ ộ các applet hay chương trình Java thì nói chung đ ề u ch ậ m hơn các chương trình đư ợ c biên d ị ch vi ế t b ằ ng C++, vì chương trihf này đã đư ợ c t ố i ưu hoá t ừ trư ớ c cho h ệ máy nh ấ t đ ị nh Java đã ph ả i tr ả giá v ề hi ệ u su ấ t cho tính không ph ụ thu ộ c h ệ th ố ng c ủ a nó • Đa lu ồ ng (Multithreaded): Đa lu ồ ng có nghĩa là ngôn ng ữ Java cho phép xây d ự ng tình ứ ng d ụ ng Trong đó, nhi ề u quá trình có th ể x ả y ra đ ồ ng th ờ i Tính đa lu ồ ng cho phép các nhà l ậ p trình có th ể biên so ạ n ph ầ n m ề m đáp ứ ng t ố t hơn, tương tác t ố t hơn, và th ự c hi ệ n theo th ờ i gian th ự c • Tính đ ộ ng (Dynamic): Java đ ộ ng vì nó đư ợ c thi ế t k ế đ ể đáp ứ ng v ớ i môi trư ờ ng tác nghi ệ p luôn trong tình tr ạ ng thay đ ổ i Khi có yêu c ầ u m ớ i xu ấ t hi ệ n trên th ị trư ờ ng, các lo ạ i đ ố i tư ợ ng m ớ i có th ể đư ợ c b ổ sung vào ngay 1 5 T ổ ng quan v ề Firebase 1 5 1 Khái ni ệ m Có nhi ề u cách hi ể u v ề Firebase khi đứng trên các quan điể m khác nhau, sau đây là 2 khái niệm cơ bả n Firebase là m ộ t n ề n t ảng di động giúp ngườ i dùng nhanh chóng phát tri ể n các ứ ng d ụ ng ch ất lượ ng cao, phát tri ể n ứ ng d ụng cho ngườ i dùng quy mô l ớ n và ki ếm đượ c nhi ề u ti ền hơn Firebase là m ộ t d ị ch v ụ h ế th ống backend đượ c Google cung c ấ p s ẵ n cho ứ ng d ụ ng Mobile, v ới Firebase ngườ i dùng có th ể rút ng ắ n th ờ i gian phát tri ể n, tri ể n khai và th ờ i gian m ở r ộ ng quy mô c ủ a ứ ng d ụng mobile mình đang phát tri ể n H ỗ tr ợ c ả 2 n ề n t ả ng Android và IOS, Firebase m ạ nh m ẽ, đa năng, bả o m ậ t 12 và là d ị ch v ụ c ầ n thi ết đâu tiên để xây d ự ng ứ ng d ụ ng v ớ i hàng tri ệu ngườ i s ử d ụ ng 1 5 2 L ị ch s ử phát tri ể n c ủ a Firebase Firebase có ti ền thân là Envolve Đây là dị ch v ụ cung c ấ p nh ững API để ngườ i dùng d ễ dàng tích h ợp tính năng chat vào trang web Điề u thú v ị là ngườ i dùng Envolve s ử d ụ ng d ị ch v ụ để truy ề n d ữ li ệ u ch ứ không đơn thuầ n cho ứ ng d ụ ng chat H ọ s ử d ụng Envolve để đồ ng b ộ d ữ li ệ u c ủ a nh ữ ng ứ ng d ụng như game online, danh b ạ , l ịch… Nhậ n bi ết được điề u này, CEO c ủa Envolve đã tách bi ệ t h ệ th ống chat và đồ ng b ộ d ữ li ệ u th ờ i gian th ự c thành 2 m ả ng riêng bi ệt Đến năm 2012, Firebase đượ c thành l ập như mộ t công ty cung c ấ p d ị ch v ụ Backend-as-a-Service theo th ờ i gian th ự c Ng ử i th ấ y mùi ti ềm năng, năm 2014, Google l ậ p t ứ c mua l ạ i Firebase v ới giá không đượ c ti ế t l ộ Và gi ờ Google phát tri ể n Firebase thành m ộ t d ị ch v ụ đồ s ộ 1 5 3 Ưu nhược điể m c ủ a Firebase 1 5 3 1 Ưu điể m Xây d ự ng nhanh chóng mà không t ố n th ờ i gian, nhân l ực để qu ả n lý h ệ th ống và cơ sở h ạ t ầ ng phía sau: Firebase cung c ấp cho ngườ i dùng ch ức năng như phân tích, cơ sở d ữ li ệ u, báo cáo ho ạt độ ng và báo cáo các s ự c ỗ l ỗi để d ễ dàng phát tri ển, định hướ ng ứ ng d ụ ng c ủa mình vào ngườ i s ử d ụ ng nh ằm đem l ạ i các tr ả i nghi ệ m t ố t nh ấ t cho h ọ Uy tín ch ất lượ ng đả m b ả o t ừ Google: Firebase đượ c google h ỗ tr ợ và cung c ấ p trên n ề n t ả ng ph ầ n c ứ ng v ớ i quy mô r ộ ng kh ắ p th ế gi ới, đượ c các t ập đoàn lớ n và các ứ ng d ụ ng v ớ i tri ệu lượ t s ử d ụ ng t ừ ngườ i dùng Qu ả n lý c ấ u hình và tr ả i nghi ệ m các ứ ng d ụ ng c ủ a Firebase t ậ p trung trong m ộ t giao di ện website đơn giả n, các ứ ng d ụ ng này ho ạt động độ c l ập nhưng liên kế t d ữ li ệ u phân tích ch ặ t ch ẽ 1 5 3 2 Nhược điể m 13 Điể m duy nh ấ t c ủ a Firebase chính là ph ần Realtime Database, mà đúng hơn chỉ là ph ần Database Cơ sở d ữ li ệ u c ủ a Realtime Databa se đượ c t ổ ch ứ c theo ki ể u cây không ph ả i là ki ể u b ả ng nên nh ững ai đang quen vớ i SQL có th ể g ặp khó khăn đôi chút bước đầ u 1 5 4 D ị ch v ụ Firebase Firebase cung c ấp cho ngườ i dùng công c ụ Firebase Analytics và 2 nhóm s ả n ph ẩ m chính t ập trung vào 2 đối tượ ng là: - Develop & test your app: phát tri ể n và ki ể m th ử các ứ ng d ụng đượ c thi ế t k ế - Grow & engage your audience: Phân tích d ữ li ệ u và t ối ưu hóa trả i nghi ệm đố i v ới ngườ i dùng Hình 2 Các d ị ch v ụ c ủ a Firebase 1 5 5 D ị ch v ụ Firebase Analytics Là m ộ t gi ả i pháp mi ễ n phí và phân tích không gi ớ i h ạ n Qu ả n lý hành vi ngườ i dùng và cá bi ệ n pháp t ừ m ộ t b ảng điề u khi ể n duy nh ấ t Phân thích thu ộ c tính và hành vi c ủa ngườ i dùng trong b ảng điề u khi ển đơn để đưa ra các quyế t đị nh sáng su ố t v ề l ộ trình s ả n ph ẩ m Nh ậ n thông tin chi ti ế t v ề th ờ i gian th ự c t ừ 14 báo cáo ho ặ c xu ấ t d ữ li ệ u thô s ự ki ệ n c ủa ngườ i dùng t ới Google BigQuery để phân tích tùy ch ỉ nh 1 5 6 Các d ị ch v ụ phát tri ể n và ki ể m th ử ứ ng d ụ ng Realtime Database : Lưu trữ và đồ ng b ộ d ữ li ệu ngườ i dùng th ờ i gian th ự c, các ứ ng d ụ ng h ỗ tr ợ tính năng này có thể lưu trữ d ữ d ữ li ệ u máy ch ủ trong tích t ắ c Các d ữ li ệu được lưu trữ trong h ệ th ống cơ sở d ữ li ệ u h ỗ tr ợ NoSQL và được đặ t trên n ề n t ả ng máy ch ủ Cloud, d ữ li ệu được ghi và đọ c v ớ i th ờ i gian th ấ p nh ấ t tình b ằ ng mili giây N ề n t ả ng này h ỗ tr ợ đồ ng b ộ hóa d ữ li ệ u c ủ a ngườ i dùng k ể c ả khi không có k ế t n ố i m ạ ng, t ạ o lên tr ả i nghi ệ m xuyên su ố t b ấ t ch ấ p tình tr ạ ng k ế t n ố i internet c ủa ngườ i s ử d ụ ng Reatime Database c ủ a Firebase h ỗ tr ợ : Android, IOS, Web, C++, Unity, và c ả Xamarin Crashlytics : H ệ th ống theo dõi và lưu trữ thông tin l ỗ i c ủ a ứ ng d ụng đang ch ạy trên máy ngườ i dùng Các thông tin l ỗi này đượ c thu th ậ p toàn di ệ n và ngay t ứ c th ờ i Cách trình bày h ợ p lý v ớ i t ừ ng chu trình ho ạt động đế n x ả y ra l ỗ i, Các báo cáo tr ực quan giúp ngườ i phát tri ể n có th ể n ắ m b ắ t và x ử lý k ị p th ờ i các l ỗ i chính c ủ a ứ ng d ụ ng Cloud Firestore : Lưu trữ và đồ ng b ộ d ữ li ệ u gi ữa ngườ i dùng và thi ế t b ị ở quy bô toàn c ầ u s ử d ụng cơ sở d ữ li ệu noSQL được lưu trữ trên h ạ t ầ ng cloud Cloud Firestore cung c ấp tính năng đồ ng b ộ hóa tr ự c tuy ế n và ngo ạ i tuy ế n cùng v ớ i các truy v ấ n d ữ li ệ u hi ệ u qu ả Tích h ợ p v ớ i các s ả n ph ẩ m Firebase khác cho phép xây d ự ng các ứ ng d ụ ng th ự c s ự ngay c ả khi k ế t n ố i internet b ị gián đoạ n Authentication : Qu ản lý ngườ i dùng m ột cách đơn giả n và an toàn Firebase Auth cung c ấ p nhi ều phương pháp xác thự c, bao g ồ m email và m ậ t kh ẩ u, các nhà cung c ấ p bên th ứ ba như Google hay Facebook, và sử d ụ ng tr ự c ti ế p h ệ th ố ng tài kho ả n hi ệ n t ạ i c ủa ngườ i dùng Xây d ự ng giao di ệ n riêng ho ặ c t ậ n d ụ ng l ợ i th ế c ủ a mã ngu ồ n m ở , giao di ện ngườ i dùng tùy bi ế n hoàn toàn Cloud Functions : M ở r ộ ng ứ ng d ụ ng b ằ ng mx ph ụ tr ợ tùy ch ỉ nh mà không c ầ n qu ả n lý và quy mô các máy ch ủ c ủ a riêng b ạ n Các ch ức năng có thể 15 đượ c kích ho ạt bơi các sự ki ện, đượ c phát sinh ra b ở i các s ả n ph ẩ m Firebase, d ị ch v ụ Google Cloud ho ặ c các bên th ứ ba có s ử d ụ ng webhooks Cloud Storage : Lưu trữ và chia s ẻ n ội dung do ngườ i dùng t ạo ra như hình ả nh, âm thanh và video v ớ i b ố nh ớ đối tượ ng m ạ nh m ẽ, đơn giả n và ti ế t ki ệ m chi phí đượ c xây d ự ng cho quy mô c ủ a Google Các Firebase SDK cho Cloud Storage thêm tính n ắ ng b ả o m ậ t c ủa Google để t ả i lên và t ả i t ệ p cho các ứ ng d ụ ng Firebase c ủa ngườ i dùng, b ấ t k ể ch ất lượ ng m ạ ng Hosting : Đơn giản hóa lưu trữ web c ủa ngườ i dùng v ớ i các công c ụ đượ c th ự c hi ệ n c ụ th ể cho các ứ ng d ụ ng web hi ện đạ i Khi t ả i lên n ộ i dung web, h ệ th ố ng s ẽ t ự động đẩy chúng đế n CDN toàn c ầ u c ủ a h ệ th ố ng và cung c ấ p cho h ọ ch ứ ng ch ỉ SSL mi ễn phí để người dùng có đượ c tr ả i nghi ệm an toàn, đáng tin c ậy, độ tr ễ th ấ p dù h ọ ở đâu Test Lab : ch ạ y th ử nghi ệ m t ự độ ng và tùy ch ỉ nh cho ứ ng d ụ ng trên các thi ế t b ị ả o và v ậ t lý do Google cung c ấ p S ử d ụ ng Firebase Test Lab trong su ố t vòng đờ i phát tri ển để khám phá l ỗ i và s ử d ụ ng không nh ất quán để có th ể cung c ấ p m ộ t tr ả i nghi ệ m tuy ệ t v ờ i trên nhi ề u thi ế t b ị Performance Monitoring : Ch ẩn đoán các vấn đề v ề hi ệ u su ấ t ứ ng d ụ ng x ả y ra trên các thi ế t b ị c ủa ngườ i dùng S ử d ụ ng d ấ u v ết để theo dõi hi ệ u su ấ t c ủ a các ph ầ n c ụ th ể trong ứ ng d ụ ng và xem ch ế độ xem t ổ ng h ợ p trong b ả ng điề u khi ể n Firebase Luôn c ậ p nh ậ t th ờ i gian kh ời độ ng c ủ a ứ ng d ụ ng và theo dõi các yêu c ầ u HTTP mà không c ầ n vi ế t b ấ t k ỳ mã nào 1 5 7 Các d ị ch v ụ tăng trưởng và thu hút ngườ i dùng Google Analytics : Phân tích thu ộ c tính và hành vi c ủa ngườ i s ử d ụ ng trong m ộ t b ảng điề u khi ển đơn để đưa ra các quyết đị nh sáng su ố t v ề l ộ trình s ả n ph ẩ m Nh ậ n thông tin chi ti ế t v ề th ờ i gian th ự c t ừ báo cáo ho ặ c xu ấ t d ữ li ệ u s ự ki ệ n thô t ới Google BigQuery để phân tích tùy ch ỉ nh 16 Cloud Messaging : G ử i tin nh ắ n v ả thông báo cho ngườ i dùng qua các n ề n t ả ng Android, IOS và web m ộ t cách mi ễn phí Ngườ i dùng có th ể g ử i tin nh ắ n đế n các thi ế t b ị , nhóm thi ế t b ị ho ặ c các ch ủ để ho ặc phân đoạn ngườ i d ụ ng c ụ th ể Nh ắn tin đám mây Firebase (FCM) thậ m chí là các ứ ng d ụ ng l ớ n nh ấ t, cung c ấp hàng trăm tỷ thư m ỗ i ngày Predictions : Firebase Predictions áp d ụ ng deep learning máy h ọ c v ớ i d ữ li ệ u phân tích c ủa người dùng để t ạo các nhóm người dùng năng độ ng d ự a trên hành vi d ự đoán Các nhóm ngườ i dùng này có th ể đượ c s ử d ụng để nh ằ m m ụ c tiêu trong các s ả n ph ẩ m n hư thông báo, cấ u hình t ừ xa và nhi ều hơn nữ a Dynamic Links : S ử d ụ ng liên k ết động để cung c ấ p tr ả i nghi ệm ngườ i dùng tùy ch ỉnh cho iOS, Android và web Ngườ i dùng có th ể s ử d ụng chúng để h ỗ tr ợ web di độ ng k ể thúc đẩ y chuy ển đổ i ứ ng d ụ ng g ốc, ngườ i dùng chia s ẻ ngườ i dùng, các chi ế n d ị ch xã h ộ và ti ế p th ị và hơn thế n ữ a Dynamic Links cung c ấp cho ngườ i dùng các thu ộc tính ngườ i dùng c ần để hi ểu rõ hơn về tăng trưởng di độ ng c ủa người dùng Đây là dị ch v ụ thay th ế c ủ a Google Remote Config : Tùy ch ỉ nh cách ứ ng d ụ ng c ủa ngườ i dùng hi ể n th ị cho m ỗi người dùng Thay đổ i giao di ệ n, tri ển khai các tính năng dầ n d ầ n, ch ạ y th ử nghi ệ m A/B, cung c ấ p n ộ i dung tùy ch ỉnh cho ngườ i dùng nh ất đị nh ho ặ c th ứ c hi ệ n các c ậ p nh ật khác giám sát tác độ ng c ủ a nh ững thay đổ i c ủ a ngườ i dùng và th ự c hi ện điề u ch ỉ nh ch ỉ trong vài phút Invites: Cho phép ngườ i dùng chia s ẻ t ấ t c ả các khía c ạ nh c ủ a ứ ng d ụ ng c ủ a nhà s ả n xu ấ t ứ ng d ụ ng, t ừ mã gi ớ i thi ệu đế n n ộ i dung yêu thích, qua email ho ặ c SMS Gi ả i pháp out-of-the-box này ho ạt độ ng c ủ a Google Analytics for Firebase, để nhà s ả n xu ấ t ứ ng d ụ ng bi ết khi ngườ i dùng m ở ho ặc cài đặ t m ộ t ứ ng d ụ ng qua l ờ i m ờ i App Indexing : Thu hút l ại ngườ i dùng b ằ ng các ứ ng d ụng đẵ cài đặ t c ủ a h ọ v ớ i tích h ợ p Google tìm ki ế m này N ếu ngườ i dùng có ứ ng d ụ ng c ủ a nhà s ả n xu ấ t ứ ng d ụ ng và h ọ tìm ki ế m n ộ i dung có liên quan, h ọ có th ể kh ở i ch ạ y nó 17 tr ự c ti ế p t ừ k ế t qu ả N ếu người dùng chưa có ứ ng d ụ ng c ủ a nhà s ả n xu ấ t, m ộ t th ẻ cài đặ t s ẽ xu ấ t hi ệ n khi h ọ tìm ki ế m các ứ ng d ụng tương tự AdMob : Ki ế m ti ề n b ằ ng cách hi ể n th ị qu ả ng cáo h ấ p d ẫ n cho khán gi ả toàn c ầ u AdMob có t ấ t c ả nh ữ ng ứng gi ngườ i dùng c ần để th ự c hi ệ n chi ến lượ c ki ế m ti ề n trên l ớ p b ậ c nh ất và để t ối đa hóa doanh thu nhỏ m ỗi ngườ i dùng t ạ o ra Nó có th ể được điề u ch ỉ nh cho ứ ng d ụ ng c ủ a chúng ta, và API c ủa nó đượ c xây d ựng để tích h ợp các đị nh d ạ ng qu ả ng cáo phong phú m ộ t cách d ễ dàng AdWords: Có đượ c thông tin và níu kéo l ại ngườ i dùng v ớ i kh ả năng củ a Google Chúng ta có th ể ch ạ y qu ả ng cáo trên Tìm Ki ế m, hi ể n th ị và video cũng như nhắ m m ụ c tiêu phân khúc ngườ i dùng c ụ th ể mà chúng ta xác đị nh trong Google Analytics for Firebase C ả i thi ệ n nh ằ m m ụ c tiêu qu ả ng cáo và t ối ưu hóa hi ệ u su ấ t chi ế n d ị ch Tóm l ạ i: hi ệ n project c ủ a mình ch ỉ tích h ợp tính năng Cloud Messaging g ử i tin nh ắn và thông báo cho ngườ i dùng qua các n ề n t ả ng Android, IOS Nên chúng ta s ẽ tìm hi ể u cách tích h ợ p Firebase vào project c ủ a mình 18 CHƢƠNG 2: PH Ầ N TÍCH VÀ THI Ế T K Ế Ứ NG D Ụ NG 2 1 Mô t ả bài toán - Đ ặ t món t ừ xa là m ộ t hình th ứ c đã đư ợ c áp d ụ ng ph ổ bi ế n t ạ i cái nhà hàng l ớ n t ạ i các qu ố c gia phát tri ể n như M ỹ , Nh ậ t B ả n, Hàn Qu ố c, Singapore, - Ưu đi ể m c ủ a vi ệ c này chính là gi ả m thi ể u t ố i đa vi ệ c ghi nh ớ đơn đ ặ t hàng trong quá trình v ậ n hành m ộ t nhà hàng, k ế t h ợ p v ớ i công ngh ệ m ớ i s ẽ mang l ạ i cho th ự c khách m ộ t tr ả i nghi ệ m hi ệ n đ ạ i, linh h o ạ t hơn, nó còn giúp cho nhà hàng v ậ n hành đư ợ c chính xác hơn Trên h ế t, trong tình hình d ị ch Covid - 19 đang hoành hành như hi ệ n nay, vi ệ c đ ặ t hàng tr ự c tuy ế n giúp m ọ i ngư ờ i tránh đư ợ c tình tr ạ ng t ụ t ậ p nơi đông ngư ờ i và lây lan d ị ch b ệ nh trong c ộ ng đ ồ ng - V ớ i hi ệ n tr ạ ng s ự phát tri ể n c ủ a các nhà hàng ngày càng nhi ề u và quy mô ngày l ớ n theo th ờ i gian và s ự phát tri ể n nhanh chóng c ủ a công ngh ệ đi ệ n tho ạ i thông minh, nên nhóm h ọ p và đưa ra ý tư ở ng v ề m ộ t ứ ng d ụ ng đ ặ t món ăn t ừ xa, ho ạ t đ ộ ng trên thi ế t b ị di đ ộ ng cá nhân đ ể có th ể giúp các nhà hàng linh ho ạ t hơn trong khâu v ậ n hành cho doanh nghi ệ p c ủ a mình 2 2 Phân tích h ệ th ố ng 2 2 1 Xác đị nh yêu c ầ u c ủ a h ệ th ố ng - Admin: • Đăng nhậ p v ớ i phân quy ề n Admin (S ố điệ n tho ạ i cá nhân, m ậ t kh ẩu) đượ c t ạ o s ẵ n trên h ệ th ố ng d ữ li ệ u Firebase • Ch ỉ nh s ử a thông tin Menu • Nh ận thông báo đơn hàng từ User (Push notification) • Xem thông tin các đơn đặ t hàng t ừ User • Thay đổ i tr ạng thái đơn đặt hàng (Đã đặ t hàng) ho ặc (Đang gử i th ức ăn) ho ặc (Đã gử i th ức ăn) - User: • Đăng ký và đăng nhậ p b ằ ng s ố điệ n tho ạ i cá nhân 19 • Nh ậ n OTP xác nh ậ n tài kho ản đăng nhậ p b ằ ng s ố điệ n tho ại đã đăng ký • Xem thông tin menu • Ch ức năng giỏ hàng cho phép ngườ i dùng ch ọn món ăn từ Menu và thêm vào gi ỏ hàng • Có ch ức năng thay đổ i ho ặc xoá đơn hàng khi khách muốn thay đổ i món ăn, thêm món ăn hoặc khi đặ t nh ầ m món (trong gi ỏ hàng) • Thêm đị a ch ỉ giao hàng • Xem l ạ i tr ạng thái đơn hàng • L ấ y l ạ i m ậ t kh ẩ u và thông tin User • Đăng xuấ t 2 2 2 Bi ểu đồ Use case 2 2 2 1 Bi ểu đồ Use case t ổ ng quát Hình 3 Sơ đồ usecase t ổ ng quát 20 2 2 2 2 Đặ c t ả các Use case Đặ c t ả Use case “Đăng Ký” Mã Usecase UC - DangKy Tên Usecase Usecase Đăng xu ấ t Tác nhân Ngư ờ i s ử d ụ ng Mô t ả Cho phép ngư ờ i dùng đăng ký vào h ệ th ố ng Đi ề u ki ệ n tiên quy ế t Ngư ờ i dùng chưa có tài kho ả n đăng nh ậ p Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Truy c ậ p vào h ệ th ố ng 2 Nh ấ n nút đăng ký 3 Đưa ra giao di ệ n đăng ký 4 Nh ậ p s ố đi ệ n tho ạ i 5 Nh ấ n nút Sent OTP 6 G ở i mã OTP v ề s ố đi ệ n tho ạ i đăng ký 7 Nh ậ p thông tin 8 Nh ấ n nút đăng ký 9 H ệ th ố ng xác nh ậ n và lưu thông tin v ề databas e Lu ồ ng thay th ế Đi ề u ki ệ n thoát Khi ch ứ c năng th ự c hi ệ n thành công Đặ c t ả Use case “Đăng Nhập” Mã Usecase UC - DangNhap Tên Usecase Usecase Đăng nh ậ p Tác nhân Ngư ờ i s ử d ụ ng Mô t ả Cho phép ngư ờ i dùng đăng nh ậ p vào h ệ th ố ng Đi ề u ki ệ n tiên quy ế t Ng ư ờ i dùng đã có tài kho ả n đăng nh ậ p Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Truy c ậ p vào h ệ th ố ng 2 Nh ấ n nút đăng nh ậ p 2 Đưa ra giao di ệ n đăng nh ậ p 3 Nh ậ p thông tin 21 4 Nh ấ n nút Đăng nh ậ p 5 H ệ thông xác nh ậ n thông tin, ti ế p nh ậ p thông tin và g ử i xu ố ng Database đ ể ki ể m tra N ế u h ợ p l ệ thì hi ể n th ị màn hình ch ứ c năng cho ngư ờ i s ử d ụ ng (Màn hình bán hàng) Lu ồ ng thay th ế N ế u d ữ li ệ u không h ợ p l ệ thì h ệ th ố ng đưa ra thông báo và yêu c ầ u nh ậ p l ạ i Đi ề u ki ệ n sau Đăng nh ậ p vào h ệ th ố ng Đi ề u ki ệ n t hoát - Khi ch ứ c năng th ự c hi ệ n thành công - Khi ngư ờ i dùng nh ấ n thoát Đặ c t ả Use case “Đăng Xuất” Mã Usecase UC - DangXuat Tên Usecase Usecase Đăng xu ấ t Tác nhân Ngư ờ i s ử d ụ ng Mô t ả Cho phép ngư ờ i dùng đăng xu ấ t kh ỏ i h ệ th ố ng Đi ề u ki ệ n tiên quy ế t Ngư ờ i dùn g đã có tài kho ả n và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Nh ấ n nút đăng xu ấ t 2 Thoát kh ỏ i giao di ệ n hi ệ n t ạ i 3 Đưa ra giao di ệ n đăng nh ậ p Lu ồ ng thay th ế Đi ề u ki ệ n thoát Khi ch ứ c năng th ự c hi ệ n thành công Đặ c t ả Use case “Mua Hàng” Mã Usecase UC - Muahang Tên Usecase Usecase Mua Hàng Tác nhân Ngư ờ i s ử d ụ ng Mô t ả Cho phép ngư ờ i dùng mua hàng h ệ th ố ng Đi ề u ki ệ n tiên quy ế t Ngư ờ i dùng đã có tài kho ả n và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng p h ả n h ồ i 1 Nh ấ n vào món mình mu ố n mua 22 2 Đưa t ớ i giao di ệ n c ủ a món ăn 3 Ch ọ n s ố lư ợ ng 4 Nh ấ n vào ô gi ỏ i hàng đ ể thêm vào gi ỏ hàng 5 Đưa ra thông báo thêm thành công 6 Thoát ra và vào m ụ c gi ỏ hàng 7 B ấ m nút đ ặ t hàng 8 Đưa ra giao di ệ n đ ặ t hàng 9 Nh ậ p đ ị a ch ỉ 10 Nh ấ n nút đ ồ ng ý 11 Đưa ra thông báo đ ặ t hàng thành công Đi ề u ki ệ n thoát - Khi ch ứ c năng th ự c hi ệ n thành công - Khi ngư ờ i dùng nh ấ n thoát Đặ c t ả Use case “Thêm món ăn” Mã Usecase UC - Them Tên Usecase Usecase Thêm món ăn Tác nhân Admin Mô t ả Cho phép Admin thêm món ăn và danh sách món ăn Đi ề u ki ệ n tiên quy ế t Đã có tài kho ả n Admin và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Nh ấ n nút thêm món ăn 2 Đưa ra giao di ệ n thêm m ớ i 3 Nh ậ p thông tin 4 Nh ấ n nút “Ch ọ n” 5 Đưa t ớ i thư vi ệ n đ ể ch ọ n hình ả nh cho món ăn 6 Nh ấ n nút “Có” 7 Hi ể n th ị thông báo thêm thành công Lu ồ ng thay th ế N ế u d ữ li ệ u không h ợ p l ệ h ệ th ố ng đưa ra thông báo th ấ t b ạ i Đi ề u ki ệ n sau G ử i d ữ li ệ u xu ố ng Database và update l ạ i thông tin Đặ c t ả Use case “Sửa món ăn” Mã Usecase UC - Sua 23 Tên Usecase Usecase S ử a món ăn Tác nhân Admin Mô t ả Cho phép Admin s ử a món ăn và danh sách món ăn Đi ề u ki ệ n tiên quy ế t Đã có tài kho ả n Admin và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n T ác nhân H ệ th ố ng ph ả n h ồ i 1 Ch ọ n món ăn c ầ n ch ỉ nh s ử a 2 Nh ậ p tên 3 Nh ậ p mô t ả 4 Nh ậ p giá 5 Nh ậ p gi ả m giá 6 Nh ấ n Có 6 H ệ th ố ng xác nh ậ n thông tin 7 G ử i thông tin xu ố ng Dataabase sau đó load l ạ i danh sách món ăn 8 Hi ệ n thông báo thành côn g Lu ồ ng thay th ế N ế u d ữ li ệ u không h ợ p l ệ h ệ th ố ng đưa ra thông báo th ấ t b ạ i Đi ề u ki ệ n sau G ử i d ữ li ệ u xu ố ng Database và update l ạ i thông tin Đi ề u ki ệ n thoát Khi ch ứ c năng th ự c hi ệ n thành công Khi ngư ờ i dùng ch ọ n thoát Đặ c t ả Use case “Xoá món ăn” Mã Usecase UC - Xoa Tên Usecase Usecase Xóa món ăn Tác nhân Admin Mô t ả Cho phép Admin xóa món ăn và danh sách món ăn Đi ề u ki ệ n tiên quy ế t Đã có tài kho ả n Admin và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Ch ọ n đ ồ u ố ng c ầ n xóa 2 Nh ấ n nút Delete 3 H ệ th ố ng xác nh ậ n thông tin 4 G ử i thông tin xu ố ng Dataabase sau đó load l ạ i danh sách món ăn 5 Đưa ra thông báo thành công Lu ồ ng thay th ế N ế u d ữ li ệ u không h ợ p l ệ h ệ th ố ng đưa ra thông báo th ấ t 24 b ạ i Đi ề u ki ệ n sau G ử i d ữ li ệ u xu ố ng Database và update l ạ i thông tin Đi ề u ki ệ n thoát Khi ch ứ c năng th ự c hi ệ n thành công Khi ngư ờ i dùng ch ọ n thoát Đặ c t ả Use case “Xem đơn hàng” Mã Usecase UC - Xemdonhang Tên Usecase Usecase xem đơn hàng Tác nhân Admin Mô t ả Cho phép Admi n xem danh sách đơn hàng Đi ề u ki ệ n tiên quy ế t Đã có tài kho ả n Admin và đã đăng nh ậ p vào h ệ th ố ng Lu ồ ng s ự ki ệ n Tác nhân H ệ th ố ng ph ả n h ồ i 1 Nh ấ n nút order 2 Hi ể n th ị danh sách đơn hàng 3 Nh ấ n nút Update 4 Đưa ra giao di ệ n c ậ p nh ậ t đơn hàng 5 C ậ p nh ậ t tr ạ ng thái đơn hàng “Đã đ ặ t hàng”, “Đang g ử i th ứ c ăn”, “Đã g ử i th ứ c ăn” 6 Nh ấ n nút đ ồ ng ý 7 G ử i thông tin xu ố ng Dataabase sau đó load lo ạ i tr ạ ng thái đơn hàng Lu ồ ng thay th ế Đi ề u ki ệ n sau Đi ề u ki ệ n thoát Khi ch ứ c năng th ự c hi ệ n thành c ông Khi ngư ờ i dùng ch ọ n hu ỷ 2 2 3 Bi ểu đồ tu ầ n t ự 25 2 2 3 1 Bi ể u đ ồ tu ầ n t ự cho ca s ử d ụ ng Đăng Nh ậ p c ủ a User Hình 4 Bi ểu đồ tu ầ n t ự Đăng Nhậ p c ủ a User 2 2 3 2 Bi ể u đ ồ tu ầ n t ự cho ca s ử d ụ ng Đăng Ký c ủ a User Hình 5 Bi ểu đồ tu ầ n t ự Đăng Ký củ a User 26 2 2 3 3 Bi ể u đ ồ tu ầ n t ự cho ca s ử d ụ ng Gi ỏ Hàng c ủ a User a Thêm s ả n ph ẩ m Hình 6 Bi ểu đồ tu ầ n t ự Thêm s ả n ph ẩ m vào gi ỏ hàng c ủ a User b Xoá s ả n ph ẩ m Hình 7 Bi ểu đồ tu ầ n t ự Xoá s ả n ph ẩ m trong gi ỏ hàng c ủ a User 27 2 2 3 4 Bi ể u đ ồ tu ầ n t ự cho ca d ụ ng Đăng Nh ậ p c ủ a Admin Hình 8 Bi ểu đồ tu ầ n t ự Đăng Nhậ p c ủ a Admin 2 2 3 5 Bi ể u đ ồ tu ầ n t ự cho ca d ụ ng Qu ả n Lý S ả n Ph ẩ m a Thêm món ăn Hình 9 Bi ểu đồ tu ầ n t ự Thêm món ăn củ a Admin 28 b S ử a món ăn Hình 10 Bi ểu đồ tu ầ n t ự S ửa món ăn củ a Admin c Xoá món ăn Hình 11 Bi ểu đồ tu ầ n t ự Xoá món ăn củ a Admin 29 2 2 3 6 Bi ể u đ ồ tu ầ n t ự cho ca d ụ ng Qu ả n Lý Đơn Hàng Hình 12 Bi ểu đồ tu ầ n t ự Thay đổ i tình tr ạng đơn hàng củ a Admin 2 2 4 Bi ểu đồ l ớ p Hình 13 Bi ểu đồ l ớ p 30 2 3 Phân tích và thi ế t k ế d ữ li ệ u 2 3 1 Mô hình công ngh ệ ứ ng d ụ ng Server Firebase Client Android Database SQL, Firebase 2 3 2 Mô hình d ữ li ệ u Hình 14 Mô hình d ữ li ệ u 2 3 3 Các b ả ng d ữ li ệ u Admin: Tên cột Ý nghĩa Kiểu dữ liệu Ghi chú phone Số điện thoại ObjectId PR IMARY KEY name Tên Admin String FOREIGN KEY Password Mật khẩu String required IsStaff “true” = admin “false” = user Booolean 31 User: Tên cột Ý nghĩa Kiểu dữ liệu Ghi chú userPhone Số điện thoại ObjectId PRIMARY KEY name Tên Admin String FOREIGN KE Y Password Số điện thoại Number required IsStaff “true” = admin “false” = user Boolean Category: Tên cột Ý nghĩa Kiểu dữ liệu Ghi chú menuId ID danh mục món ăn ObjectId PRIMARY KEY name Tên sản phẩm String FOREIGN KEY image Hình ảnh String Defaul t: null Rating: Tên cột Ý nghĩa Kiểu dữ liệu Ghi chú userPhone Số điện thoại Number PRIMARY KEY foodID ID món ăn ObjectId FOREIGN KEY rateValue Mức độ đánh giá String Default: 0 comment Bình luận String Default: “” 32 Request: Tên cột Ý ngh ĩa Kiểu dữ liệu Ghi chú id ObjectId PRIMARY KEY userPhone Số điện thoại người dùng Number FOREIGN KEY userName Tên người dùng String FOREIGN KEY address Địa chỉ String Default: “” total Tổng giá Number foods Các món ăn String status Tình trạng đơn hàng String Default: true Foods: Tên cột Ý nghĩa Kiểu dữ liệu Ghi chú _id ObjectId PRIMARY KEY menuId ID danh mục món ăn String FOREIGN KEY name Tên món ăn String FOREIGN KEY image Hình ảnh String Default: “” description Mô tả String De fault: “” Price Giá Number Default: 0 discount Khuyến mãi Number Default: 0 33 CHƢƠNG 3: TRIỂ N KHAI H Ệ TH Ố NG 3 1 Cài đặ t d ữ li ệ u Hình 15 Cài đặ t d ữ li ệ u trên Firebase 34 3 2 Các giao di ệ n chính c ủ a App 3 2 1 Giao di ệ n App Admin 3 2 1 1 Giao di ệ n màn hình đăng nhậ p Hình 16 Màn hình đăng nhậ p 35 3 2 1 2 Giao di ện Thông tin đơn hàng Hình 17 Giao di ện Thông tin đơn hàng 36 3 2 1 3 Giao di ệ n thêm món ăn Hình 18 Giao di ện Thêm món ăn 37 3 2 1 4 Giao di ệ n S ử a m ón ăn Hình 19 Giao di ệ n S ửa món ăn 38 3 2 1 5 Màn hình nh ậ n thông báo t ừ đơn đặ t hàng c ủa ngườ i dùng Hình 20 Màn hình nh ậ n thông báo 39 3 2 2 Giao di ệ n App User 3 2 2 1 Giao di ệ n tin nh ắ n OTP g ử i v ề s ố điệ n tho ạ i Hình 21 Giao di ệ n tin nh ắ n OTP 40 3 2 2 2 Giao di ệ n Gi ỏ hàng Hình 22 Giao di ệ n Gi ỏ hàng 41 3 2 2 3 Giao di ệ n chi ti ết đơn đặ t Hình 23 Giao di ệ n Gi ỏ hàng 42 PH Ầ N 3: K Ế T LU Ậ N 1 Điể m m ạ nh: • Toàn b ộ h ệ th ố ng d ữ li ệu đượ c ch ạ y trên server Firebase, k ế t n ố i thu ậ n ti ệ n và không c ần cài đặ t nhi ều trong môi trườ ng local • Giao di ện được đơn giả n hoá nh ấ t có th ể để không gây b ố i r ối cho ngườ i dùng ngay c ả khi ít hi ể u bi ế t v ề công ngh ệ 2 Điể m y ế u: • C ầ n phát tri ển các tính năng bả o m ậ t trên ứ ng d ụ ng • Còn thi ế u sót v ề m ặt tính năng củ a c ả admin và ngườ i dùng n ế u khách hàng là doanh nghi ệ p l ớ n 3 Hƣớ ng phát tri ể n: • Mang ứ ng d ụng lên Google Play và App Store vì smartphone đang là xu th ế • Hoàn thi ệ n t ấ t c ả các ch ức năng đang có • Duy trì ngôn ng ữ thi ế t k ế t ố i gi ản để đả m b ảo tính mượ t mà và t ốc độ v ậ n hành c ủ a các lu ồ ng chính trong ứ ng d ụ ng • B ổ sung thêm m ộ t s ố ch ức năng kiể m tra d ữ li ệ u nh ập, thay đổ i m ậ t kh ẩ u truy c ậ p c ủa khách hàng cũng như nhà quả n tr ị 43 TÀI LI Ệ U THAM KH Ả O [1] Nguyễn Văn Ba, Phân tích và thiết kế hệ thống thông tin , NXB Đại Học Quốc Gia HN [2] Lê Tiến Vương, Nhập môn cơ sở dữ liệu quan hệ , NXB Thống Kê [3] Nguyễn Ngọc Bình Phương – Thái Thanh Phong, Các giải pháp lập trình C# , NXB Giao Thông Vận Tải, 2008 [4] Lê Thanh Trúc, Bài giảng phân tích hệ thống hướng đối tượng , Trường Đại học Tây Đô, 2006 [5] Nguyễn Hữu Vân Long, An toàn bảo mật thông tin mạng , NXB Trường Đại học Cần Thơ, 2010 [6] ThS Tr ầ n Th ị Di ệ u Hi ề n, Bài gi ả ng ngôn ng ữ l ậ p trình Java, Trường Đạ i h ọ c Qu ả ng Nam, 2020 [7] Ths Tr ầ n Th ị Di ệ u Hi ề n, Bài gi ả ng Phân tích và thi ế t k ế h ệ th ố ng thông tin , Trường Đạ i h ọ c Qu ả ng Nam, năm 2020 [8] Ts Nguy ễ n H ồng Phương, Phân tích và thi ế t k ế h ệ th ố ng thông tin (Phương pháp và ứ ng d ụ ng) , NXB Lao độ ng – Xã h ội, năm 2008 [9] Th ạc Bình Cườ ng, Phân tích và thi ế t k ế h ệ th ố ng thông tin , NXB Đạ i h ọ c sư phạm, năm 2006 44 PHI Ế U CH ẤM ĐIỂ M KHOÁ LU Ậ N PH Ầ N NH Ậ N XÉT C Ủ A TÁC GI Ả VÀ CÁN B Ộ HƢ Ớ NG D Ẫ N Cán b ộ hƣ ớ ng d ẫ n khoá lu ậ n (Ký và ghi rõ h ọ tên) ThS Tr ầ n Th ị Di ệ u Hi ề n Sinh viên th ự c hi ệ n đ ề tài (Ký và ghi rõ h ọ tên) Nguy ễ n Văn Anh Tú PH Ầ N CH Ấ M ĐI Ể M C Ủ A H Ộ I Đ Ồ NG B Ả O V Ệ KHOÁ LU Ậ N - Đi ể m th ố ng nh ấ t b ằ ng s ố : - Đi ể m b ằ ng ch ữ : …………………………………………………………… Cán b ộ ch ấ m 1 (Ký và ghi rõ h ọ tên) ……………………………………… Cán b ộ ch ấ m 2 (Ký và ghi rõ h ọ tên) ……………………………………… …………………… đi ể m
Trang 1MỤC LỤC
LỜI CẢM ƠN 1
PHẦN 1 MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu của đề tài 2
3 Đối tượng và phạm vi nghiên cứu 2
4 Phương pháp nghiên cứu 2
5 Cấu trúc đề tài 3
PHẦN 2 NỘI DUNG NGHIÊN CỨU 4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
1.1 Giới thiệu hệ điều hành android 4
1.1.1 Hệ điều hành 4
1.1.2 Hệ điều hành Android 4
1.2 Sự ra đời và lịch sử phát triển 6
1.2.1 Sự ra đời của Android 6
1.2.2 Lịch sử phát triển của Android 6
1.3 Sơ lược về Android Studio 7
1.4 Tìm hiểu chung về Java 8
1.5 Tổng quan về Firebase 11
1.5.1 Khái niệm 11
1.5.2 Lịch sử phát triển của Firebase 12
1.5.3 Ưu nhược điểm của Firebase 12
1.5.4 Dịch vụ Firebase 13
1.5.5 Dịch vụ Firebase Analytics 13
1.5.6 Các dịch vụ phát triển và kiểm thử ứng dụng 14
1.5.7 Các dịch vụ tăng trưởng và thu hút người dùng 15
CHƯƠNG 2: PHẦN TÍCH VÀ THIẾT KẾ ỨNG DỤNG 18
2.1 Mô tả bài toán 18
2.2 Phân tích hệ thống 18
2.2.1 Xác định yêu cầu của hệ thống 18
2.2.2 Biểu đồ Use case 19
Trang 22.2.4 Biểu đồ lớp 29
2.3 Phân tích và thiết kế dữ liệu 30
2.3.1 Mô hình công nghệ ứng dụng 30
2.3.2 Mô hình dữ liệu 30
2.3.3 Các bảng dữ liệu 30
CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG 33
3.1 Cài đặt dữ liệu 33
3.2 Các giao diện chính của App 34
3.2.1 Giao diện App Admin 34
3.2.2 Giao diện App User 39
PHẦN 3: KẾT LUẬN 42
1 Điểm mạnh: 42
2 Điểm yếu: 42
3 Hướng phát triển: 42
TÀI LIỆU THAM KHẢO 43
Trang 3LỜI CẢM ƠN
Để hoàn thành khoá luận tốt nghiệp này, lời đầu tiên em xin chân thành cảm ơn đến toàn thể thầy cô trong trong Khoa Toán - Tin những người đã tận tình hướng dẫn, dạy dỗ và trang bị cho em kiến thúc bổ ích trong 4 năm vừa qua
Đặc biệt xin chân thành gửi lời cảm ơn sâu sắc đến cô Trần Thị Diệu Hiền, người đã tận tình hướng dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp
đỡ em trong suốt quá trình làm khoá luận tốt nghiệp
Sau cùng em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên, cổ vũ và đóng góp ý kiến trong quá trình học tập, nghiên cứu cũng như quá trình làm khoá luận tốt nghiệp này
Em xin chân thành cảm ơn!
Trang 4
PHẦN 1 MỞ ĐẦU
1 Lý do chọn đề tài
Công việc kinh doanh buôn bán đã xuất hiện từ rất lâu, trãi qua mọi giai đoạn lịch sử nó mang hình thức đặc thù riêng Trước kia, khi các công cụ hổ trợ công việc mua bán chưa phát triển mạnh, thì người kinh doanh mua bán chỉ diễn
ra dưới hình thức mua bán trực tiếp Từ khi khoa học công nghệ phát triển, nó đã tạo ra phát triển các loại hình thức mua bán mới, điển hình là mua bán trực tuyến Hình thức mua bán trực tuyến hổ trợ đắc lực cho người kinh doanh tiếp xúc với được nhiều khách hàng, còn khách hàng thì công việc mua bán được diễn ra nhanh chóng, thuận lợi, tiết kiệm được thời gian, …
Hiện nay, Thương mại điện tử (TMĐT) đang được nhiều quốc gia quan tâm, coi là một trong những động lực phát triển chủ yếu của nền kinh tế TMĐT đem lại những lợi ích tiềm tàng, giúp doanh nghiệp thu được thông tin phong phú về thị trường và đối tác, giảm phí tiếp thị và giao dịch, tạo dựng và củng cố quan hệ bạn hàng
Việc mua hàng qua mạng chỉ với thủ tục đăng ký mua sắm đơn giản nhưng đem lại nhiều lợi ích: tiết kiệm và chủ động về thời gian, tránh khỏi những phiền phức khó chịu Vậy nên việc mua bán hàng qua mạng đang rất được mọi người quan tâm
Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các website trong thực tế, em đã quyết định chọn đề tài: “Xây dựng ứng dụng đặt đồ ăn qua mạng trên nền tảng Android”
- Phục vụ tốt hơn nhu cầu của khách hàng và quản lý của nhà hàng trong hoạt động kinh doanh
- Khách hàng chỉ cần các thao tác đơn giản trên điện thoại di động là có thể đặt hàng được ngay
Trang 52 Mục tiêu của đề tài
Ứng dụng đặt đồ ăn qua mạng chạy trên nền tảng Android được thực hiện dựa trên hai mục đích chính sau:
+ Thứ nhất, là nghiên cứu các công nghệ lập trình như: lập trình ứng dụng với Android
+ Thứ hai, là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng dụng vào thực tế, giúp những người có nhu cầu mua bán thức ăn
có thể thao tác dễ dàng và tiện lợi
Em hy vọng dựa trên nền tảng lý thuyết đã được thầy cô truyền thụ lại, kết hợp với sự tìm hiểu công nghệ của cá nhân, khoá luận tốt nghiệp của em sẽ đạt được mục đích mong đợi
3 Đối tượng và phạm vi nghiên cứu
Xây dựng ứng dụng đặt đồ ăn qua mạng Trong thời đại thương mại điện
tử đang ngày càng phát triển, việc ứng dụng vào hoạt động “Ứng dụng bán hàng trực tuyến” đã mang lại nhiều ý nghĩa như:
- Đỡ tốn nhiều thời gian cho người tiêu dùng cũng như nhà quản lý trong việc tham gia vào hoạt động mua bán hàng
- Giúp người tiêu dùng có được giá cả và hình ảnh mặt hàng một cách chính xác
- Nhà quản lý có thể thống kê các sản phẩm bán chạy một cách nhanh nhất giúp cho hoạt động sản xuất kinh doanh của mình trở nên tốt hơn
4 Phương pháp nghiên cứu
- Về mặt lý thuyết
Đề tài “Xây dựng ứng dụng đặt đồ ăn qua mạng trên nền tảng Android” là một ứng dụng chạy trên điện thoại sử dụng hệ điều hành Android Ứng dụng gồm:
Trang 6Phần ứng dụng chạy trên điện thoại được phát triển trên nền Android SDK
Phầm mềm quản lý cho phép người quản lý có thể xoá cập nhật món ăn,
xử lý các thông tin từ ứng dụng Android gởi về
Dưới đây là những chức năng chính mà em dự định phát triên ở phiên bản đầu tiên của ứng dụng này:
• Tìm hiểu các hoạt động kinh doanh ứng dụng trên Android
• Tìm hiểu các thức xây dựng một ứng dụng trên Android
• Xây dựng thành công ứng dụng đặt đồ ăn qua mạng trên Android
• Xây dựng phần mềm quản lý
• Tìm hiểu cách thức xây dựng ứng dụng bán hàng
• Tìm hiểu bộ Android Development Tool
- Về mặt lập trình
• Chương trình thực hiện được các yêu cầu đề ra của đề tài
• Ứng dụng đặt đồ ăn đã phần nào xây dựng và đáp ứng một số chức năng chính
• Quản lý việc đặt hàng, xử lý giỏ hàng, …
• Xử lý thống kê theo yêu cầu như: Đơn hàng, hoá đơn
• Cho phép tìm kiếm thông tin trong hệ thống, …
• Giao diện thân thiện dễ sử dụng
- Về mặt hoạt động
• Chương trình chỉ thực hiện đầy đủ các chức năng ở phạm vi thành phố
5 Cấu trúc đề tài
PHẦN 1 MỞ ĐẦU
PHẦN 2 NỘI DUNG NGHIÊN CỨU
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích và thiết kế ứng dụng
Chương 3: Triển khai hệ thống
Trang 7Android là hệ điều hành mã nguồn mở cùng với việc phát hành mã nguồn
mở theo giấy phép Apache của Google Apache là là một giấy phép không có nhiều ràng buộc cùng với mã nguồn mở đã cho phép các nhà phát triển thiết bị di,các nhà mạng và các lập trình viên nhanh chóng tiếp cận điểu chỉnh và phân
Trang 8ứng dụng mở rộng chức năng của các thiết bị, bằng ngôn ngữ lập trình Java có sửa đổi
Nhờ yếu tố mở và một giấy phép không có nhiều ràng buộc, Android ngày nay đã trở thành một trong những nền tảng dị động nổi tiếng khắp thế giới Bằng chứng là với bản chất “mở” của mình thì Android đã thu hút được một cộng đồng lập trình viên, chuyên viên phát triển ứng dụng, theo thông kê tháng
10 năm 2012 đã xuất hiện khoảng 700.000 ứng dụng Android và số lượng tải từ Google Play, cửa hàng ứng dụng chính của Android được ước tính vào khoảng
25 tỷ lượt Về mặt thiết bị thì nền tảng này liên tục được các nhà sản xuất thiết
bị lựa chọn khi mà Android hội tụ quá nhiều ưu điểm như: vận hành nhẹ nhàng,
có khả năng tinh chỉnh tốt và tiết kiệm chi phí để chạy trên các thiết bị công nghệ cao của mình
Hình 1 Kho ứng dụng Android
Vào thời điểm quý II năm 2017 Android đã chiếm 87,7% thị phần smartphone trên toàn thế giới 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 Đây có thể được xem là một dấu ấn mạnh mẽ nhất trong công cuộc khẳng định vị thế của Android trên thị trường quốc tế
Trang 91.2 Sự ra đời và lịch sử phát triển
1.2.1 Sự ra đời của Android
Cha đẻ của Android: hệ điều hành Android được lấy tên từ Android, Inc công ty khai sinh ra nó Công ty này được thành lập tại Palo Alto, California vào tháng 10 năm 2003 bởi Andy Rubin, Rich Miner, và Chris White Mặc dù những người sáng lập và nhân viên của công ty đều là những người có tiếng tăm, Android Inc vẫn hoạt động một cách âm thầm, chỉ tiết lộ rằng họ đang làm phần mềm cho điện thoại di động Cuối năm 2003, Rubin cạn vốn Bạn thân của ông Steve Perlman, đã hùn vốn 10 ngàn USD nhưng từ chối tham gia vào công ty
1.2.2 Lịch sử phát triển của Android
Trở thành một phần của Google: ngày 17/08/2005 Google mua lại Android Inc, biến nó thành một phần trực thuộc của Google Những nhân viên chủ chốt của tổng công ty Android vẫn là Rubin, Miner và While vẫn tiếp tục ở lại phát triển hệ điều hành của họ Quyết định này đưa ra để sử dụng Linux làm làm nền tảng cho hệ điều hành Android và điều đó cũng có nghĩa là Android sẽ được cung cấp miễn phí cho các nhà sản xuất điện thoại di động của bên thứ ba Google và nhóm Android cảm thấy công ty có thể kiếm tiền với các dịch vụ khác sử dụng hệ điều hành, bao gồm cả ứng dụng
Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị
di động dựa trên nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm
và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao Một số nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác nhau Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất hiện trong tháng 12 năm 2006 Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện
Trang 10truyền thông in và online cũng sớm có bài viết về những tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu của Google Càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng
Android liên tục được phát triển, mỗi bản cập nhật từ Google là mỗi lần Android được tối ưu hóa hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ mới Chẳng hạn theo đanh giá thì Android phiên bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất của Android là phiên bản Android Q
1.3 Sơ lƣợc về Android Studio
Có nhiều công cụ để phát triển Android nhưng đến nay công cụ chính thức và mạnh mẽ nhất là Android Studio Đây là Môi trường phát triển tích hợp (IDE) chính thức cho nền tảng Android, được phát triển bởi Google và được sử dụng để tạo phần lớn các ứng dụng có thể sử dụng hàng ngày
Android Studio lần đầu tiên được công bố tại hội nghị Google I/O vào (năm 2013 và được phát hành cho công chúng vào năm 2014 sau nhiều phiên bản beta khác nhau Trước khi được phát hành, các nhà phát triển Android thường sử dụng các công cụ như Eclipse IDE, một IDE Java chung cũng hỗ trợ nhiều ngôn ngữ lập trình khác
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết
bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp
Trang 111.4 Tìm hiểu chung về Java
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++ Do vậy nó
sử dụng các cú pháp của C và đặc trưng hướng đối tượng của C++
Vào năm 1991, một nhóm kyc sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng, … Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU
Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt
Vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 được đổi tên thành Java Mặc dù mục tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết
bị nên Java đã trở thành ngôn ngữ lập trình cho Internet
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần Ngày nay, Java là một nền tảng tất yếu của các ứng dụng quy mô lớn của các doanh nghiệp nhờ vào khả năng mở rộng cũng như những nền tảng vô cùng phong phú mà nó cung cấp Java đã trải 3 bước phát triển quan trọng: Java 1.0 gắn liền với bản JDF đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5
Đối với Java người ta không còn nhắc đến thư là 1 ngôn ngữ lập tình mà nhắc đến một công nghệ hay nền tảng phát triển, nó bao gồm các bộ phận:
- Máy ảo Java: JVM
Trang 12- Bộ công cụ phát triển: J2SDK
- Các đặt tả chi thiết kĩ thuật (specifications)
- Ngô ngữ lập tình (programming language)
- Các công nghệ đi kèm như: JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI,… và Framework như: Struts, Spring, JSF, Hibermate,JavaFX,, …
* Những ưu điểm của Java:
• Đơn giản (Simple): Java đươn giản vì mặc dù dựa trên cơ sở C++ nhưng Sun đã cârn thận lược bỏ các tính năng khó nhất của C++ để làm cho ngôn ngữ này dễ sử dụng hơn Là một ngôn ngữ lập trình hoàn toàn mới, nó buộc phải có dáng vẻ và sự cảm nhận tương tự như các ngôn ngữ phổ biến hiện hành đồng thời đòi hỏi khoảng thời gian huấn luyện lại tối thiểu và thân thiện hơn với người dùng Do đơn giản, ngôn ngữ này cũng rất khó – nên nhớ rằng từ đầu nó
đã được xây dựng để dùng cho điện tử dân dụng như đầu chạy bằng video và hộp điều khiển từ xa, những thiết bị có không gian lưu trữ rất hạn chế
• Hướng đối tượng (Object Oriented): Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn Tất
cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp Hướng đối tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa
• Hiểu mạng (Network-savvy): Java được lập ra để hoạt động trên mạng và
có các thủ tục để có thể quản lý các giao thức mạng như TCP/IP, FTP và HTTP Nói cách khác, Java được xây dựng để thực hiện hoàn toàn thích hợp trên Internet Chương trình Java thậm chí có thể xâm nhập vào các đối tượng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web) để định vị chúng
Trang 13• Mạnh mẽ (Robust): Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hướng nó vào việc khắc phục những hư hỏng bộ nhớ và đảm bảo tính toàn vẹn dữ liệu Ví dụ, Java có tính năng “Automatic Garbage Collection” (tự động thu gom rác) – có nghĩa là bộ nhớ được giải phóng một cách tự động – nên lập trình viên không phải bận tâm về việc quản lý bộ nhớ và nhờ đó ít có xu hướng làm những việc gây hỏng bộ nhớ
• An toàn (Secure): Khả năng hướng mạng của Java tự động đưa ra yêu cầu
về an toàn Đặc tính ân toàn của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế được cài sẵn nhằm đề phòng các chương trình Java thực hiện những chức năng như ghi vào ổ cứng của người dùng hay cho phép virus từ mạng hoặc từ môi trường phân tán xâm nhập vào
• Độc lập với cấu trúc (Architecture neutral): Đây là thuộc tính đặc sắc nhất của Java Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (“Write Once, Run Anywhere” (WORA)) Tính năng biên dịch một lần và chạy nhiều nền có thể đạt được nhờ just-in-time compiler (JIT), chuyển mã bytecode của Java sang mã máy khi chương trình đang chạy Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có máy ảo java thích hợp hỗ trợ nền tảng đó Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac
OS, FreeBSD, Windows và nhiều hệ thống cài đặt trên các thiết bị di động
• Di động (Portable): Đối với một phạm vi rộng, Java là loại có thể di chuyển nhờ khả năng độc lập với hệ máy Đồng thời, các loại dữ liệu, giao diện, cũng như dáng vẻ và cảm nhận của Java đều giống nhau trên mọi hệ máy Hệ thống các thành phần của java cũng có tính di động cao – nó được viết bằng Java
• Thông dịch (Interpreter): Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi
*.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy Để chạy Java bytecode, cần cài đặt
Trang 14JRE (Java Runtime Environment) JRE cung cấp các thư viện cơ bản, Java Virtual Machine, plugin cho trình duyệt, và những thứ khác
• Tốc độ cao (High perfprmance): Khi Sun Microsystems mô tả Java có tốc
độ cao, có lẽ họ muốn nói về mã bytecode được thông dịch hiệu quả như thế nào (Java thường chạy nhanh hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP, …) Về tốc độ các applet hay chương trình Java thì nói chung đều chậm hơn các chương trình được biên dịch viết bằng C++, vì chương trihf này đã được tối ưu hoá từ trước cho hệ máy nhất định Java đã phải trả giá
về hiệu suất cho tính không phụ thuộc hệ thống của nó
• Đa luồng (Multithreaded): Đa luồng có nghĩa là ngôn ngữ Java cho phép xây dựng tình ứng dụng Trong đó, nhiều quá trình có thể xảy ra đồng thời Tính
đa luồng cho phép các nhà lập trình có thể biên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn, và thực hiện theo thời gian thực
• Tính động (Dynamic): Java động vì nó được thiết kế để đáp ứng với môi trường tác nghiệp luôn trong tình trạng thay đổi Khi có yêu cầu mới xuất hiện trên thị trường, các loại đối tượng mới có thể được bổ sung vào ngay
và kiếm được nhiều tiền hơn
Firebase là một dịch vụ hế thống backend được Google cung cấp sẵn cho ứng dụng Mobile, với Firebase người dùng có thể rút ngắn thời gian phát triển, triển khai và thời gian mở rộng quy mô của ứng dụng mobile mình đang phát triển Hỗ trợ cả 2 nền tảng Android và IOS, Firebase mạnh mẽ, đa năng, bảo mật
Trang 15và là dịch vụ cần thiết đâu tiên để xây dựng ứng dụng với hàng triệu người
sử dụng
1.5.2 Lịch sử phát triển của Firebase
Firebase có tiền thân là Envolve Đây là dịch vụ cung cấp những API để
người dùng dễ dàng tích hợp tính năng chat vào trang web Điều thú vị là người
dùng Envolve sử dụng dịch vụ để truyền dữ liệu chứ không đơn thuần cho ứng
dụng chat Họ sử dụng Envolve để đồng bộ dữ liệu của những ứng dụng như
game online, danh bạ, lịch… Nhận biết được điều này, CEO của Envolve đã
tách biệt hệ thống chat và đồng bộ dữ liệu thời gian thực thành 2 mảng riêng
biệt Đến năm 2012, Firebase được thành lập như một công ty cung cấp dịch vụ
Backend-as-a-Service theo thời gian thực Ngửi thấy mùi tiềm năng, năm 2014,
Google lập tức mua lại Firebase với giá không được tiết lộ Và giờ Google phát
triển Firebase thành một dịch vụ đồ sộ
1.5.3 Ưu nhược điểm của Firebase
1.5.3.1 Ưu điểm
Xây dựng nhanh chóng mà không tốn thời gian, nhân lực để quản lý hệ
thống và cơ sở hạ tầng phía sau: Firebase cung cấp cho người dùng chức năng
như phân tích, cơ sở dữ liệu, báo cáo hoạt động và báo cáo các sự cỗ lỗi để dễ
dàng phát triển, định hướng ứng dụng của mình vào người sử dụng nhằm đem
lại các trải nghiệm tốt nhất cho họ Uy tín chất lượng đảm bảo từ Google:
Firebase được google hỗ trợ và cung cấp trên nền tảng phần cứng với quy mô
rộng khắp thế giới, được các tập đoàn lớn và các ứng dụng với triệu lượt sử
dụng từ người dùng Quản lý cấu hình và trải nghiệm các ứng dụng của Firebase
tập trung trong một giao diện website đơn giản, các ứng dụng này hoạt động độc
lập nhưng liên kết dữ liệu phân tích chặt chẽ
1.5.3.2 Nhược điểm
Trang 16Điểm duy nhất của Firebase chính là phần Realtime Database, mà đúng
hơn chỉ là phần Database Cơ sở dữ liệu của Realtime Database được tổ chức
theo kiểu cây không phải là kiểu bảng nên những ai đang quen với SQL có thể
gặp khó khăn đôi chút bước đầu
1.5.4 Dịch vụ Firebase
Firebase cung cấp cho người dùng công cụ Firebase Analytics và 2 nhóm
sản phẩm chính tập trung vào 2 đối tượng là:
- Develop & test your app: phát triển và kiểm thử các ứng dụng được thiết kế
- Grow & engage your audience: Phân tích dữ liệu và tối ưu hóa trải
nghiệm đối với người dùng
Hình 2 Các dịch vụ của Firebase
1.5.5 Dịch vụ Firebase Analytics
Là một giải pháp miễn phí và phân tích không giới hạn Quản lý hành vi
người dùng và cá biện pháp từ một bảng điều khiển duy nhất Phân thích thuộc
tính và hành vi của người dùng trong bảng điều khiển đơn để đưa ra các quyết
định sáng suốt về lộ trình sản phẩm Nhận thông tin chi tiết về thời gian thực từ
Trang 17báo cáo hoặc xuất dữ liệu thô sự kiện của người dùng tới Google BigQuery để phân tích tùy chỉnh
1.5.6 Các dịch vụ phát triển và kiểm thử ứng dụng
Realtime Database: Lưu trữ và đồng bộ dữ liệu người dùng thời gian
thực, các ứng dụng hỗ trợ tính năng này có thể lưu trữ dữ dữ liệu máy chủ trong tích tắc Các dữ liệu được lưu trữ trong hệ thống cơ sở dữ liệu hỗ trợ NoSQL và được đặt trên nền tảng máy chủ Cloud, dữ liệu được ghi và đọc với thời gian thấp nhất tình bằng mili giây Nền tảng này hỗ trợ đồng bộ hóa dữ liệu của người dùng kể cả khi không có kết nối mạng, tạo lên trải nghiệm xuyên suốt bất chấp tình trạng kết nối internet của người sử dụng Reatime Database của Firebase hỗ trợ: Android, IOS, Web, C++, Unity, và cả Xamarin
Crashlytics: Hệ thống theo dõi và lưu trữ thông tin lỗi của ứng dụng đang
chạy trên máy người dùng Các thông tin lỗi này được thu thập toàn diện và ngay tức thời Cách trình bày hợp lý với từng chu trình hoạt động đến xảy ra lỗi, Các báo cáo trực quan giúp người phát triển có thể nắm bắt và xử lý kịp thời các lỗi chính của ứng dụng
Cloud Firestore: Lưu trữ và đồng bộ dữ liệu giữa người dùng và thiết bị ở
quy bô toàn cầu sử dụng cơ sở dữ liệu noSQL được lưu trữ trên hạ tầng cloud Cloud Firestore cung cấp tính năng đồng bộ hóa trực tuyến và ngoại tuyến cùng với các truy vấn dữ liệu hiệu quả Tích hợp với các sản phẩm Firebase khác cho phép xây dựng các ứng dụng thực sự ngay cả khi kết nối internet bị gián đoạn
Authentication: Quản lý người dùng một cách đơn giản và an toàn
Firebase Auth cung cấp nhiều phương pháp xác thực, bao gồm email và mật khẩu, các nhà cung cấp bên thứ ba như Google hay Facebook, và sử dụng trực tiếp hệ thống tài khoản hiện tại của người dùng Xây dựng giao diện riêng hoặc tận dụng lợi thế của mã nguồn mở, giao diện người dùng tùy biến hoàn toàn
Cloud Functions: Mở rộng ứng dụng bằng mx phụ trợ tùy chỉnh mà
Trang 18được kích hoạt bơi các sự kiện, được phát sinh ra bởi các sản phẩm Firebase, dịch vụ Google Cloud hoặc các bên thứ ba có sử dụng webhooks
Cloud Storage: Lưu trữ và chia sẻ nội dung do người dùng tạo ra như hình
ảnh, âm thanh và video với bố nhớ đối tượng mạnh mẽ, đơn giản và tiết kiệm chi phí được xây dựng cho quy mô của Google Các Firebase SDK cho Cloud Storage thêm tính nắng bảo mật của Google để tải lên và tải tệp cho các ứng dụng Firebase của người dùng, bất kể chất lượng mạng
Hosting: Đơn giản hóa lưu trữ web của người dùng với các công cụ được
thực hiện cụ thể cho các ứng dụng web hiện đại Khi tải lên nội dung web, hệ thống sẽ tự động đẩy chúng đến CDN toàn cầu của hệ thống và cung cấp cho họ chứng chỉ SSL miễn phí để người dùng có được trải nghiệm an toàn, đáng tin cậy, độ trễ thấp dù họ ở đâu
Test Lab: chạy thử nghiệm tự động và tùy chỉnh cho ứng dụng trên các
thiết bị ảo và vật lý do Google cung cấp Sử dụng Firebase Test Lab trong suốt vòng đời phát triển để khám phá lỗi và sử dụng không nhất quán để có thể cung cấp một trải nghiệm tuyệt vời trên nhiều thiết bị
Performance Monitoring: Chẩn đoán các vấn đề về hiệu suất ứng dụng
xảy ra trên các thiết bị của người dùng Sử dụng dấu vết để theo dõi hiệu suất của các phần cụ thể trong ứng dụng và xem chế độ xem tổng hợp trong bảng điều khiển Firebase Luôn cập nhật thời gian khời động của ứng dụng và theo dõi các yêu cầu HTTP mà không cần viết bất kỳ mã nào
1.5.7 Các dịch vụ tăng trưởng và thu hút người dùng
Google Analytics: Phân tích thuộc tính và hành vi của người sử dụng
trong một bảng điều khiển đơn để đưa ra các quyết định sáng suốt về lộ trình sản phẩm Nhận thông tin chi tiết về thời gian thực từ báo cáo hoặc xuất dữ liệu sự kiện thô tới Google BigQuery để phân tích tùy chỉnh
Trang 19Cloud Messaging: Gửi tin nhắn vả thông báo cho người dùng qua các nền
tảng Android, IOS và web một cách miễn phí Người dùng có thể gửi tin nhắn đến các thiết bị, nhóm thiết bị hoặc các chủ để hoặc phân đoạn người dụng cụ thể Nhắn tin đám mây Firebase (FCM) thậm chí là các ứng dụng lớn nhất, cung cấp hàng trăm tỷ thư mỗi ngày
Predictions: Firebase Predictions áp dụng deep learning máy học với dữ
liệu phân tích của người dùng để tạo các nhóm người dùng năng động dựa trên hành vi dự đoán Các nhóm người dùng này có thể được sử dụng để nhằm mục tiêu trong các sản phẩm như thông báo, cấu hình từ xa và nhiều hơn nữa
Dynamic Links: Sử dụng liên kết động để cung cấp trải nghiệm người
dùng tùy chỉnh cho iOS, Android và web Người dùng có thể sử dụng chúng để
hỗ trợ web di động kể thúc đẩy chuyển đổi ứng dụng gốc, người dùng chia sẻ người dùng, các chiến dịch xã hộ và tiếp thị và hơn thế nữa Dynamic Links cung cấp cho người dùng các thuộc tính người dùng cần để hiểu rõ hơn về tăng trưởng di động của người dùng Đây là dịch vụ thay thế của Google
Remote Config: Tùy chỉnh cách ứng dụng của người dùng hiển thị cho
mỗi người dùng Thay đổi giao diện, triển khai các tính năng dần dần, chạy thử nghiệm A/B, cung cấp nội dung tùy chỉnh cho người dùng nhất định hoặc thức hiện các cập nhật khác giám sát tác động của những thay đổi của người dùng và thực hiện điều chỉnh chỉ trong vài phút
Invites: Cho phép người dùng chia sẻ tất cả các khía cạnh của ứng dụng
của nhà sản xuất ứng dụng, từ mã giới thiệu đến nội dung yêu thích, qua email hoặc SMS Giải pháp out-of-the-box này hoạt động của Google Analytics for Firebase, để nhà sản xuất ứng dụng biết khi người dùng mở hoặc cài đặt một ứng dụng qua lời mời
App Indexing: Thu hút lại người dùng bằng các ứng dụng đẵ cài đặt của
họ với tích hợp Google tìm kiếm này Nếu người dùng có ứng dụng của nhà sản
Trang 20trực tiếp từ kết quả Nếu người dùng chưa có ứng dụng của nhà sản xuất, một thẻ cài đặt sẽ xuất hiện khi họ tìm kiếm các ứng dụng tương tự
AdMob: Kiếm tiền bằng cách hiển thị quảng cáo hấp dẫn cho khán giả
toàn cầu AdMob có tất cả những ứng gi người dùng cần để thực hiện chiến lược kiếm tiền trên lớp bậc nhất và để tối đa hóa doanh thu nhỏ mỗi người dùng tạo
ra Nó có thể được điều chỉnh cho ứng dụng của chúng ta, và API của nó được xây dựng để tích hợp các định dạng quảng cáo phong phú một cách dễ dàng
AdWords: Có được thông tin và níu kéo lại người dùng với khả năng của
Google Chúng ta có thể chạy quảng cáo trên Tìm Kiếm, hiển thị và video cũng như nhắm mục tiêu phân khúc người dùng cụ thể mà chúng ta xác định trong Google Analytics for Firebase Cải thiện nhằm mục tiêu quảng cáo và tối ưu hóa hiệu suất chiến dịch Tóm lại: hiện project của mình chỉ tích hợp tính năng Cloud Messaging gửi tin nhắn và thông báo cho người dùng qua các nền tảng Android, IOS Nên chúng ta sẽ tìm hiểu cách tích hợp Firebase vào project của mình
Trang 21CHƯƠNG 2: PHẦN TÍCH VÀ THIẾT KẾ ỨNG DỤNG
2.1 Mô tả bài toán
- Đặt món từ xa là một hình thức đã được áp dụng phổ biến tại cái nhà hàng lớn tại các quốc gia phát triển như Mỹ, Nhật Bản, Hàn Quốc, Singapore,
- Ưu điểm của việc này chính là giảm thiểu tối đa việc ghi nhớ đơn đặt hàng trong quá trình vận hành một nhà hàng, kết hợp với công nghệ mới sẽ mang lại cho thực khách một trải nghiệm hiện đại, linh hoạt hơn, nó còn giúp cho nhà hàng vận hành được chính xác hơn Trên hết, trong tình hình dịch Covid- 19 đang hoành hành như hiện nay, việc đặt hàng trực tuyến giúp mọi người tránh được tình trạng tụ tập nơi đông người và lây lan dịch bệnh trong cộng đồng
- Với hiện trạng sự phát triển của các nhà hàng ngày càng nhiều và quy mô ngày lớn theo thời gian và sự phát triển nhanh chóng của công nghệ điện thoại thông minh, nên nhóm họp và đưa ra ý tưởng về một ứng dụng đặt món ăn từ xa, hoạt động trên thiết bị di động cá nhân để có thể giúp các nhà hàng linh hoạt hơn trong khâu vận hành cho doanh nghiệp của mình
• Chỉnh sửa thông tin Menu
• Nhận thông báo đơn hàng từ User (Push notification)
• Xem thông tin các đơn đặt hàng từ User
• Thay đổi trạng thái đơn đặt hàng (Đã đặt hàng) hoặc (Đang gửi thức ăn) hoặc (Đã gửi thức ăn)
- User:
Trang 22• Nhận OTP xác nhận tài khoản đăng nhập bằng số điện thoại đã đăng ký
• Xem thông tin menu
• Chức năng giỏ hàng cho phép người dùng chọn món ăn từ Menu và thêm vào giỏ hàng
• Có chức năng thay đổi hoặc xoá đơn hàng khi khách muốn thay đổi món
ăn, thêm món ăn hoặc khi đặt nhầm món (trong giỏ hàng)
• Thêm địa chỉ giao hàng
• Xem lại trạng thái đơn hàng
• Lấy lại mật khẩu và thông tin User
• Đăng xuất
2.2.2 Biểu đồ Use case
2.2.2.1 Biểu đồ Use case tổng quát
Hình 3 Sơ đồ usecase tổng quát
Trang 23Khi chức năng thực hiện thành công
Đặc tả Use case “Đăng Nhập”