ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG KURO TEAM CHẠY TRÊN NỀN TẢNG HỆ ĐIỀU HÀNH ANDROID ĐỂ HỖ TRỢ VÀ QUẢN LÍ CÔNG VIỆC NHÓM Người hướng dẫn: PGS TS VÕ TRUNG HÙNG Sinh viên thực hiện: NGUYỄN VĂN MẪN Số thẻ sinh viên: 102150113 Lớp : 15T2 Đà Nẵng, 12 /2019 NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN Đà Nẵng, ngày … tháng 12 năm 2019 Người hướng dẫn PGS TS Võ Trung Hùng NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN Đà Nẵng, ngày … tháng 12 năm 2019 PHI Ế U DUY ỆT ĐỒ ÁN T Ố T NGHI Ệ P I Ph ầ n dành cho Sinh viên 1 H ọ và tên: NGUY ỄN VĂN MẪ N 2 Mã Sinh viên: 102150113 3 L ớ p: 15T2 4 Tên đề tài: Xây d ự ng ứ ng d ụ ng Kuro Team ch ạ y trên n ề n t ả ng h ệ điều hành Android để h ỗ tr ợ và qu ả n lí công vi ệ c nhóm 5 S ố điệ n tho ạ i: 0966156153 6 E-mail: vanman lqd@gmail com 7 H ọ và tên GVHD: PGS TS Võ Trung Hùng II Ph ầ n dành cho H ội đồ ng STT N ộ i dung đánh giá K ế t lu ậ n 1 Trình bày báo cáo theo đúng m ẫ u qui đ ị nh c ủ a Khoa 2 Không có s ự sao chép n ộ i dung báo cáo và chương trình đã có 3 Biên d ị ch mã ngu ồ n và ch ạ y đư ợ c chương trình 4 Có k ị ch b ả n th ự c hi ệ n v ớ i d ữ li ệ u th ử nghi ệ m 5 K ế t qu ả th ự c hi ệ n chương trình đúng theo báo cáo 6 Có s ự đóng góp, phát tri ể n c ủ a tác gi ả trong đ ồ án Ý ki ế n khác: K ế t lu ậ n: Đạ t yêu c ầ u Ph ả i s ử a ch ữ a l ạ i Không đạ t yêu c ầ u Đà Nẵ ng, ngày tháng 12 năm 2019 Ch ủ t ị ch H ộ i đ ồ ng (Ký và ghi h ọ tên) Cán b ộ duy ệ t ki ể m tra (Ký và ghi h ọ tên) TÓM TẮT Tên đề tài: Xây dựng ứng dụng Kuro Team chạy trên nền tảng hệ điều hành Android để hỗ trợ và quản lí công việc nhóm Sinh viên thực hiệ n: Nguyễn Văn Mẫn Số thẻ SV: 102150113 Lớp: 15T2 Ứng dụng Kuro Team là một ứng dụng chạy trên nền tảng hệ điều hành Android Đây là một công cụ hữu ích giúp cho sự hoạt động của một nhóm các học sinh, sinh viên với q uy mô nhỏ trở nên dễ dàng và tiết kiệm thời gian hơn Ứng dụng cung cấp các chức năng cho phép các thành viên trong một nhóm có thể theo dõi công việc của nhau, trao đổi về công việc, hỗ trợ các thành viên khác và cập nhật các thông tin mới nhất cũng như trò chuyện với mọi người trong nhóm chỉ bằng các thao tác đơn giản trên chiếc điện thoại của mình Ứng dụng này được phát triển hướng tới các nhóm sinh viên, học sinh thường xuyên hoạt động theo nhóm để làm việc, ví dụ như các nhóm thuyết trình bài tập, sinh hoạt cộng đồng ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Văn Mẫn Số thẻ sinh viên: 102150113 Lớp: 15T2 Khoa: Công nghệ thông tin Ngành: Công nghệ thông tin 1 Tên đề tài đồ án: Xây dựng ứng dụng Kuro Team chạy trên nền tảng hệ điều hành Android để hỗ trợ và quản lí công việc nhóm Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện 2 Các số liệu và dữ liệu ban đầu: Không có 3 Nội dung các phần thuyết minh và tính toán: Nội dung của thuyết minh gồm : Mở đầu: Phần mở đầu của luận văn, giới thiệu về nhu cầu thực tế và lý do thực hiện đề tài, đồng thời giới thiệu sơ lược về đề tài và mục tiêu phải đạt được Chương 1 Cơ sở lý thuyết : trình bày những lý thuyết học được và đã áp dụng vào hệ thống Chương 2 Phân tích và thiết k ế: trình bày các hồ sơ phân tích và hồ sơ thiết kế trong xây dựng hệ thống và luồng hoạt động của hệ thống Chương 3 Triển khai và đánh giá kết quả: mô tả cách cài đặt, vận hành hệ thố ng và đánh giá kết quả đạt được 4 Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ): Không có 5 Họ tên người hướng dẫn: PGS TS Võ Trung Hùng 6 Ngày giao nhiệm vụ đồ án: …… /…… / 2019 7 Ngày h oàn thành đồ án: …… /…… / 2019 Đà Nẵng, ngày tháng 12 năm 201 9 Trưởng Bộ môn …………………… Người hướng dẫn Đề tài : Xây dựng ứng dụng Kuro Team i L Ờ I NÓI ĐẦ U Lời đầu tiên, em xin phép gửi lời cảm ơn chân thành và sâu sắc của mình đến với các Thầy, C ô trong khoa C ông nghệ T hông tin – những người đã đồng hành để truyền đạt những kiến thức, kinh nghiệm quý báu cho em trong suốt hơn 4 năm học tập tại trường Đại học Bách khoa – Đại học Đà Nẵng Em cũng xin bày tỏ sự biết ơn đến với Thầy giáo PGS TS Võ Trung Hùng, người đã trực tiếp hướng dẫn và giúp đỡ tận tình cũng như tạo điều kiện tốt nhất để em có thể hoàn thành đồ án của mình đúng tiến độ Để có thể hoàn thành đồ án này, ngoài sự giúp đỡ tận tình của các Thầy, Cô trong Khoa Công nghệ Thông tin, em còn nhận được sự đóng góp và chỉ dẫn nhiệt tình của các Anh, C hị trong Công ty Open Web Technology Đà Nẵng Em xin gửi lời cảm ơn chân thành đến tất cả A nh, C hị trong Công ty, những người đã nhiệt hỗ trợ và góp ý để em có thể hoàn thiện được đồ án của mình một cách thuận lợi Trong quá trình thực hiện đồ án sẽ không tránh khỏi những thiếu sót, em rất mong sẽ nhận được sự thông cảm từ Thầy, Cô Em cũng mong sẽ nhận được những đánh giá, góp ý tận tình từ quý T hầy, Cô để em có thể hoàn thiện đề tài của mình cũng như tích lũy được thêm nhiều kinh nghiệm có ích cho công việc trong tương lai của mình Một lần nữa em xin gửi lời cảm ơn chân thành đến tất cả mọi người đã giúp đỡ em hoàn thiện đồ án này! Nguyễn Văn Mẫn Đề tài : Xây dựng ứng dụng Kuro Team ii CAM ĐOAN Em xin cam đoan: 1 Toàn bộ nội dung trong đồ án này đều do em thực hiện dưới sự hướng dẫn của PGS TS Võ Trung Hùng 2 Các nội dung, thông tin tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố 3 Nếu có những sao chép không hợp lệ, vi phạm quy chế đào tạo , em xin chịu hoàn toàn trách nhiệm Đà Nẵng, ngày tháng 12 năm 201 9 Sinh viên thực hiện Nguyễn Văn Mẫn Đề tài : Xây dựng ứng dụng Kuro Team iii M Ụ C L Ụ C L ỜI NÓI ĐẦ U i CAM ĐOAN ii M Ụ C L Ụ C iii DANH SÁCH CÁC B Ả NG v DANH SÁCH CÁC HÌNH V Ẽ vi DANH SÁCH CÁC KÝ HI Ệ U, CH Ữ VI Ế T T Ắ T vii Trang M Ở ĐẦ U 1 1 T ổ ng quan v ề đề tài 1 2 Ý nghĩa của đề tài 1 3 Ph ạ m vi c ủa đề tài 2 4 B ố c ụ c c ủa đồ án 2 CHƯƠNG I NGÔN NG Ữ L Ậ P TRÌNH VÀ CÔNG C Ụ S Ử D Ụ NG 3 1 1 NGÔN NG Ữ L Ậ P TRÌNH RUBY 3 1 1 1 Ngôn ng ữ l ậ p trình Ruby 3 1 1 2 Ruby on Rails framework 3 1 1 3 Action Cable 8 1 2 NGÔN NG Ữ L Ậ P TRÌNH KOTLIN 9 1 2 1 Ngôn ng ữ l ậ p trình Kotlin 9 1 2 2 S ử d ụng Kotlin để phát tri ể n ứ ng d ụ ng Android 11 1 3 FIREBASE CLOUD MESSAGING 12 CH ƯƠNG II PHÂN TÍCH VÀ THI Ế T K Ế H Ệ TH Ố NG 14 2 1 BÀI TOÁN TH Ự C T Ế 14 2 1 1 T ổ ng quan hi ệ n tr ạ ng 14 2 1 2 Phân tích áp d ụ ng công ngh ệ để c ả i thi ệ n th ự c t ế 14 2 2 XÁC ĐỊ NH YÊU C ẦU NGƯỜ I S Ử D Ụ NG 15 2 2 1 Xác định ngườ i s ử d ụ ng 15 2 2 2 Xác đị nh yêu c ầ u c ủ a t ừng nhóm ngườ i s ử d ụ ng 15 2 3 PHÂN TÍCH CH ỨC NĂNG 16 2 3 1 Các ch ức năng củ a Khách 16 2 3 2 Các ch ức năng của người dùng bình thườ ng 16 2 3 3 Các ch ức năng của trưở ng nhóm 17 2 4 BI ỂU ĐỒ USE-CASE 18 Đề tài : Xây dựng ứng dụng Kuro Team iv 2 4 1 Các tác nhân trong h ệ th ố ng 18 2 4 2 Bi ểu đồ Use-Case c ủ a tác nhân Khách 18 2 4 3 Bi ểu đồ Use-Case c ủa Người dùng bình thườ ng 19 2 4 4 Bi ểu đồ Use-Case c ủa Trưở ng nhóm 21 2 4 5 Bi ểu đồ Use-Case t ổ ng quát c ủ a h ệ th ố ng 23 2 5 BI ỂU ĐỒ HO ẠT ĐỘ NG 24 2 6 BI ỂU ĐỒ L Ớ P 26 2 7 KI Ế N TRÚC H Ệ TH Ố NG 28 CHƯƠNG III XÂY D Ự NG, TH Ử NGHI ỆM VÀ ĐÁNH GIÁ 29 3 1 MÔI TRƯỜ NG TRI Ể N KHAI 29 3 1 1 Môi trườ ng tri ể n khai 29 3 1 2 Cài đặt môi trườ ng 29 3 2 PHÁT TRI Ể N Ứ NG D Ụ NG 30 3 2 1 Thi ế t k ế cơ sở d ữ li ệ u 30 3 2 2 Xây d ự ng Web API 38 3 3 3 Xây d ự ng ứ ng d ụ ng Android 40 3 3 TH Ử NGHI Ệ M 46 3 4 ĐÁNH GIÁ 65 K Ế T LU Ậ N 67 1 K Ế T QU Ả ĐẠT ĐƯỢ C 67 2 H Ạ N CH Ế 67 3 HƯỚ NG PHÁT TRI Ể N 68 TÀI LI Ệ U THAM KH Ả O 69 Đề tài : Xây dựng ứng dụng Kuro Team v DANH SÁCH CÁC B Ả NG Bảng I 1 Trạng thái nhận messages của Firebase cloud messaging 13 Bảng III 1: Bảng mô tả các bảng dữ liệu trong cơ sở dữ liệu của hệ thống 31 Bảng III 2 Chi tiết bảng users 33 Bảng III 3 Chi tiết bảng teams 33 Bảng III 4 Chi tiết bảng user_teams 34 Bảng III 5 Chi tiết bảng notes 34 Bảng III 6 Chi tiết bảng appointments 35 Bảng III 7 Chi tiết bảng boards 35 Bảng III 8 Chi tiết bảng tasks 36 Bảng III 9 Chi tiết bảng atta chments 36 Bảng III 10 Chi tiết bảng sub_tasks 37 Bảng III 11 Chi tiết bảng comments 37 Bảng III 12 Chi tiết bảng chat_messages 38 Bảng III 13 Chi tiết bảng notifications 38 Đề tài : Xây dựng ứng dụng Kuro Team vi DANH SÁCH CÁC HÌNH V Ẽ Hình I 1 Mô hình kiến trúc Model - View - Controller 4 Hình I 2 Hoạt động của HTTP và WebSocket 8 Hình II 1 Biểu đồ Use - Case cho Đăng kí tài khoản 18 Hình II 2 Biểu đồ Use - Case Đăng nhập 19 Hình II 3 Biểu đồ Use - Case Chức năng đăng xuất 19 Hình II 4 Biểu đồ Use - Case Quản lí yêu cầu cá nhân 19 Hình II 5 Biểu đồ Use - Case Quản lí thông tin cá nhân 20 Hình II 6 Biểu đồ ca Use - Case Quản lí công việc trong bảng công việc 20 Hình II 7: Biểu đồ Use - Case Quản lí thành viên của trưởng nhóm 21 Hình II 8 Biểu đồ Use - Case Quản lí bảng công việc của trưởng nhóm 21 Hình II 9 Biểu đồ Use - Case Quản lí ghi chú của trưởng nhóm 22 Hình II 10 Biểu đồ Use - Case Quản lí cuộc hẹn của trưởng nhóm 22 Hình II 11 Biểu đồ Use - Case Quản lí thông tin nhóm của trưởng nhóm 22 Hình II 12 Biểu đồ Use - Case tổng quát của hệ thống 23 Hình II 13 Biểu đồ hoạt động cảu chức năng yêu cầu tham gia nhóm 24 Hình II 14 Biểu đồ hoạt động của chức năng gửi lời mời tham gia nhóm 25 Hình II 15 Biểu đồ hoạt động của chức năng gửi tin nhắn đến nhóm 25 Hình II 16 Biểu đồ hoạt động của chức năng tạo công việc mới 26 Hình II 17 Biểu đồ hoạt động của chức năng cập nhật thông tin công việc 26 Hình II 18 Biểu đồ lớp của hệ thống 27 Hình II 19 Sơ đồ kiến trúc của hệ thống 28 Hình III 1 Cơ sở dữ liệu PostgreSQL 29 Hình II 20 Sơ đồ cơ sở dữ liệu của hệ thống 32 Hình III 2 Màn hình đăng nhập 47 Hì nh III 3 Màn hình đăng kí tài khoản 48 Hình III 4 Màn hình tìm kiếm nhóm và xin gia nhập 49 Hình III 5 Màn hình thông tin cá nhân người dùng 50 Hình III 6 Màn hình tạo nhóm mới 51 Hình III 7 Màn hình xem thông tin nhóm 52 Hình III 8 Màn hình xem thông tin nhóm 53 Hình III 9 Màn hình cập nhật thông tin nhóm 54 Hình III 10 Màn hình tìm kiếm và mời người vào nhóm 55 Hình III 11 Màn hình tạo bảng công việc mới 56 Hình III 12 Màn hình tạo ghi chú mới 57 Hình III 13 Màn hình tạo cuộc hẹn mới 58 Hình III 14 Màn hình danh sách công việc 59 Hình III 15 Màn hình cập nhật trạng thái công việc 60 Hình III 16 Màn hình tạo công việc mới 61 Hình III 17 Màn hình chi tiết công việc 62 Hình III 18 Màn hình danh sách các nhóm trò chuyện 63 Hình III 19 Màn hình trò chuyện nhóm 64 Hình III 20 Màn hình danh sách thông báo 65 Đề tài : Xây dựng ứng dụng Kuro Team vii DANH SÁCH CÁC KÝ HI Ệ U, CH Ữ VI Ế T T Ắ T Từ Viết tắt của Mô tả API Application Programming Interface Giao diện lập trình ứng dụng RESTful RE presentational St ate T ransfer Một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản MVC Model - View - Controller Mô hình - Giao diện - Bộ điều khiển DB Database Cơ sở dữ liệu Framework Là các đoạn code đã được viết sẵn, cấu thành nên một bộ khung và các thư viện lập trình được đóng gói Use - case Ca sử dụng, một khái niệm trong lĩnh vực phân tích và thiết kế hệ thống RoR Ruby on Rails Một framework được xây dựng trên ngôn ngữ lập trình Ruby FCM Firebase Cloud Messaging Dịch vụ gửi tin nhắn, thông báo miễn phí đến các nền tảng khác nhau WebSocket Là một giao thức giúp truyền dữ liệu hai chiều giữa server - client qua một kết nối TCP duy nhất DRY Don’t Repeat Yourself Là một nguyên lí trong phát triển phần mềm nhằm giảm sự lặp lại các mẫu phần mềm JSON JavaS cript Object Notation Là m ột kiểu định dạng dữ liệu trong đó sử dụng văn bản thuần tuý, định dạng JSON sử dụng các cặp key - value để dữ liệu sử dụng XML Extensible Markup Language Là ngôn ngữ đánh dấu với mục đích chung để tạo ra các ngôn ngữ đánh dấu khác Smartphone Điện thoại thông minh Đề tài : Xây dựng ứng dụng Kuro Team viii PDF Portable Document Format Là m ột loại định dạng tập tin văn bản Gem Một thư viện của ngôn ngữ lập trình Ruby Broadcast Là một thuật ngữ sử dụng trong mạng máy tính để mô tả c ách thức truyển tin được gửi từ 1 điểm đến tất cả các điểm khác trong cùng một mạng JVM Java Virtual Machine Máy ảo Java Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 1 M Ở ĐẦ U 1 Tổng quan về đề tài Trong xã hội hiện đại, với sự phát triển mạnh mẽ và vượt bậc của ngành khoa học công nghệ thì công nghệ đã đi vào cuộc sống của con người như là một điều tất yếu Các sản phẩm công nghệ xuất hiện ở mọi khía cạnh trong cuộc sống, từ sản xuất, kinh doanh đến thể thao, văn hóa và đặc biệt là trong đời sống cá nhân của mỗi người Smart phone là một trong những sản phẩm công nghệ được cho là đã làm thay đổi cuộc sống của con người bằng những công dụng hiện đại của nó Không chỉ đơn thuần là một chiếc điện thoại dùng để nghe, gọi hay nhắn tin ký tự đến người khác như những chiếc điện thoại di động trước đây đã làm được Smartphone còn mang đến nhiều điều khác biệt hơn bởi các tính năng hiện đại của nó Ngày nay, bạn có thể làm được làm được rất nhiều thứ từ làm việc, giải trí hay đến liên lạc với người thân và nhiều hơn nữa chỉ với một chiế c smartphone trên tay cùng với internet Ngày nay, do sự tiến bộ của khoa học công nghệ, để sở hữu một chiếc smartphone trong tay cũng không phải là điều quá khó khăn Với một số tiền bỏ ra vừa phải, bạn đã có thể có rất nhiều lựa chọn cho một chiếc smartp hone riêng của mình Thật không khó nhận ra điều đó khi hiện tại rất nhiều người đang sở hữu riêng cho mình một chiếc smartphone như một vật không thể thiếu Ngay cả một bạn học sinh cấp 2, cấp 3, gia đình không quá khá giả cũng có thể có riêng cho mình một chiếc smartphone rồi Từ những thực trạng trên, kết hợp với những kiến thức đã được học ở trường, trong khuôn khổ đồ án tốt nghiệp, em thực hiện đề tài: “Xây dựng ứng dụng Kuro Team chạy trên nền tảng hệ điều hành Android để hỗ trợ và quản lí công việc n hóm” Ứng dụng chạy trên nền tảng hệ điều hành Android là một trong hai hệ điều hành nổi bật và ưa dùng nhất trong các dòng smartphone hiện tại Đề tài này nhắm tới việc hỗ trợ việc hoạt động theo nhóm của các bạn học sinh, sinh viên trở nên hiện đại và ti ết kiệm thời gian hơn cũng như tận dụng được một phần công dụng của chiếc smartphone trên tay 2 Ý nghĩa của đề tài Ứng dụng Kuro Team được tạo ra nhằm vận dụng những kiến thức công nghệ thông tin đã được đào tạo ở trường, kết hợp với sự đa năng của chiếc smartphone hiện tại để tạo ra một ứng dụng như một công cụ hỗ trợ cho công việc nhóm của các bạn sinh viên, học sinh và dần thay thế các cách hoạt động truyền thống mà dần trở nên không phù hợp với cuộc sống hiện tại nữa Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 2 Ứng dụng sẽ giúp cho công việc trở nên nhanh chóng, cập nhật thông tin với nhau dễ dàng hơn và giúp làm quen với một cách làm việc hiện đại hơn trong thời kì mà công nghệ đang bùng nổ 3 Phạm vi của đề tài Đề tài bao gồm một ứng dụng chạy được trên nền tảng hệ điều hành Android, sử dụng cho tất cả các bạn sinh viên, học sinh hoặc bất cứ ai hoạt động theo nhóm vừa và nhỏ, muốn có một công cụ hiện đại để quản lí và làm việc với nhóm của mình Ứng dụng cung cấp những chức năng chính: o Tìm kiếm, tham gia vào nhóm hoặc tự tạo nhóm cho chính bản th ân mình o Quản lí nhóm của mình o Theo dõi công việc của các nhóm mình đang tham gia o Trò chuyện với mọi người trong nhóm 4 Bố cục của đồ án CHƯƠNG 1: NGÔN NGỮ LẬP TRÌNH VÀ CÔNG CỤ SỬ DỤNG Trong chương này, em trình bày một số thông tin tổng quát về các ngôn ngữ lập trình và một số công cụ liên quan được sử dụng để thực hiện đề tài CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ Trong chương này, em trình bày về bài toán thực tế, hướng giải quyết, phân tích các yêu cầu của người sử dụng hệ thống, phân tích các chứng năng của hệ thống, vẽ ra các biểu đồ use - case, biểu đồ hoạt động và sơ đồ lớp của hệ thống CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ Trong chương này, em tập trung trình bày về cách thức em triển khai thực hiện đề tài bao gồm cách thức xây dựng ứng dụng từ thiết kế cơ sở dữ liệu, đến phát triển ứng dụng và cuối cùng là đưa ra một số hình ảnh của sản phẩm thực tế em thực hiện được cũng như một vài đánh giá về sản phẩm KẾT LUẬN Cuối cùng, trong phần kết luận, em trình bày về một số kết quả em đạt được sau khi thực hiện đề tài, đồng thời nêu lên một số vấn đề em chưa giải quyết được và các hướng phát triển đề tài của mình trong tương lai Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 3 CHƯƠNG I NGÔN NG Ữ L Ậ P TRÌNH VÀ CÔNG C Ụ S Ử D Ụ NG Trong chương này, em trình bày một số thông tin tổng quát các ngôn ngữ lập trình em sử dụng để phát triển đề tài bao gồm ngôn ngữ lập trình Ruby, Kotlin và cùng với đó là một số thông tin liên quan đến các công cụ em sử dụng trong đề tài như các frameworks, các dịch vụ bên thứ ba 1 1 NGÔN NG Ữ L Ậ P TRÌNH RUBY 1 1 1 Ngôn ng ữ l ậ p trình Ruby [1] Ngôn ngữ lập trình Ruby là ngôn ngữ lập trình hướng đối tượng thuần túy được phát triển bởi Yukihiro Matsumoto (còn được gọi là Matz trong cộng đồng Ruby) vào giữa năm 1990 tại Nhật Bản Ruby hỗ trợ hầu hết các nền tảng nhưu MacOS, Windows và Linux Ruby được phát triển dựa trên nhiều ngôn ngữ khác như Perl, Lisp, Smalltalk, Eiffel và Ada Ruby là một ngôn ngữ kịch bản được diễn giải có nghĩa là hầu hết các triển khai của nó được thực hiện trực tiếp và tự do mà không cần biên dịch chương trình thành ngôn ngữ máy Một số ưu điểm của Ruby o Mã được viết bằng ngôn ngữ Ruby có kích thước nhỏ vì số dòng lệnh ít o Ruby cho phép tạo một ứng dụng Web đơn giản và nhanh chóng, giúp giảm bớt thời gian và khối lượng công việc o Ruby cho phép lập trình viên thực hiện các thay đổi cần thiết theo yêu cầu o Ruby là một ngôn ngữ lập trình động do không có quy tắc cứng nào về cách xây dựng các tính năng và rất gần với ngôn ngữ nói Một số nhược điểm của Ruby o Mã lệnh viết bằng Ruby khó sửa lỗi vì đa số mã lệnh được sinh ra ngay lúc chạy o Ruby là một ngôn ngữ kịch bản được diễn giải, các ngôn ngữ kịch bản thường chậm hơn các ngôn ngữ biên dịch nên Ruby chậm hơn so với nhiều ngôn ngữ lập trình khác Ứng dụng của Ruby : Ruby được dùng sử dụng để tạo ra các ứng dụng web khác nhau Đây là một trong những công nghệ được ưa chuộng nhất hiện nay 1 1 2 Ruby on Rails framework [2] Năm 2005, trong quá trình xây dựng Basecamp, David Heinemeier Hansson (DHH) đã hình dung ra một thư viện mạnh mẽ với ngôn ngữ lập trình Ruby Anh ta đã sử dụng nền tảng của ứng dụng và tạo ra các khối (blocks) để sử dụng trong tương lai, và tạo ra Ruby on Rails framework DHH làm cho nó trở nên đa mục đích và có thể mở rộng và chia sẻ với thị trường mã nguồn mở Ở đó Ruby on Rails được cải tiến thêm và tạo ra một bước đột phá để phát triển ứng dụng web Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 4 Ruby on Rails là một trong số những web framework phía máy chủ (server -side) phổ biến nhất hiện nay Ruby on Rails framework tuân theo 3 nguyên tắc thiết kế chính nhằm thúc đẩy sự đơn giản trong việc xây dựng các hệ thống phức tạp: o Kiến trúc Model -View-Controller (MVC) Trong kiến trúc này, mô hình web có ba lớp được kết nối với nhau Model chứa các mã lệnh làm việc với dữ liệu ứng dụng Nó tập trung các quy tắc nghiệp vụ của ứng dụng và các quy tắc để thao tác với dữ liệu Views có thể là các tệp HTML được nhúng mã Ruby bên trong để xác định cách người dùng tương tác với dữ liệu và cách hiển thị dữ liệu cho người dùng, bao gồm HTML, PDF, XML, RSS và một số định dạng khác Controller giao tiếp với model và views, nó nhận yêu cầu từ trình duyệt, sau đó làm việc với model để thực hiện yêu cầu và đưa ra views để hiển thị ra cho người dùng một cách chính xác Hình ảnh bên dưới mô tả hoạt động của mô hình MVC: Hình I 1 Mô hình kiến trúc Model - View - Controlle r Trong đó: User: Người dùng Action: Hành động Update: Thao tác cập nhật Notify: Thông báo Database: Cơ sử dữ liệu Model, View, Controller: 3 thành phần của kiến trúc MVC Các ứng dụng Web được xây dựng bởi Ruby on Rails framework được sắp xếp phù hợp và có phân chia giữa các lớp: routes, controllers, models và views Việc Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 5 sử dụng mô hình MVC tạo điều kiện cho việc bảo trì và triển khai kiểm thử dễ dàng hơn o Các quy ước về mô hình cấu hình Nguyên tắc này giúp các nhà phát triển tiết kiệm thời gian và công sức bởi vì Ruby on Rails framework đã giả định ra những gì họ muốn làm và cách thực hiện, nên họ không cần ghi nhớ chi tiết về các tệp cấu hình o Không lặp lại chính mình (DRY) DRY khuyến khích giảm thiểu sự lặp thông tin trong một hệ thống Điều này tạo điều kiện cho việc sửa đổi và giảm thiểu các lỗi trong quy trình phát triển phần mềm Những người xây dựng các trang web phức tạp đánh giá cao các nguyên tắc thiết kế dưới đây cùng với các lợi ích khác của Ruby on Rails: Tính đơn giản Ruby on Rails tận dụng những lợi thế của ngôn ngữ lập trình Ruby Nó sử dụng cú pháp giống như tiếng Anh và ngôn ngữ thông thường tạo cảm giác rất tự nhiên và hợp lý đến nỗi một số phần của mã lệnh đọc giống như khai báo tiếng Anh Cú pháp đơn giản và dễ đọc cho phép các nhà phát triển Ruby làm được nhiều hơn với ít dòng lệnh hơn Khả năng dễ đọc này làm giảm gánh nặng của các nhà phát triển khi viết ra các bình luận riêng biệt hoặc văn bản trợ giúp Các lập trình viên và người quản lý có thể xem mã của nhau một cách dễ dàng và nhanh chóng tìm hiểu những gì diễn ra trong một dự án Nó không b ắt buộc phải biết Ruby để sử dụng Rails, nhưng bạn chắc chắn sẽ chọ n Ruby khi bạn học Rails Ruby dễ học hơn hầu hết các ngôn ngữ lập trình ngay cả đối với những người không có kỹ thuật Nếu bạn thành thạo Python, quá trình chuyển đổi sang RoR sẽ diễn ra s uôn sẻ Cộng đồng phát triển web Rails rất cởi mở và thân thiện với người mới bắt đầu và cung cấp rất nhiều thư viện và plugin hữu ích Framework này có các giải pháp tích hợp cho nhiều vấn đề mà các nhà phát triển web thường gặp phải Lợi ích cốt lõi là t rình khởi tạo, mô - đun và các gems của nó (thư viện để thêm các tính năng cho các ứng dụng web) Hầu như đối với bất kỳ chức năng nào bạn có thể cần thực hiện, luôn có một gem có sẵn trong kho lưu trữ của RubyGems Nếu không, bạn có thể dễ dàng tìm thấy một chuyên gia trong cộng đồng Ruby rộng lớn sẽ phát triển một người trong thời gian ngắn nhất Framework đặt các quy tắc và mẫu tạo điều kiện thuận lợi hơn cho việc phát triển các ứng dụng web Với các tiêu chuẩn được thiết lập cụ thể, các nhà phát triển k hông lãng phí thời gian để tìm kiếm cấu trúc phù hợp của ứng dụng Nhiều điều xảy ra mà không có định nghĩa chặt chẽ nhờ các quy ước và giả định được coi là cách tốt nhất để hoàn thành nhiệm vụ Nhiều tác vụ được tích hợp sẵn để hoạt động bên ngoài, chẳng hạn như trình ánh xạ cơ sở dữ liệu đối tượng, cấu trúc tệp, tạo mã, cách các phần tử được đặt tên và sắp xếp, v v Tất cả những điều này làm tăng năng suất và làm cho các ứng dụng web được tạo nhiều hơn bảo trì Bởi vì cấu trúc và thực tiễn Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 6 phát triển g iống nhau được sử dụng ở mọi nơi, nên nó dễ dàng đi từ dự án này sang dự án khác, cũng như cho những người mới tham gia Phát triển nhanh hơn RoR giảm thiểu thời gian phát triển trang web xuống 25 - 50% so với các web framework phổ biến khác Phát triển web với Ruby on Rails nhanh hơn do định hướng đối tượng của Ruby, cơ sở mã nạc, thiết kế mô đun, mã nguồn mở rộng được phát triển bởi cộng đồng Rails và một loạt các giải pháp plugin sẵn sàng sử dụng cho tính năng phát triển RoR thường có ít dòng mã hơn Ví dụ, đôi khi một dòng mã trong Ruby có thể có giá trị bằng sáu dòng mã Java Nó cũng cung cấp một cơ sở hạ tầng mạnh mẽ từ sự khởi đầu, tiết kiệm thời gian và nỗ lực đáng kể để các nhà phát triển xây dựng từ đầu Họ không cần phải mất nhiều thời gian để cấ u hình các tệp để thiết lập cũng như không quyết định nhiều mặc định đã tồn tại Đưa ra ít quyết định hơn dẫn đến phát triển nhanh hơn, cộng tác được cải thiện và bảo trì dễ dàng hơn Các nhà phát triển cũng có quyền truy cập vào các mô - đun được tạo sẵn khác nhau trong các thư viện của bên thứ ba Họ có thể lấy bảng điều khiển, xác thực người dùng và các thành phần tiêu chuẩn và phi tiêu chuẩn khác từ một ‘nhà để xe ’ và tích hợp chúng vào sản phẩm Các thành phần có thể được sử dụng lại, thay đổi dễ dàng, và lặp lại và thử nghiệm là không đau Hơn nữa, RoR cung cấp tùy chọn thử nghiệm tích hợp trong quá trình coding Các nhà phát triển không cần phải sử dụng các plugin bên ngoài hoặc bất kỳ công cụ kiểm tra nào Nó tiết kiệm cả thời gian và công sức của họ và tiền của khách hàng Do đó, một trong những lợi thế của Ruby on Rails là khả năng phát triển nguyên mẫu của trang web trong tương lai nha nh hơn nhiều so với các web framework khác Khách hàng có thể kiểm tra tính khả thi của sản phẩm và khắc phục sớm mọi lỗi trong phạm vi và hướng của sản phẩm, điều này giúp giảm thiểu rủi ro o Dễ dàng bảo trì và cập nhật mã Ruby on Rails được biết đến với s ự ổn định và dự đoán Sửa đổi mã hiện có và thêm các tính năng mới vào một trang web thật dễ dàng Điều này đặc biệt có giá trị cho các dự án dài hạn và khởi nghiệp Nếu bạn cần cập nhật ứng dụng hoặc cấu trúc lại mã của nó sau khi được phát triển và triển khai, các quy ước Rails sẽ giúp nhân viên mới hoặc người làm việc tự do bước lên và tiếp nhận mọi thứ một cách nhanh chóng Với các công ty mới thành lập, việc tuyển dụng và sa thải nhiều là điển hình, trong khi chi phí giới thiệu các nhà phát triển mới v ào một dự án là một yếu tố quan trọng Thật tuyệt khi biết rằng việc thay thế một thành viên trong nhóm sẽ không thành vấn đề nếu bạn phát triển web Ruby on Rails o Hiệu quả chi phí RoR thể hiện cơ hội tiết kiệm tốt Nếu nhóm của bạn nằm trong ngân sách, có lẽ bạn muốn tránh chi phí cấp phép của các ngôn ngữ thông thường, đặc biệt là nếu cần trên các thiết bị khác nhau ở các địa điểm khác nhau RoR được sử dụng miễn phí Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 7 bởi một cá nhâ n hoặc một công ty Nó có thể chạy trên Linux nguồn mở miễn phí và hoạt động tốt với nhiều máy chủ và cơ sở dữ liệu web miễn phí Rất nhiều thư viện có sẵn giúp tiết kiệm thời gian và công sức cho các nhà phát triển, và nhiều thư viện có thể tự do khởi đ ộng Như đã đề cập ở trên, ứng dụng của bạn có thể được phát triển, triển khai và duy trì bởi các nhà phát triển khác nhau có mức giá có thể khác nhau Khả năng thích ứng với các thay đổi của RoR giúp tiết kiệm thời gian và tiền bạc hơn nữa Và vì toàn bộ quá trình phát triển và cập nhật mã được thực hiện nhanh hơn, chủ doanh nghiệp có xu hướng chi ít tiền hơn cho việc phát triển trang web của họ và nâng cấp o Sản phẩm chất lượng RoR tiết kiệm thời gian và tiền bạc mà vẫn đảm bảo chất lượng cao Sự trưởng th ành của nó có nghĩa là ít rủi ro hơn Các nhà phát triển có thể dễ dàng xây dựng các trang web tuân theo các nguyên tắc phát triển tốt Nhờ có các thư viện chất lượng cao có sẵn, họ không phải viết mã soạn sẵn mỗi lần Thay vào đó, họ có thể tập trung vào việc khám phá nhu cầu kinh doanh của bạn và xây dựng một sản phẩm tốt hơn cho bạn RoR cũng thúc đẩy tự động hóa thử nghiệm, giúp cung cấp phần mềm tốt hơn Và cuối cùng, thân thiện với các nhà thiết kế web về hệ thống tạo khuôn mẫu, RoR cũng giúp làm cho các ứng dụng web và trang web hấp dẫn hơn o Thích hợp với mọi nghiệp vụ Ruby được dự định là một giải pháp cho mục đích chung và Ruby on Rails là một framework đầy đủ bao gồm cả thiết kế front - end và back - end Thật đúng là cộng đồng của Ruby đã tập trung ch ủ yếu vào phát triển web ngay từ đầu Tuy nhiên, nó đã phát triển đa dạng hơn trong những năm qua Họ đang sử dụng lập trình RoR cho nhiều mục đích khác nhau (mặc dù có nhiều thành công khác nhau), bao gồm nhưng không giới hạn ở quảng cáo, back - end cho các ứng dụng di động, hệ thống quản lý nội dung, thương mại điện tử và học tập điện tử, FinTech, thị trường, mạng xã hội, khoa học, v v Những lợi ích của Ruby đã thúc đẩy việc tạo ra các cấu trúc 3D với Google SketchUp và mô phỏng tại Trung tâm nghiên cứu của NASA Langley, để nêu tên một số Tổng kết Ruby on Rails là một nền tảng phát triển phần mềm đáng tin cậy để xây dựng các ứng dụng cơ sở dữ liệu Nó tận dụng những lợi ích của ngôn ngữ lập trình web Ruby, viết tắt của mã dễ hiểu và phát triển web nhanh chóng Rails cung cấp tất cả các khái niệm từ các MVC frameworks truyền thống như models, views, controllers và database Việc sử dụng các quy ước Rails giúp loại bỏ mã cấu hình và cho phép các nhà phát triển Ruby viết ít mã hơn cho một ứng dụng chạy Phát triển trang web của Ruby on Rails được coi là nhanh nhẹn và để tăng cường khả năng bảo trì Rails frameworks là tuyệt vời để phát triển ứng dụng nhanh chóng Nó có thể hấp thụ những thay đổi dễ dàng Thử nghiệm tốt và tự động hóa thử nghiệm của nó tiếp tục Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 8 thúc đẩy sự phát triển nhanh chóng và chất l ượng tốt hơn của sản phẩm Với Ruby on Rails, thiết kế web trở nên thoải mái hơn, và phát triển và bảo trì trang web hiệu quả hơn về chi phí Nó cũng nổi tiếng với sức mạnh bảo mật Tất cả điều này làm cho RoR được cho là cách nhanh nhất và hiệu quả nhất đ ể xây dựng các trang web và ứng dụng web 1 1 3 Action Cable Realtime là một khái niệm được biết đến rộng rãi trong thời đại công nghệ hiện nay, được ứng dụng trong nhiều lĩnh vực từ image processing, Io T, … và web cũng vậy, nó được sử dụng trong các chức năng tạo thông báo hay khi bạn chat, bạn nhận được những thông tin mới một cách rất nhanh chóng [3] HTTP và Websockets o Đối với HTTP, kết nối giữa server và client thì khá là ngắn: đầu tiên client request một resource trên server thì một kết nối đến server sẽ được thiết lập và tài nguyên được yêu cầu (có thể là JSON, HTML, XML, …) sẽ được truyền về cho client như là một response Sau đó, kết nối sẽ bị đóng Vậy làm thế nào để client nhận biết được dữ liệu trên server thay đổi, thông thường thì client sẽ request để nhận biết sự thay đổi đó trong một thời gian nhất định Không giống như HTTP, WebSockets là giao thức cho phép các client và serve r luông kết nối liên tục với nha u để truyền dữ liệu Các client đăng kí channel với server và khi có thay đổi dữ liệu thì server sẽ broadcasts dữ liệu đó đến tất cả các client đã đăng kí channel này Bằng cách này, cả server và client đều cậ nhật trạng thái mới nhất của dữ liệu và có thể dễ dàng đồng bộ hóa các xuất hiện các thay đổi o Các controller của Rails được xây dựng nhằm mục đích xử li các request HTTP và Rails đã đưa ra một giải pháp để xử lí việc tích hợp xử lí Websockets Rails 5 sẽ có thêm một thư mục mới bên trong thư mục app gọi là channels Channels hoạt động như các controller xử lý các request Websockets bằng cách đóng gói các logic thành các đơn vị đặc thù, ví dụ như là chat mess ages hoặc notifications, các client đăng kí các channels để truyền tải dữ liệu Hình I 2 Hoạt động của HTTP và WebSocket Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 9 o Ưu điểm: Đối với WebSockets việc cung cấp tới khả năng giao tiếp hai chiều rất mạnh m ẽ, có độ trẽ thấp cũng như dẽ dàng xử lý khi phát sinh lỗi - Dung lượng của một kết nối bằng WebSocket sẽ ít hơn rất nhiều so với một HTTP Request o Nhược điểm: Do WebSocket là một tính năng đặc biệt của HTML5 chính vì thế nó vẫn chưa nhận được sự hỗ trợ của tất cả các trình duyệt Action Cable Action Cable là một tính năng tích hợp WebSocket của Rails Sử dụng Javascript ở ph ía Client và Ruby ở phía Server để thực hiện việc real - time 1 2 NGÔN NG Ữ L Ậ P TRÌNH KOTLIN 1 2 1 Ngôn ng ữ l ậ p trình Kotlin [4] Kotlin là ngôn ngữ lập trình đa năng, được gõ tĩnh do JetBrains phát triển Nó được JetBrains giới thiệu lần đầu tiên vào năm 2011 và là ngôn ngữ mới cho JVM Kotlin là ngôn ngữ hướng đối tượng và là ngôn ngữ tốt hơn so với Java, nhưng vẫn hoàn toàn tương thích với mã Java Kotlin được Google tài trợ, được công bố là một trong những ngôn ngữ chính thức cho Phát triển Android năm 2017 Các tính năng chính của Kotlin o Statically typed : một đặc tính ngôn ngữ lập trình có nghĩa là loại của mọi biến và biểu thức được biết tại thời điểm biên dịch Mặc dù nó là ngôn ngữ được nhập tĩnh, nhưng nó không yêu cầu bạn chỉ định rõ ràng loại của mỗi biến bạn khai báo o Data Classes : trong Kotlin, Da ta Classes dẫn đến việc tự động tạo ra các bản tóm tắt như bằng, hashCode, toString, getters / setters và nhiều hơn nữa Ví dụ dưới đây cho thấy sự thuận tiện của Data Class trong Kotlin so với class trong Java: /* Java Code */ class Book { private String title; private Author author; public String getTitle() { return title; } public void setTitle(String title) { this title = title; } public Author getAuthor() { return author; } public void setAuthor(Author author) Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 10 { this author = author; } } /* Kotlin code */ data class Book(var tilte: String, var author: Author) T ừ ví dụ trên cho thấy DataClasses của Kotlin giảm tối thiếu s ố lượng dòng code tuy nhiên vẫn đem lại kết quả tương đương o Súc tích : Kotlin làm giảm đáng kể mã bổ sung được viết bằng các ngôn ngữ lập trình hướng đối tượng khác o An toàn : Kotlin cung cấp sự an toàn từ hầu hết các NullPointerExceptions khó chịu và gây khó chịu bằng cách hỗ trợ vô hiệu như một phần của hệ thống Mọi biến trong Kotlin đều không có giá trị mặc định String s = “Hello Geeks” // Non - null Nếu chúng ta cố gắng gán giá trị null thì nó sẽ báo lỗi biên dịch Vì vậy, s = null // compile time error Để gán giá trị null cho bất kỳ chuỗi chuỗi nào, nó phải được khai báo là nullable String nullableStr = null // compile successfully Hàm length () cũng bị vô hiệu hóa trên các chuỗi nullable o Có khả năng hoạt động tốt với Java : Kotlin chạy trên Máy ảo Java (JVM) nên hoàn toàn tương thích với java Chúng ta có thể dễ dàng truy cập sử dụng mã java từ mã kotlin và mã kotlin từ java o Khả năng hướng đối tượng theo chức năng và đối tượng: Kotlin có rất nhiều phương thức hữu ích bao gồm các hàm bậc cao hơn, biểu thức lambda, nạp chồng toán tử, đánh giá lười biếng, quá tải toán tử và nhiều hơn nữa Hàm bậc cao hơn là hàm chấp nhận hàm làm tham số hoặc trả về hàm hoặc có thể thực hiện c ả hai Ví dụ về hàm bậc cao hơn: fun myFun(company: String,product: String, fn: (String,String) - > String): Unit { val result = fn(company,product) println(result) } fun main(args: Array){ val fn:(String,String) - >String={org,portal - >"$org deve lops $portal"} myFun("JetBrains","Kotlin",fn) } Kết quả thực thi của hàm : JetBrains develops Kotlin o Thời gian biên dịch : Kotlin có hiệu suất cao hơn và thời gian biên dịch nhanh o Công cụ thân thiện : Kotlin có hỗ trợ công cụ tuyệt vời Bất kỳ IDE Java nào - IntelliJ IDEA, Eclipse và Android Studio đều có thể được sử dụng cho Kotlin Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 11 Một chương trình viết bằng Kotlin cũng có thể chạy cách gõ các dòng lệnh trên cửa sổ dòng lệnh Ưu điểm của ngôn ngữ Kotlin o Dễ học: Cơ bản gần giống với java Nếu ai làm việc trong java thì dễ dàng hiểu ngay o Kotlin là ngôn ngữ đa nền tảng: Kotlin được hỗ trợ bởi tất cả các IDE của java để bạn có thể viết chương trình của mình và thực hiện chúng trên bất kỳ máy nào hỗ trợ JVM o Nó an toàn hơn Java o Nó cho phép sử dụng các framework s và thư viện Java trong các dự án Kotlin mới của bạn bằng cách sử dụng các frameworks nâng cao mà không cần thay đổi toàn bộ dự án trong Java o Ngôn ngữ lập trình Kotlin, bao gồm trình biên dịch, thư viện và tất cả các công cụ là hoàn toàn miễn phí và là nguồn mở và có sẵn trên github Các ứng dụng của ngôn ngữ Kotlin o Bạn có thể sử dụng Kotlin để xây dựng Ứng dụng Android o Kotlin cũng có thể biê n dịch thành JavaScript và làm cho nó có sẵn cho frontend o Nó cũng được thiết kế để hoạt động tốt cho phát triển web và phát triển phía máy chủ 1 2 2 S ử d ụng Kotlin để phát tri ể n ứ ng d ụ ng Android Kotlin rất phù hợ p để phát triển các ứng dụng Android , mang tất cả các lợi thế của ngôn ngữ hiện đại lên nền tảng Android mà không đưa ra bất kỳ hạn chế mới nào Khả năng tương thích: Kotlin hoàn toàn tương thích với JDK 6, đảm bảo các ứng dụng Kotlin có thể chạy trên các thiết bị Android cũ hơn mà không gặp v ấn đề gì Công cụ Kotlin được hỗ trợ đầy đủ trong Android Studio và tương thích với hệ thống xây dựng Android Hiệu năng: Một ứng dụng Kotlin chạy nhanh như một ứng dụng Java tương đương, nhờ cấu trúc mã byte rất giống nhau Với sự hỗ trợ của Kotlin cho c ác hàm nội tuyến, mã sử dụng lambdas thường chạy nhanh hơn cả mã được viết bằng Java Khả năng tương tác: Kotlin có thể tương tác 100% với Java, cho phép sử dụng tất cả các thư viện Android hiện có trong một ứng dụng Kotlin Điều này bao gồm xử lý chú thí ch, do đó, cơ sở dữ liệu và Dagger cũng hoạt động Thời gian biên dịch: Kotlin hỗ trợ biên dịch gia tăng hiệu quả, do đó, trong khi có một số chi phí bổ sung cho các bản dựng sạch, các bản dựng gia tăng thường nhanh hoặc nhanh hơn so với Java Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 12 Đối với mộ t nhà phát triển Java, bắt đầu với Kotlin là rất dễ dàng Trình chuyển đổi Java sang Kotlin tự động có trong plugin Kotlin giúp thực hiện các bước đầu tiên Kotlin Koans cung cấp một hướng dẫn thông qua các tính năng chính của ngôn ngữ với một loạt các bài tập tương tác [5] 1 3 FIREBASE CLOUD MESSAGING Firebase cloud messaging (FCM) là một dịch vụ gửi thông báo, tin nhắn đa nền tảng được cung cấp bởi Google, cho phép bạn gửi tin nhắn, thông báo một cách đáng tin cậy và hoàn toàn miễn phí tới các thiết bị đã được đăng ký với FCM Nguyên tắc hoạt động: Các thiết bị client sẽ đăng ký device_token lên cho FCM Các thông báo, tin nhắn được soạn và gửi từ một website, từ Notifications co mposer của firebase cung cấp, FCM sẽ nhận những thông báo này và xử lý gửi về các thiết bị đã đăng ký với FCM từ trước Khi các thiết bị có kết nối mạng thì thông báo sẽ được gửi về ứng dụng thành công Các loại FCM Messages : có 2 loại thông báo, tin nhắn mà bạn có thể gửi tới ứng dụng, đó là: o Notification messages : Đôi khi được gọi là "thông báo (tin nhắn) hiển thị", chúng được xử lý tự động bởi FCM SDK Notification messages chứa các key dữ liệu đã được định nghĩa trước Sử dụng Notification messages khi bạn chỉ muốn hiển thị các thông báo đến các ứng dụng clients o Data messages : Là thông báo (tin nhắn) sẽ được xử lý bởi các ứng dụng client Data messages chứa các cặp key - value do người dùng định nghĩa Sử dụng Data messages khi bạn muốn xử lý các thông báo trên chính ứng dụng của bạn Nhận messages trên ứng dụng (Android) Thông báo Firebase hoạt động khác nhau tùy thu ộc vào trạng thái của ứng dụng (Background / Foreground ) Trong android, để nhận Fireba se message thì cần phải tạo một service và extend FirebaseMessagingService Để xử lý các thông báo nhận đư ợc bạn cần override phương thức onMessageReceived() Phương thức này xử lý được hầu hết các loại tin nhắn, ngoại trừ các trường hợp sau: o Nhận Notification messages khi ứng dụng đang ở trạng thái background Trong trường hợp này, thô ng báo sẽ được gửi đến khay hệ thống của thiết bị, khi người dùng chạm vào thông báo sẽ mở trình khởi chạy ứng dụng mặc định o Nhận thông báo có chưa cả Notification messages và Data messages khi ứng dụng đang ở trạng thái background Trong trường hợp này, phần Notification sẽ được gửi đến khay hệ thống, còn phần Data sẽ được sử dụng cho trình khởi chạy các Activity khi chạm vào thông báo Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 13 Trạng thái xử lí nhận FCM messages Trạng thái ứng dụng Notification messages Data messages Background onMessageReceived() onMessageReceived() Foreground Khay hệ thống onMessageReceived() Bảng I 1 Trạng thái nhận messages của Firebase cloud messaging Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 14 CHƯƠNG II PHÂN TÍCH VÀ THI Ế T K Ế H Ệ TH Ố NG Trong chương này em trình bày thông tin về bài toán thực tế mà em sử dụng trong đề tài, sau đó là các phân tích về hệ thống như đối tượng sử dụng hệ thống, các chức năng của hệ thống, các biểu đồ Use -C ase, biểu đồ hoạt động và sơ đồ lớp của hệ thống 2 1 BÀI TOÁN TH Ự C T Ế 2 1 1 T ổ ng quan hi ệ n tr ạ ng Ngày nay, khoa học công nghệ ngày càng phát triển kéo theo những yêu cầu khắt khe hơn trong công việc, không có cá nhân nào hoàn hảo về mọi mặt và cũng không ai có thể làm tất cả mọi việc Kỹ năng làm việc nhóm sẽ giúp các thành viên hỗ trợ nhau, giúp đỡ nhau, đồng thời phát huy được thế mạnh của mỗi cá nhân Giúp cho công việc đạt hiệu suất cao hơn rất nhiều Nguyên nhân và thực trạng ở Việt Nam o Nhiều bạn sinh viên khi bị giáo viên bắt phải làm báo cáo chung với các bạn khác thường có suy nghĩ: Công việc chung của nhóm, ai nhận người đó tự chịu trách nhiệm hết Tình trạng này xảy ra khá nhiều ở các bạn sinh viên, vì ai cũng nghĩ đây là công việc của tập thể, mình không làm sẽ có người khác làm Và kết q uả là “cha chung không ai khóc” o Nhiều bạn suy nghĩ học nhóm là hình thức “vừa học, vừa chơi” nên đang họp nhóm nhưng cũng ráng quay qua tám chuyện một chút Làm ảnh hưởn g đến công việc của cả nhóm o Người Việt Nam nói chung vẫn còn nể nang trong các mối quan hệ, khi làm việc nhóm rất “sợ phát biểu ý kiến, sợ đưa ra quan điểm cá nhân” Sợ khi tranh cãi sẽ ảnh hưởng đến mỗi quan hệ, nhất là với thầy cô hoặc sếp, sợ tranh cãi hoặc “có ý kiến” sẽ bị “trù dập” o Ba phải Sinh viên Việt Nam còn tồn tại tư tưởng “lười suy nghĩ” Khi được yêu cầu đưa ra ý kiến thường “đùn đẩy” Không có chính kiến cá nhân, và “đồng ý bừa” với ý kiến của người khác Nhưng khi kết quả thất bại lại tì m cách đổ lỗi cho người khác o Không tôn trọng các thành viên trong nhóm Sinh viên Việt Nam vẫn có tật “giờ dây thun” Họp nhóm mà bắt cả nhóm chờ cả tiếng đồng hồ 2 1 2 Phân tích áp d ụ ng công ngh ệ để c ả i thi ệ n th ự c t ế Từ thực trạng cho thấy rằng cách tổ chức hoạt động nhóm theo kiểu truyền thống sẽ dẫn đến nhiều hạn chế: o Mọi người giao việc cho nhau bằng cách trao đổi nói chuyện trực tiếp, nhiều lúc không rõ ràng, không ghi chép lại, dẫn đến nhầm lẫn công việc lẫn nhau Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 15 o Công việc được phân chia không rõ ràng dẫn đến sự ỷ lại của một số thành viên o Việc ngại phát biểu ý kiến dẫn đến công việc bị chậm hoặc bế tắc, không hiệu quả cho công việc Giải pháp được áp dụng trong đề tài o Việc xây dựng ứng dụng chạy trên nền tảng hệ điều hành Android – một hệ điều hành phổ biến trong các dòng máy smartphone hiện đại, tạo ra một công cụ để hỗ trợ việc làm việc nhóm cho sinh viên, học sinh Vì sinh viên có thói quen sử dụng smartphone rất nhiều, nên việc làm quen với ứng dụng là rất dễ dàng o Ứng dụng cũng được thiết kế để ghi lại thông tin công việc cụ thể, dạng bảng, chia theo trạng thái rõ ràng, phân chia công việc cho từng người nên mọi người có thể dựa vào đó mà làm việc một cách rõ ràng hơn, tránh nhầm lẫn o Việc ngại phát biểu ý kiến trực tiếp của sinh viên, học sinh ảnh hưởng bởi một phần là do ngại giao tiếp với đám đông Khi sử dụng ứng dụng, một phần nào đó vấn đề này được giải quyết khi sinh viên có thể dễ dàng đưa ra ý kiến của mình thông qua các tính năng trò chuyện nhóm, nhận xét vào công việc của ứng dụng (việc sử dụng smartphone để nêu ý kiến sẽ dễ dàng hơn rất nhiều so với việc đứng trước đám đông để trình bày ý kiến của mình) o Vì chiếc smartphone thường sẽ luôn luôn ở trong túi hoặc trong cặp của mỗi người nên việc theo dõi công việc để thực hiện trở nên dễ dàng hơn, thời gian bỏ ra cũng được tiết kiệm đáng kể o Ứng dụng có chức năng nhận các thông báo về cập nhật của các công việc đang làm nên người dùng ứng dụng nhanh chóng cập nhật được những thay đổi mới nhất, tránh lãng phí thời gian để làm những việc trùng lặp 2 2 XÁC ĐỊ NH YÊU C ẦU NGƯỜ I S Ử D Ụ NG 2 2 1 Xác định ngườ i s ử d ụ ng Đề tài xây dựng ứng dụng hướng đến đối tượng sử dụng là các bạn học sinh, sinh viên với mục đích hỗ trợ làm việc và học tập theo nhóm Người sử dụng của hệ thống được chia làm 3 nhóm như sau: Khách: Nhóm người sử dụng chưa có tài khoản trong hệ thống Người dụng bình thường: Người sử dụng đã có tài khoản trong hệ thống, sử dụng ứng dụng để tham gia hoạt động các nhóm, nhóm này không bao gồm các người dùng sử dụng với mục đích chính là làm chủ một nhóm Trưởng nhóm: Nhóm người sử dụng đã có tài khoản trong hệ thống, sử dụng ứng dụng với mục đích chính là quản lí và điều hành nhóm 2 2 2 Xác đị nh yêu c ầ u c ủ a t ừng nhóm ngườ i s ử d ụ ng Nhóm ngườ i dùng là khách: Ngườ i dùng có th ể dùng thông tin c ủa mình để đăng kí mộ t tài kho ả n m ớ i v ớ i h ệ th ố ng Nhóm ngườ i dùng b ình thườ ng Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 16 o Ngườ i dùng có th ể đăng nhậ p vào ứ ng d ụ ng v ớ i tài kho ản đã đăng kí trước đó o Ngườ i dùng có th ể xem và c ậ p nh ậ t thông tin cá nhân o Ngườ i dùng có th ể đăng xuấ t ra kh ỏ i ứ ng d ụ ng khi không s ử d ụ ng n ữ a o Ngườ i dùng có th ể tìm ki ế m và yêu c ầ u tham gia vào m ộ t nhóm o Ngườ i dùng có th ể xem thông tin các nhóm đã tham và các nộ i dung liên quan khác c ủa nhóm như các ghi chú, lị ch h ẹ n, thông tin các b ả ng công vi ệ c, danh sách thành viên c ủ a nhóm o Ngườ i dùng có th ể thao tác v ớ i các ch ức năng cho phép củ a nhóm tham gia bao g ồ m: Xem danh sách công vi ệ c trong b ả ng c ủ a nhóm, t ạ o ho ặ c c ậ p nh ậ t thông tin, tr ạ ng thái công vi ệ c trong b ả ng o Ngườ i dùng có th ể nh ậ n thông báo t ừ các c ậ p nh ậ t công vi ệ c có liên quan, ghi chú ho ặ c l ị ch h ẹ n c ủa các nhóm đã tham gia o Ngườ i dùng có th ể trò chuy ệ n v ớ i các thành viên trong nhóm thông qua kênh trò chuy ệ n riêng c ủ a nhóm Nhóm người dùng là trưở ng nhóm o Ngườ i dùng có th ể t ạ o m ớ i m ộ t nhóm o Ngườ i dùng có th ể tìm ki ế m và m ờ i thêm thành viên vào nhóm c ủ a mình o Ngườ i dùng có th ể ch ỉ nh s ử a thông tin nhóm c ủ a mình o Ngườ i dùng có th ể t ạ o m ớ i, ch ỉ nh s ử a các b ả ng công vi ệ c, ghi chú ho ặ c l ị ch h ẹ n cho nhóm c ủ a mình 2 3 PHÂN TÍCH CH ỨC NĂNG Ứng dụng Kuro Team cung cấp một công cụ hỗ trợ cho sự hoạt động của một nhóm sinh viên, học sinh trở trên thuận tiện, nhanh chóng hơn thông qua các thao tác đơn giản trên chiếc điện thoại di động thông minh mà đa số học sinh hay sinh viên hiện tại đều sở hữu một cái Các tác nhân của hệ thống: Khách, Người dùng bình thường và Trưởng nhóm Dưới đây là mô tả cho các chức năng theo từng nhóm người d ùng 2 3 1 Các ch ức năng củ a Khách Chức năng đăng kí tài khoản : cho phép khách có tạo mới một tài khoản với hệ thống để đăng nhập và sử dụng các chức năng khác của ứng dụng 2 3 2 Các ch ức năng của ngườ i dùng bình thườ ng Chức năng đăng nhập, đăng xuất Chức năng này cho phép người dùng có thể đăng nhập vào ứng dụng và sử dụng các chức năng của ứng dụng, và đăng xuất khi không còn sử dụng ứng dụng nữa Chức năng Quản lí các yêu cầu cá nhân Chức năng này cho phép người dùng thực hiện các thao tác liên quan đến yêu cầu của tài khoản, bao gồm: o Gửi yêu cầu tham gia nhóm Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 17 o Hủy bỏ yêu cầu tham gia nhóm o Đồng ý lời mời tham gia nhóm o Từ chối lời mời tham gia nhóm Chức năng Quản lí thông tin cá nhân : cho phép n gười dùng xem hoặc chỉnh sửa thông tin cá nhân của bản thân bao gồm: tên, ngày sinh, ảnh đại diện, số điện thoại, địa chỉ, giới tính Chức năng Quản lí các công việc trong bảng công việc Chức năng này cho phép người dùng có thể thực hiện các thao tác: o Tạo công việc mới o Chỉnh sửa thông tin công việc: Tiêu đề, mô tả, thời gian bắt đầu, kết thúc, người thực hiện, thêm, bớt công việc phụ o Thêm hoặc xóa nhận xét vào công việc o Đính kèm hoặc gỡ bỏ hình ảnh vào công việc o Chuyển trạng thái công việc Chức năng Trò chuyện với nhóm: Chức năng này cho phép người dùng có thể trò chuyện với mọi người trong nhóm bằng thao tác gửi tin nhắn đến nhóm đã tham gia 2 3 3 Các ch ức năng của trưở ng nhóm Chức năng quản lí thành viên Chức năng này cho phép trưởng nhóm thực hiện các thao tác: o Mời thành viên mới vào nhóm o Xóa bỏ lời mời o Đồng ý yêu cầu xin tham gia nhóm o Từ chối yêu cầu xin tham gia nhóm Chức năng quản lí bảng công việc : Chức năng này cho phép trưởng nhóm có thể tạo mới một bảng công việc hoặc chỉnh sửa thông tin của một bảng công việc đã có Chức năng quản lí ghi chú Chức năng này cho phép trưởng nhóm có thể thực hiện các thao tác: o Tạo mới ghi chú o Cập nhật thông tin ghi chú o Xóa một ghi chú đã tạo Chức năng quản lí cuộc hẹn Chức năng này cho phép trưởng nhóm có thể thực hiện các thao tác: o Tạo mới một cuộc hẹn o Chỉnh sửa thông tin cuộc hẹn o Xóa một cuộc hẹn đã tạo Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 18 Chức năng quản lí thông tin nhóm : cho phép trưởng nhóm có thể xem và cập nhật thông tin của nhóm bao gồm: hình ảnh đại diện của nhóm, tên và mô tả của nhóm 2 4 BI ỂU ĐỒ USE-CASE 2 4 1 Các tác nhân trong h ệ th ố ng Hệ thống có 3 tác nhân bao gồm: Khách : Là người dùng mới cài đặt ứng dụng và chưa có tài khoản trên hệ thống Người dùng bình thường : L à người dùng ứng dụng đã có tài khoản trên hệ thống, mà không sử dụng các chức năng của trưởng nhóm (Chỉ tham gia nhóm và không phải là trưởng nhóm) Trưởng nhóm : Là người dùng ứng dụng đã có tài khoản trên hệ thống, sử dụng ứng dụng với mục đích để quản lí nhóm của mình 2 4 2 Bi ểu đồ Use-Case c ủ a tác nhân Khách Hình II 1 Biểu đồ Use-C ase cho Đăng kí tài khoản Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 19 2 4 3 Bi ểu đồ Use-Case c ủa Người dùng bình thườ ng Hình II 2 Biểu đồ Use-C ase Đăng nhập Hình II 3 Biểu đồ Use -C ase Chức năng đăng xuất Hình II 4 Biểu đồ Use -Case Q uản lí yêu cầu cá nhân Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 20 Hình II 5 Biểu đồ Use-Case Q uản lí thông tin cá nhân Hình II 6 Biểu đồ ca Use-Case Q uản lí công việc trong bảng công việc Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 21 2 4 4 Bi ểu đồ Use-Case c ủ a Trưở ng nhóm Hình II 7 : Biểu đồ Use-Case Q uản lí thành viên của trưởng nhóm Hình II 8 Biểu đồ Use-Case Q uản lí bảng công việc của trưởng nhóm Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung Hùng 22 Hình II 9 Biểu đồ Use -C ase Quản lí ghi chú của trưởng nhóm Hình II 10 Biểu đồ Use-Case Q uản lí cuộc hẹn của trưởng nhóm Hình II 11 Biểu đồ Use-Case Q uản lí thông tin nhóm của trưởng nhóm Đề tài : Xây dựng ứng dụng Kuro Team SVTH: Nguyễn Văn Mẫn GVHD: PGS TS Võ Trung
Tổng quan về đề tài
Trong xã hội hiện đại, với sự phát triển mạnh mẽ và vượt bậc của ngành khoa học công nghệ thì công nghệ đã đi vào cuộc sống của con người như là một điều tất yếu Các sản phẩm công nghệ xuất hiện ở mọi khía cạnh trong cuộc sống, từ sản xuất, kinh doanh đến thể thao, văn hóa và đặc biệt là trong đời sống cá nhân của mỗi người
Smartphone là một trong những sản phẩm công nghệ được cho là đã làm thay đổi cuộc sống của con người bằng những công dụng hiện đại của nó Không chỉ đơn thuần là một chiếc điện thoại dùng để nghe, gọi hay nhắn tin ký tự đến người khác như những chiếc điện thoại di động trước đây đã làm được Smartphone còn mang đến nhiều điều khác biệt hơn bởi các tính năng hiện đại của nó Ngày nay, bạn có thể làm được làm được rất nhiều thứ từ làm việc, giải trí hay đến liên lạc với người thân và nhiều hơn nữa chỉ với một chiếc smartphone trên tay cùng với internet Ngày nay, do sự tiến bộ của khoa học công nghệ, để sở hữu một chiếc smartphone trong tay cũng không phải là điều quá khó khăn Với một số tiền bỏ ra vừa phải, bạn đã có thể có rất nhiều lựa chọn cho một chiếc smartphone riêng của mình Thật không khó nhận ra điều đó khi hiện tại rất nhiều người đang sở hữu riêng cho mình một chiếc smartphone như một vật không thể thiếu Ngay cả một bạn học sinh cấp 2, cấp 3, gia đình không quá khá giả cũng có thể có riêng cho mình một chiếc smartphone rồi
Từ những thực trạng trên, kết hợp với những kiến thức đã được học ở trường, trong khuôn khổ đồ án tốt nghiệp, em thực hiện đề tài: “Xây dựng ứng dụng Kuro Team chạy trên nền tảng hệ điều hành Android để hỗ trợ và quản lí công việc nhóm” Ứng dụng chạy trên nền tảng hệ điều hành Android là một trong hai hệ điều hành nổi bật và ưa dùng nhất trong các dòng smartphone hiện tại Đề tài này nhắm tới việc hỗ trợ việc hoạt động theo nhóm của các bạn học sinh, sinh viên trở nên hiện đại và tiết kiệm thời gian hơn cũng như tận dụng được một phần công dụng của chiếc smartphone trên tay.
Ý nghĩa của đề tài
Ứng dụng Kuro Team được tạo ra nhằm vận dụng những kiến thức công nghệ thông tin đã được đào tạo ở trường, kết hợp với sự đa năng của chiếc smartphone hiện tại để tạo ra một ứng dụng như một công cụ hỗ trợ cho công việc nhóm của các bạn sinh viên, học sinh và dần thay thế các cách hoạt động truyền thống mà dần trở nên không phù hợp với cuộc sống hiện tại nữa Ứng dụng sẽ giúp cho công việc trở nên nhanh chóng, cập nhật thông tin với nhau dễ dàng hơn và giúp làm quen với một cách làm việc hiện đại hơn trong thời kì mà công nghệ đang bùng nổ.
Phạm vi của đề tài
Đề tài bao gồm một ứng dụng chạy được trên nền tảng hệ điều hành Android, sử dụng cho tất cả các bạn sinh viên, học sinh hoặc bất cứ ai hoạt động theo nhóm vừa và nhỏ, muốn có một công cụ hiện đại để quản lí và làm việc với nhóm của mình
Ứng dụng cung cấp những chức năng chính: o Tìm kiếm, tham gia vào nhóm hoặc tự tạo nhóm cho chính bản thân mình o Quản lí nhóm của mình o Theo dõi công việc của các nhóm mình đang tham gia o Trò chuyện với mọi người trong nhóm.
Bố cục của đồ án
CHƯƠNG 1: NGÔN NGỮ LẬP TRÌNH VÀ CÔNG CỤ SỬ DỤNG
Trong chương này, em trình bày một số thông tin tổng quát về các ngôn ngữ lập trình và một số công cụ liên quan được sử dụng để thực hiện đề tài
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ
Trong chương này, em trình bày về bài toán thực tế, hướng giải quyết, phân tích các yêu cầu của người sử dụng hệ thống, phân tích các chứng năng của hệ thống, vẽ ra các biểu đồ use-case, biểu đồ hoạt động và sơ đồ lớp của hệ thống
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
Trong chương này, em tập trung trình bày về cách thức em triển khai thực hiện đề tài bao gồm cách thức xây dựng ứng dụng từ thiết kế cơ sở dữ liệu, đến phát triển ứng dụng và cuối cùng là đưa ra một số hình ảnh của sản phẩm thực tế em thực hiện được cũng như một vài đánh giá về sản phẩm
Cuối cùng, trong phần kết luận, em trình bày về một số kết quả em đạt được sau khi thực hiện đề tài, đồng thời nêu lên một số vấn đề em chưa giải quyết được và các hướng phát triển đề tài của mình trong tương lai.
NGÔN NGỮ LẬP TRÌNH VÀ CÔNG CỤ SỬ DỤNG
NGÔN NGỮ LẬP TRÌNH RUBY
1.1.1 Ngôn ngữ lập trình Ruby
[1]Ngôn ngữ lập trình Ruby là ngôn ngữ lập trình hướng đối tượng thuần túy được phát triển bởi Yukihiro Matsumoto (còn được gọi là Matz trong cộng đồng Ruby) vào giữa năm 1990 tại Nhật Bản Ruby hỗ trợ hầu hết các nền tảng nhưu MacOS, Windows và Linux
Ruby được phát triển dựa trên nhiều ngôn ngữ khác như Perl, Lisp, Smalltalk, Eiffel và Ada Ruby là một ngôn ngữ kịch bản được diễn giải có nghĩa là hầu hết các triển khai của nó được thực hiện trực tiếp và tự do mà không cần biên dịch chương trình thành ngôn ngữ máy
Một số ưu điểm của Ruby o Mã được viết bằng ngôn ngữ Ruby có kích thước nhỏ vì số dòng lệnh ít o Ruby cho phép tạo một ứng dụng Web đơn giản và nhanh chóng, giúp giảm bớt thời gian và khối lượng công việc o Ruby cho phép lập trình viên thực hiện các thay đổi cần thiết theo yêu cầu o Ruby là một ngôn ngữ lập trình động do không có quy tắc cứng nào về cách xây dựng các tính năng và rất gần với ngôn ngữ nói
Một số nhược điểm của Ruby o Mã lệnh viết bằng Ruby khó sửa lỗi vì đa số mã lệnh được sinh ra ngay lúc chạy o Ruby là một ngôn ngữ kịch bản được diễn giải, các ngôn ngữ kịch bản thường chậm hơn các ngôn ngữ biên dịch nên Ruby chậm hơn so với nhiều ngôn ngữ lập trình khác
Ứng dụng của Ruby: Ruby được dùng sử dụng để tạo ra các ứng dụng web khác nhau Đây là một trong những công nghệ được ưa chuộng nhất hiện nay
[2]Năm 2005, trong quá trình xây dựng Basecamp, David Heinemeier Hansson (DHH) đã hình dung ra một thư viện mạnh mẽ với ngôn ngữ lập trình Ruby Anh ta đã sử dụng nền tảng của ứng dụng và tạo ra các khối (blocks) để sử dụng trong tương lai, và tạo ra Ruby on Rails framework DHH làm cho nó trở nên đa mục đích và có thể mở rộng và chia sẻ với thị trường mã nguồn mở Ở đó Ruby on Rails được cải tiến thêm và tạo ra một bước đột phá để phát triển ứng dụng web
Ruby on Rails là một trong số những web framework phía máy chủ (server-side) phổ biến nhất hiện nay
Ruby on Rails framework tuân theo 3 nguyên tắc thiết kế chính nhằm thúc đẩy sự đơn giản trong việc xây dựng các hệ thống phức tạp: o Kiến trúc Model-View-Controller (MVC)
Trong kiến trúc này, mô hình web có ba lớp được kết nối với nhau Model chứa các mã lệnh làm việc với dữ liệu ứng dụng Nó tập trung các quy tắc nghiệp vụ của ứng dụng và các quy tắc để thao tác với dữ liệu Views có thể là các tệp HTML được nhúng mã Ruby bên trong để xác định cách người dùng tương tác với dữ liệu và cách hiển thị dữ liệu cho người dùng, bao gồm HTML, PDF, XML, RSS và một số định dạng khác Controller giao tiếp với model và views, nó nhận yêu cầu từ trình duyệt, sau đó làm việc với model để thực hiện yêu cầu và đưa ra views để hiển thị ra cho người dùng một cách chính xác
Hình ảnh bên dưới mô tả hoạt động của mô hình MVC:
Hình I.1 Mô hình kiến trúc Model-View-Controller
Update: Thao tác cập nhật
Database: Cơ sử dữ liệu
Model, View, Controller: 3 thành phần của kiến trúc MVC
Các ứng dụng Web được xây dựng bởi Ruby on Rails framework được sắp xếp phù hợp và có phân chia giữa các lớp: routes, controllers, models và views Việc sử dụng mô hình MVC tạo điều kiện cho việc bảo trì và triển khai kiểm thử dễ dàng hơn o Các quy ước về mô hình cấu hình
Nguyên tắc này giúp các nhà phát triển tiết kiệm thời gian và công sức bởi vì Ruby on Rails framework đã giả định ra những gì họ muốn làm và cách thực hiện, nên họ không cần ghi nhớ chi tiết về các tệp cấu hình o Không lặp lại chính mình (DRY)
DRY khuyến khích giảm thiểu sự lặp thông tin trong một hệ thống Điều này tạo điều kiện cho việc sửa đổi và giảm thiểu các lỗi trong quy trình phát triển phần mềm Những người xây dựng các trang web phức tạp đánh giá cao các nguyên tắc thiết kế dưới đây cùng với các lợi ích khác của Ruby on Rails:
Ruby on Rails tận dụng những lợi thế của ngôn ngữ lập trình Ruby Nó sử dụng cú pháp giống như tiếng Anh và ngôn ngữ thông thường tạo cảm giác rất tự nhiên và hợp lý đến nỗi một số phần của mã lệnh đọc giống như khai báo tiếng Anh Cú pháp đơn giản và dễ đọc cho phép các nhà phát triển Ruby làm được nhiều hơn với ít dòng lệnh hơn Khả năng dễ đọc này làm giảm gánh nặng của các nhà phát triển khi viết ra các bình luận riêng biệt hoặc văn bản trợ giúp Các lập trình viên và người quản lý có thể xem mã của nhau một cách dễ dàng và nhanh chóng tìm hiểu những gì diễn ra trong một dự án Nó không bắt buộc phải biết Ruby để sử dụng Rails, nhưng bạn chắc chắn sẽ chọn Ruby khi bạn học Rails Ruby dễ học hơn hầu hết các ngôn ngữ lập trình ngay cả đối với những người không có kỹ thuật Nếu bạn thành thạo Python, quá trình chuyển đổi sang RoR sẽ diễn ra suôn sẻ Cộng đồng phát triển web Rails rất cởi mở và thân thiện với người mới bắt đầu và cung cấp rất nhiều thư viện và plugin hữu ích Framework này có các giải pháp tích hợp cho nhiều vấn đề mà các nhà phát triển web thường gặp phải Lợi ích cốt lõi là trình khởi tạo, mô-đun và các gems của nó (thư viện để thêm các tính năng cho các ứng dụng web) Hầu như đối với bất kỳ chức năng nào bạn có thể cần thực hiện, luôn có một gem có sẵn trong kho lưu trữ của RubyGems Nếu không, bạn có thể dễ dàng tìm thấy một chuyên gia trong cộng đồng Ruby rộng lớn sẽ phát triển một người trong thời gian ngắn nhất Framework đặt các quy tắc và mẫu tạo điều kiện thuận lợi hơn cho việc phát triển các ứng dụng web Với các tiêu chuẩn được thiết lập cụ thể, các nhà phát triển không lãng phí thời gian để tìm kiếm cấu trúc phù hợp của ứng dụng Nhiều điều xảy ra mà không có định nghĩa chặt chẽ nhờ các quy ước và giả định được coi là cách tốt nhất để hoàn thành nhiệm vụ Nhiều tác vụ được tích hợp sẵn để hoạt động bên ngoài, chẳng hạn như trình ánh xạ cơ sở dữ liệu đối tượng, cấu trúc tệp, tạo mã, cách các phần tử được đặt tên và sắp xếp, v.v Tất cả những điều này làm tăng năng suất và làm cho các ứng dụng web được tạo nhiều hơn bảo trì Bởi vì cấu trúc và thực tiễn phát triển giống nhau được sử dụng ở mọi nơi, nên nó dễ dàng đi từ dự án này sang dự án khác, cũng như cho những người mới tham gia
RoR giảm thiểu thời gian phát triển trang web xuống 25-50% so với các web framework phổ biến khác Phát triển web với Ruby on Rails nhanh hơn do định hướng đối tượng của Ruby, cơ sở mã nạc, thiết kế mô đun, mã nguồn mở rộng được phát triển bởi cộng đồng Rails và một loạt các giải pháp plugin sẵn sàng sử dụng cho tính năng phát triển RoR thường có ít dòng mã hơn Ví dụ, đôi khi một dòng mã trong Ruby có thể có giá trị bằng sáu dòng mã Java Nó cũng cung cấp một cơ sở hạ tầng mạnh mẽ từ sự khởi đầu, tiết kiệm thời gian và nỗ lực đáng kể để các nhà phát triển xây dựng từ đầu Họ không cần phải mất nhiều thời gian để cấu hình các tệp để thiết lập cũng như không quyết định nhiều mặc định đã tồn tại Đưa ra ít quyết định hơn dẫn đến phát triển nhanh hơn, cộng tác được cải thiện và bảo trì dễ dàng hơn Các nhà phát triển cũng có quyền truy cập vào các mô-đun được tạo sẵn khác nhau trong các thư viện của bên thứ ba Họ có thể lấy bảng điều khiển, xác thực người dùng và các thành phần tiêu chuẩn và phi tiêu chuẩn khác từ một ‘nhà để xe’ và tích hợp chúng vào sản phẩm Các thành phần có thể được sử dụng lại, thay đổi dễ dàng, và lặp lại và thử nghiệm là không đau Hơn nữa, RoR cung cấp tùy chọn thử nghiệm tích hợp trong quá trình coding Các nhà phát triển không cần phải sử dụng các plugin bên ngoài hoặc bất kỳ công cụ kiểm tra nào Nó tiết kiệm cả thời gian và công sức của họ và tiền của khách hàng Do đó, một trong những lợi thế của Ruby on Rails là khả năng phát triển nguyên mẫu của trang web trong tương lai nhanh hơn nhiều so với các web framework khác Khách hàng có thể kiểm tra tính khả thi của sản phẩm và khắc phục sớm mọi lỗi trong phạm vi và hướng của sản phẩm, điều này giúp giảm thiểu rủi ro o Dễ dàng bảo trì và cập nhật mã
Ruby on Rails được biết đến với sự ổn định và dự đoán Sửa đổi mã hiện có và thêm các tính năng mới vào một trang web thật dễ dàng Điều này đặc biệt có giá trị cho các dự án dài hạn và khởi nghiệp Nếu bạn cần cập nhật ứng dụng hoặc cấu trúc lại mã của nó sau khi được phát triển và triển khai, các quy ước Rails sẽ giúp nhân viên mới hoặc người làm việc tự do bước lên và tiếp nhận mọi thứ một cách nhanh chóng Với các công ty mới thành lập, việc tuyển dụng và sa thải nhiều là điển hình, trong khi chi phí giới thiệu các nhà phát triển mới vào một dự án là một yếu tố quan trọng Thật tuyệt khi biết rằng việc thay thế một thành viên trong nhóm sẽ không thành vấn đề nếu bạn phát triển web Ruby on Rails o Hiệu quả chi phí
RoR thể hiện cơ hội tiết kiệm tốt Nếu nhóm của bạn nằm trong ngân sách, có lẽ bạn muốn tránh chi phí cấp phép của các ngôn ngữ thông thường, đặc biệt là nếu cần trên các thiết bị khác nhau ở các địa điểm khác nhau RoR được sử dụng miễn phí bởi một cá nhân hoặc một công ty Nó có thể chạy trên Linux nguồn mở miễn phí và hoạt động tốt với nhiều máy chủ và cơ sở dữ liệu web miễn phí Rất nhiều thư viện có sẵn giúp tiết kiệm thời gian và công sức cho các nhà phát triển, và nhiều thư viện có thể tự do khởi động Như đã đề cập ở trên, ứng dụng của bạn có thể được phát triển, triển khai và duy trì bởi các nhà phát triển khác nhau có mức giá có thể khác nhau Khả năng thích ứng với các thay đổi của RoR giúp tiết kiệm thời gian và tiền bạc hơn nữa Và vì toàn bộ quá trình phát triển và cập nhật mã được thực hiện nhanh hơn, chủ doanh nghiệp có xu hướng chi ít tiền hơn cho việc phát triển trang web của họ và nâng cấp o Sản phẩm chất lượng
NGÔN NGỮ LẬP TRÌNH KOTLIN
1.2.1 Ngôn ngữ lập trình Kotlin
[4]Kotlin là ngôn ngữ lập trình đa năng, được gõ tĩnh do JetBrains phát triển Nó được JetBrains giới thiệu lần đầu tiên vào năm 2011 và là ngôn ngữ mới cho JVM Kotlin là ngôn ngữ hướng đối tượng và là ngôn ngữ tốt hơn so với Java, nhưng vẫn hoàn toàn tương thích với mã Java
Kotlin được Google tài trợ, được công bố là một trong những ngôn ngữ chính thức cho Phát triển Android năm 2017
Các tính năng chính của Kotlin o Statically typed: một đặc tính ngôn ngữ lập trình có nghĩa là loại của mọi biến và biểu thức được biết tại thời điểm biên dịch Mặc dù nó là ngôn ngữ được nhập tĩnh, nhưng nó không yêu cầu bạn chỉ định rõ ràng loại của mỗi biến bạn khai báo o Data Classes: trong Kotlin, Data Classes dẫn đến việc tự động tạo ra các bản tóm tắt như bằng, hashCode, toString, getters / setters và nhiều hơn nữa
Ví dụ dưới đây cho thấy sự thuận tiện của Data Class trong Kotlin so với class trong Java:
/* Java Code */ class Book { private String title; private Author author; public String getTitle()
} public void setTitle(String title)
} public void setAuthor(Author author)
/* Kotlin code */ data class Book(var tilte: String, var author: Author)
Từ ví dụ trên cho thấy DataClasses của Kotlin giảm tối thiếu số lượng dòng code tuy nhiên vẫn đem lại kết quả tương đương o Súc tích: Kotlin làm giảm đáng kể mã bổ sung được viết bằng các ngôn ngữ lập trình hướng đối tượng khác o An toàn: Kotlin cung cấp sự an toàn từ hầu hết các NullPointerExceptions khó chịu và gây khó chịu bằng cách hỗ trợ vô hiệu như một phần của hệ thống Mọi biến trong Kotlin đều không có giá trị mặc định
String s = “Hello Geeks” // Non-null
Nếu chúng ta cố gắng gán giá trị null thì nó sẽ báo lỗi biên dịch Vì vậy, s = null // compile time error Để gán giá trị null cho bất kỳ chuỗi chuỗi nào, nó phải được khai báo là nullable
String nullableStr = null // compile successfully
Hàm length () cũng bị vô hiệu hóa trên các chuỗi nullable o Có khả năng hoạt động tốt với Java: Kotlin chạy trên Máy ảo Java (JVM) nên hoàn toàn tương thích với java Chúng ta có thể dễ dàng truy cập sử dụng mã java từ mã kotlin và mã kotlin từ java o Khả năng hướng đối tượng theo chức năng và đối tượng: Kotlin có rất nhiều phương thức hữu ích bao gồm các hàm bậc cao hơn, biểu thức lambda, nạp chồng toán tử, đánh giá lười biếng, quá tải toán tử và nhiều hơn nữa Hàm bậc cao hơn là hàm chấp nhận hàm làm tham số hoặc trả về hàm hoặc có thể thực hiện cả hai
Ví dụ về hàm bậc cao hơn: fun myFun(company: String,product: String, fn: (String,String) -> String): Unit { val result = fn(company,product) println(result)
} fun main(args: Array){ val fn:(String,String)->String={org,portal->"$org develops
$portal"} myFun("JetBrains","Kotlin",fn)
Kết quả thực thi của hàm:
JetBrains develops Kotlin o Thời gian biên dịch: Kotlin có hiệu suất cao hơn và thời gian biên dịch nhanh o Công cụ thân thiện: Kotlin có hỗ trợ công cụ tuyệt vời Bất kỳ IDE Java nào -
IntelliJ IDEA, Eclipse và Android Studio đều có thể được sử dụng cho Kotlin
Một chương trình viết bằng Kotlin cũng có thể chạy cách gõ các dòng lệnh trên cửa sổ dòng lệnh
Ưu điểm của ngôn ngữ Kotlin o Dễ học: Cơ bản gần giống với java Nếu ai làm việc trong java thì dễ dàng hiểu ngay o Kotlin là ngôn ngữ đa nền tảng: Kotlin được hỗ trợ bởi tất cả các IDE của java để bạn có thể viết chương trình của mình và thực hiện chúng trên bất kỳ máy nào hỗ trợ JVM o Nó an toàn hơn Java o Nó cho phép sử dụng các frameworks và thư viện Java trong các dự án Kotlin mới của bạn bằng cách sử dụng các frameworks nâng cao mà không cần thay đổi toàn bộ dự án trong Java o Ngôn ngữ lập trình Kotlin, bao gồm trình biên dịch, thư viện và tất cả các công cụ là hoàn toàn miễn phí và là nguồn mở và có sẵn trên github
Các ứng dụng của ngôn ngữ Kotlin o Bạn có thể sử dụng Kotlin để xây dựng Ứng dụng Android o Kotlin cũng có thể biên dịch thành JavaScript và làm cho nó có sẵn cho frontend o Nó cũng được thiết kế để hoạt động tốt cho phát triển web và phát triển phía máy chủ
1.2.2 Sử dụng Kotlin để phát triển ứng dụng Android
Kotlin rất phù hợp để phát triển các ứng dụng Android, mang tất cả các lợi thế của ngôn ngữ hiện đại lên nền tảng Android mà không đưa ra bất kỳ hạn chế mới nào
Khả năng tương thích: Kotlin hoàn toàn tương thích với JDK 6, đảm bảo các ứng dụng Kotlin có thể chạy trên các thiết bị Android cũ hơn mà không gặp vấn đề gì Công cụ Kotlin được hỗ trợ đầy đủ trong Android Studio và tương thích với hệ thống xây dựng Android
Hiệu năng: Một ứng dụng Kotlin chạy nhanh như một ứng dụng Java tương đương, nhờ cấu trúc mã byte rất giống nhau Với sự hỗ trợ của Kotlin cho các hàm nội tuyến, mã sử dụng lambdas thường chạy nhanh hơn cả mã được viết bằng Java
Khả năng tương tác: Kotlin có thể tương tác 100% với Java, cho phép sử dụng tất cả các thư viện Android hiện có trong một ứng dụng Kotlin Điều này bao gồm xử lý chú thích, do đó, cơ sở dữ liệu và Dagger cũng hoạt động
Thời gian biên dịch: Kotlin hỗ trợ biên dịch gia tăng hiệu quả, do đó, trong khi có một số chi phí bổ sung cho các bản dựng sạch, các bản dựng gia tăng thường nhanh hoặc nhanh hơn so với Java
Đối với một nhà phát triển Java, bắt đầu với Kotlin là rất dễ dàng Trình chuyển đổi Java sang Kotlin tự động có trong plugin Kotlin giúp thực hiện các bước đầu tiên Kotlin Koans cung cấp một hướng dẫn thông qua các tính năng chính của ngôn ngữ với một loạt các bài tập tương tác [5]
FIREBASE CLOUD MESSAGING
Firebase cloud messaging (FCM) là một dịch vụ gửi thông báo, tin nhắn đa nền tảng được cung cấp bởi Google, cho phép bạn gửi tin nhắn, thông báo một cách đáng tin cậy và hoàn toàn miễn phí tới các thiết bị đã được đăng ký với FCM
Nguyên tắc hoạt động: Các thiết bị client sẽ đăng ký device_token lên cho FCM Các thông báo, tin nhắn được soạn và gửi từ một website, từ Notifications composer của firebase cung cấp, FCM sẽ nhận những thông báo này và xử lý gửi về các thiết bị đã đăng ký với FCM từ trước Khi các thiết bị có kết nối mạng thì thông báo sẽ được gửi về ứng dụng thành công
Các loại FCM Messages: có 2 loại thông báo, tin nhắn mà bạn có thể gửi tới ứng dụng, đó là: o Notification messages: Đôi khi được gọi là "thông báo (tin nhắn) hiển thị", chúng được xử lý tự động bởi FCM SDK Notification messages chứa các key dữ liệu đã được định nghĩa trước Sử dụng Notification messages khi bạn chỉ muốn hiển thị các thông báo đến các ứng dụng clients o Data messages: Là thông báo (tin nhắn) sẽ được xử lý bởi các ứng dụng client Data messages chứa các cặp key - value do người dùng định nghĩa Sử dụng Data messages khi bạn muốn xử lý các thông báo trên chính ứng dụng của bạn
Nhận messages trên ứng dụng (Android)
Thông báo Firebase hoạt động khác nhau tùy thuộc vào trạng thái của ứng dụng (Background / Foreground) Trong android, để nhận Firebase message thì cần phải tạo một service và extend FirebaseMessagingService Để xử lý các thông báo nhận được bạn cần override phương thức onMessageReceived() Phương thức này xử lý được hầu hết các loại tin nhắn, ngoại trừ các trường hợp sau: o Nhận Notification messages khi ứng dụng đang ở trạng thái background Trong trường hợp này, thông báo sẽ được gửi đến khay hệ thống của thiết bị, khi người dùng chạm vào thông báo sẽ mở trình khởi chạy ứng dụng mặc định o Nhận thông báo có chưa cả Notification messages và Data messages khi ứng dụng đang ở trạng thái background Trong trường hợp này, phần Notification sẽ được gửi đến khay hệ thống, còn phần Data sẽ được sử dụng cho trình khởi chạy các Activity khi chạm vào thông báo
Trạng thái xử lí nhận FCM messages
Trạng thái ứng dụng Notification messages Data messages
Foreground Khay hệ thống onMessageReceived()
Bảng I.1 Trạng thái nhận messages của Firebase cloud messaging
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
BÀI TOÁN THỰC TẾ
Ngày nay, khoa học công nghệ ngày càng phát triển kéo theo những yêu cầu khắt khe hơn trong công việc, không có cá nhân nào hoàn hảo về mọi mặt và cũng không ai có thể làm tất cả mọi việc Kỹ năng làm việc nhóm sẽ giúp các thành viên hỗ trợ nhau, giúp đỡ nhau, đồng thời phát huy được thế mạnh của mỗi cá nhân Giúp cho công việc đạt hiệu suất cao hơn rất nhiều
Nguyên nhân và thực trạng ở Việt Nam o Nhiều bạn sinh viên khi bị giáo viên bắt phải làm báo cáo chung với các bạn khác thường có suy nghĩ: Công việc chung của nhóm, ai nhận người đó tự chịu trách nhiệm hết Tình trạng này xảy ra khá nhiều ở các bạn sinh viên, vì ai cũng nghĩ đây là công việc của tập thể, mình không làm sẽ có người khác làm Và kết quả là “cha chung không ai khóc” o Nhiều bạn suy nghĩ học nhóm là hình thức “vừa học, vừa chơi” nên đang họp nhóm nhưng cũng ráng quay qua tám chuyện một chút Làm ảnh hưởng đến công việc của cả nhóm o Người Việt Nam nói chung vẫn còn nể nang trong các mối quan hệ, khi làm việc nhóm rất “sợ phát biểu ý kiến, sợ đưa ra quan điểm cá nhân” Sợ khi tranh cãi sẽ ảnh hưởng đến mỗi quan hệ, nhất là với thầy cô hoặc sếp, sợ tranh cãi hoặc “có ý kiến” sẽ bị “trù dập” o Ba phải Sinh viên Việt Nam còn tồn tại tư tưởng “lười suy nghĩ” Khi được yêu cầu đưa ra ý kiến thường “đùn đẩy” Không có chính kiến cá nhân, và “đồng ý bừa” với ý kiến của người khác Nhưng khi kết quả thất bại lại tìm cách đổ lỗi cho người khác o Không tôn trọng các thành viên trong nhóm Sinh viên Việt Nam vẫn có tật “giờ dây thun” Họp nhóm mà bắt cả nhóm chờ cả tiếng đồng hồ
2.1.2 Phân tích áp dụng công nghệ để cải thiện thực tế
Từ thực trạng cho thấy rằng cách tổ chức hoạt động nhóm theo kiểu truyền thống sẽ dẫn đến nhiều hạn chế: o Mọi người giao việc cho nhau bằng cách trao đổi nói chuyện trực tiếp, nhiều lúc không rõ ràng, không ghi chép lại, dẫn đến nhầm lẫn công việc lẫn nhau o Công việc được phân chia không rõ ràng dẫn đến sự ỷ lại của một số thành viên o Việc ngại phát biểu ý kiến dẫn đến công việc bị chậm hoặc bế tắc, không hiệu quả cho công việc
Giải pháp được áp dụng trong đề tài o Việc xây dựng ứng dụng chạy trên nền tảng hệ điều hành Android – một hệ điều hành phổ biến trong các dòng máy smartphone hiện đại, tạo ra một công cụ để hỗ trợ việc làm việc nhóm cho sinh viên, học sinh Vì sinh viên có thói quen sử dụng smartphone rất nhiều, nên việc làm quen với ứng dụng là rất dễ dàng o Ứng dụng cũng được thiết kế để ghi lại thông tin công việc cụ thể, dạng bảng, chia theo trạng thái rõ ràng, phân chia công việc cho từng người nên mọi người có thể dựa vào đó mà làm việc một cách rõ ràng hơn, tránh nhầm lẫn o Việc ngại phát biểu ý kiến trực tiếp của sinh viên, học sinh ảnh hưởng bởi một phần là do ngại giao tiếp với đám đông Khi sử dụng ứng dụng, một phần nào đó vấn đề này được giải quyết khi sinh viên có thể dễ dàng đưa ra ý kiến của mình thông qua các tính năng trò chuyện nhóm, nhận xét vào công việc của ứng dụng (việc sử dụng smartphone để nêu ý kiến sẽ dễ dàng hơn rất nhiều so với việc đứng trước đám đông để trình bày ý kiến của mình) o Vì chiếc smartphone thường sẽ luôn luôn ở trong túi hoặc trong cặp của mỗi người nên việc theo dõi công việc để thực hiện trở nên dễ dàng hơn, thời gian bỏ ra cũng được tiết kiệm đáng kể o Ứng dụng có chức năng nhận các thông báo về cập nhật của các công việc đang làm nên người dùng ứng dụng nhanh chóng cập nhật được những thay đổi mới nhất, tránh lãng phí thời gian để làm những việc trùng lặp.
XÁC ĐỊNH YÊU CẦU NGƯỜI SỬ DỤNG
2.2.1 Xác định người sử dụng Đề tài xây dựng ứng dụng hướng đến đối tượng sử dụng là các bạn học sinh, sinh viên với mục đích hỗ trợ làm việc và học tập theo nhóm Người sử dụng của hệ thống được chia làm 3 nhóm như sau:
Khách: Nhóm người sử dụng chưa có tài khoản trong hệ thống
Người dụng bình thường: Người sử dụng đã có tài khoản trong hệ thống, sử dụng ứng dụng để tham gia hoạt động các nhóm, nhóm này không bao gồm các người dùng sử dụng với mục đích chính là làm chủ một nhóm
Trưởng nhóm: Nhóm người sử dụng đã có tài khoản trong hệ thống, sử dụng ứng dụng với mục đích chính là quản lí và điều hành nhóm
2.2.2 Xác định yêu cầu của từng nhóm người sử dụng
Nhóm người dùng là khách: Người dùng có thể dùng thông tin của mình để đăng kí một tài khoản mới với hệ thống
Nhóm người dùng bình thường o Người dùng có thể đăng nhập vào ứng dụng với tài khoản đã đăng kí trước đó o Người dùng có thể xem và cập nhật thông tin cá nhân o Người dùng có thể đăng xuất ra khỏi ứng dụng khi không sử dụng nữa o Người dùng có thể tìm kiếm và yêu cầu tham gia vào một nhóm o Người dùng có thể xem thông tin các nhóm đã tham và các nội dung liên quan khác của nhóm như các ghi chú, lịch hẹn, thông tin các bảng công việc, danh sách thành viên của nhóm o Người dùng có thể thao tác với các chức năng cho phép của nhóm tham gia bao gồm: Xem danh sách công việc trong bảng của nhóm, tạo hoặc cập nhật thông tin, trạng thái công việc trong bảng o Người dùng có thể nhận thông báo từ các cập nhật công việc có liên quan, ghi chú hoặc lịch hẹn của các nhóm đã tham gia o Người dùng có thể trò chuyện với các thành viên trong nhóm thông qua kênh trò chuyện riêng của nhóm
Nhóm người dùng là trưởng nhóm o Người dùng có thể tạo mới một nhóm o Người dùng có thể tìm kiếm và mời thêm thành viên vào nhóm của mình o Người dùng có thể chỉnh sửa thông tin nhóm của mình o Người dùng có thể tạo mới, chỉnh sửa các bảng công việc, ghi chú hoặc lịch hẹn cho nhóm của mình.
PHÂN TÍCH CHỨC NĂNG
Ứng dụng Kuro Team cung cấp một công cụ hỗ trợ cho sự hoạt động của một nhóm sinh viên, học sinh trở trên thuận tiện, nhanh chóng hơn thông qua các thao tác đơn giản trên chiếc điện thoại di động thông minh mà đa số học sinh hay sinh viên hiện tại đều sở hữu một cái
Các tác nhân của hệ thống: Khách, Người dùng bình thường và Trưởng nhóm
Dưới đây là mô tả cho các chức năng theo từng nhóm người dùng
2.3.1 Các chức năng của Khách
Chức năng đăng kí tài khoản: cho phép khách có tạo mới một tài khoản với hệ thống để đăng nhập và sử dụng các chức năng khác của ứng dụng
2.3.2 Các chức năng của người dùng bình thường
Chức năng đăng nhập, đăng xuất
Chức năng này cho phép người dùng có thể đăng nhập vào ứng dụng và sử dụng các chức năng của ứng dụng, và đăng xuất khi không còn sử dụng ứng dụng nữa
Chức năng Quản lí các yêu cầu cá nhân
Chức năng này cho phép người dùng thực hiện các thao tác liên quan đến yêu cầu của tài khoản, bao gồm: o Gửi yêu cầu tham gia nhóm o Hủy bỏ yêu cầu tham gia nhóm o Đồng ý lời mời tham gia nhóm o Từ chối lời mời tham gia nhóm
Chức năng Quản lí thông tin cá nhân: cho phép người dùng xem hoặc chỉnh sửa thông tin cá nhân của bản thân bao gồm: tên, ngày sinh, ảnh đại diện, số điện thoại, địa chỉ, giới tính
Chức năng Quản lí các công việc trong bảng công việc
Chức năng này cho phép người dùng có thể thực hiện các thao tác: o Tạo công việc mới o Chỉnh sửa thông tin công việc: Tiêu đề, mô tả, thời gian bắt đầu, kết thúc, người thực hiện, thêm, bớt công việc phụ o Thêm hoặc xóa nhận xét vào công việc o Đính kèm hoặc gỡ bỏ hình ảnh vào công việc o Chuyển trạng thái công việc
Chức năng Trò chuyện với nhóm: Chức năng này cho phép người dùng có thể trò chuyện với mọi người trong nhóm bằng thao tác gửi tin nhắn đến nhóm đã tham gia
2.3.3 Các chức năng của trưởng nhóm
Chức năng quản lí thành viên
Chức năng này cho phép trưởng nhóm thực hiện các thao tác: o Mời thành viên mới vào nhóm o Xóa bỏ lời mời o Đồng ý yêu cầu xin tham gia nhóm o Từ chối yêu cầu xin tham gia nhóm
Chức năng quản lí bảng công việc: Chức năng này cho phép trưởng nhóm có thể tạo mới một bảng công việc hoặc chỉnh sửa thông tin của một bảng công việc đã có
Chức năng quản lí ghi chú
Chức năng này cho phép trưởng nhóm có thể thực hiện các thao tác: o Tạo mới ghi chú o Cập nhật thông tin ghi chú o Xóa một ghi chú đã tạo
Chức năng quản lí cuộc hẹn
Chức năng này cho phép trưởng nhóm có thể thực hiện các thao tác: o Tạo mới một cuộc hẹn o Chỉnh sửa thông tin cuộc hẹn o Xóa một cuộc hẹn đã tạo
Chức năng quản lí thông tin nhóm: cho phép trưởng nhóm có thể xem và cập nhật thông tin của nhóm bao gồm: hình ảnh đại diện của nhóm, tên và mô tả của nhóm.
BIỂU ĐỒ USE-CASE
2.4.1 Các tác nhân trong hệ thống
Hệ thống có 3 tác nhân bao gồm:
Khách: Là người dùng mới cài đặt ứng dụng và chưa có tài khoản trên hệ thống
Người dùng bình thường: Là người dùng ứng dụng đã có tài khoản trên hệ thống, mà không sử dụng các chức năng của trưởng nhóm (Chỉ tham gia nhóm và không phải là trưởng nhóm)
Trưởng nhóm: Là người dùng ứng dụng đã có tài khoản trên hệ thống, sử dụng ứng dụng với mục đích để quản lí nhóm của mình
2.4.2 Biểu đồ Use-Case của tác nhân Khách
Hình II.1 Biểu đồ Use-Case cho Đăng kí tài khoản
2.4.3 Biểu đồ Use-Case của Người dùng bình thường
Hình II.2 Biểu đồ Use-Case Đăng nhập
Hình II.3 Biểu đồ Use-Case Chức năng đăng xuất
Hình II.4 Biểu đồ Use-Case Quản lí yêu cầu cá nhân
Hình II.5 Biểu đồ Use-Case Quản lí thông tin cá nhân
Hình II.6 Biểu đồ ca Use-Case Quản lí công việc trong bảng công việc
2.4.4 Biểu đồ Use-Case của Trưởng nhóm
Hình II.7: Biểu đồ Use-Case Quản lí thành viên của trưởng nhóm
Hình II.8 Biểu đồ Use-Case Quản lí bảng công việc của trưởng nhóm
Hình II.9 Biểu đồ Use-Case Quản lí ghi chú của trưởng nhóm
Hình II.10 Biểu đồ Use-Case Quản lí cuộc hẹn của trưởng nhóm
Hình II.11 Biểu đồ Use-Case Quản lí thông tin nhóm của trưởng nhóm
2.4.5 Biểu đồ Use-Case tổng quát của hệ thống
Hình II.12 Biểu đồ Use-Case tổng quát của hệ thống
BIỂU ĐỒ HOẠT ĐỘNG
Dưới đây là các biểu đồ hoạt động mô tả cho một số chức năng của hệ thống:
Chức năng gửi yêu cầu tham gia nhóm: Người dùng khi bấm gửi yêu cầu tham gia một nhóm nào đó, hệ thống sẽ xử lí và gửi thông báo đến cho trưởng nhóm Sau khi trưởng nhóm đồng ý hoặc từ chối yêu cầu đến, hệ thống sẽ xử lí và gửi thông báo lại về cho người đã gửi yêu cầu
Hình II.13 Biểu đồ hoạt động cảu chức năng yêu cầu tham gia nhóm
Chức năng mời người tham gia nhóm: Khi trưởng nhóm bấm gửi lời mời tham gia nhóm đến một người dùng bất kì chưa thuộc nhóm đang chọn, hệ thống sẽ xử lí và gửi thông báo đến cho người được mời, sau khi người được mời chọn đồng ý hoặc từ chối, hệ thống sẽ gửi thông báo lại về cho người đã gửi yêu cầu
Hình II.14 Biểu đồ hoạt động của chức năng gửi lời mời tham gia nhóm
Chức năng trò chuyện nhóm: Người dùng khi bấm gửi tin nhắn với nội dung bất kì vào kênh trò chuyện của nhóm, thì hệ thống sẽ xử lí lưu trữ tin nhắn và gửi tin nhắn đến các người dùng khác trong nhóm, quá trình này được thực hiện gần như ngay lập tức (real-time)
Hình II.15 Biểu đồ hoạt động của chức năng gửi tin nhắn đến nhóm
Chức năng tạo công việc mới: Khi người gửi yêu cầu tạo công việc với cho một bảng công việc, hệ thống sẽ xử lí lưu trữ thông tin công việc và gửi thông báo lại cho những người dùng có liên quan đến công việc vừa được tạo
Hình II.16 Biểu đồ hoạt động của chức năng tạo công việc mới
Chức năng cập nhật thông tin công việc: Người dùng bấm cập nhật thông tin công việc thì hệ thống sẽ xử lí và cập nhật lại dữ liệu của công việc sau đó sẽ gửi lại thông báo cho những người dùng có liên quan đến công việc
Hình II.17 Biểu đồ hoạt động của chức năng cập nhật thông tin công việc
BIỂU ĐỒ LỚP
Biểu đồ dưới đây mô tả quan hệ giữa các classes được sử dụng để xây dựng hệ thống
Hình II.18.Biểu đồ lớp của hệ thống
KIẾN TRÚC HỆ THỐNG
Kiến trúc hệ thống gồm 3 thành phần chính: o Hệ quản trị cơ sở dữ liệu PostgreSQL để lưu trữ toàn bộ dữ liệu của hệ thống o Ruby on Rails server có nhiệm vụ tạo ra các Restful API để ứng dụng Android gọi đến và lấy dữ liệu Server này còn tạo ra một WebSocket sử dụng ActionCable để phục vụ cho tính năng trò chuyện của ứng dụng Server sử dụng Firebase cloud messaging (FCM) để gửi thông báo về cho ứng dụng o Ứng dụng chạy trên nền tảng hệ điều hành Android có nhiệm vụ tương tác với server để lấy là hiển thị dữ liệu đến người dùng Ứng dụng còn có chức năng nhận và hiển thị thông báo từ FCM khi có thông báo đến
Kiến trúc hệ thống được mô tả tổng quát như hình bên dưới
Hình II.19 Sơ đồ kiến trúc của hệ thống
XÂY DỰNG, THỬ NGHIỆM VÀ ĐÁNH GIÁ
MÔI TRƯỜNG TRIỂN KHAI
Ngôn ngữ phát triển back-end: Ruby
Ngôn ngữ phát triển phía ứng dụng Android: Kotlin
Hệ quản trị cơ sở dữ liệu: PostgreSQL
Hình III.1 Cơ sở dữ liệu PostgreSQL
Quản lý mã nguồn: Github cho source code Android, Bitbucket cho source code back-end Ruby on Rails
Công cụ phát triển: Android Studio, Visual Studio, Valentina Studio
Cài đặt Ruby và Ruby on Rails o Cài đặt các gói cần thiết để hỗ trợ Ruby on Rails sudo apt install curl curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi- dev nodejs yarn o Cài đặt Ruby sử dụng rbenv cd git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL git clone https://github.com/rbenv/ruby-build.git
~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >>
~/.bashrc exec $SHELL rbenv install 2.6.5 rbenv global 2.6.5 ruby -v o Cài đặt Bundler gem install bundler
Cài đặt Ruby on Rails gem install rails –v 6.0.0
Cài đặt PostgreSQL sudo apt install postgresql-11 libpq-dev
Ngoài ra để hỗ trợ việc lập trình chúng ta cần cài thêm các IDE hoặc Editor để hỗ trợ như Android Studio, Visual Studio Code, Valentina Studio.
PHÁT TRIỂN ỨNG DỤNG
3.2.1 Thiết kế cơ sở dữ liệu
Mô hình thiết kế cơ sở dữ liệu: Cơ sở dữ liệu của hệ thống được thiết kế theo mô hình cơ sở dữ liệu quan hệ bao gồm các bảng sau
Tên bảng Mô tả users Bảng lưu dữ liệu người dùng của hệ thống teams Bảng lưu dữ liệu của các nhóm user_teams Bảng trung gian giữa bảng users và bảng teams, lưu dữ liệu quan hệ giữa hai bảng này. chat_messages Bảng lưu dữ liệu các tin nhắn trò chuyện của người dùng gửi đến nhóm boards Bảng lưu dữ liệu các bảng công việc của nhóm tasks Bảng lưu dữ liệu của các công việc sub_tasks Bảng lưu dữ liệu của các công việc phụ notes Bảng lưu dữ liệu các ghi chú của nhóm appointments Bảng lưu dữ liệu các cuộc hẹn của nhóm comments Bảng lưu dữ liệu các nhận xét của người dùng về công việc attachments Bảng lưu dữ liệu của các file đính kèm vào công việc notifications Bảng lưu dữ liệu về thông báo của nhóm đến người dùng
Bảng III.1: Bảng mô tả các bảng dữ liệu trong cơ sở dữ liệu của hệ thống
Dưới đây là sơ đồ cơ sở dữ liệu của hệ thống:
Hình III.2 Sơ đồ cơ sở dữ liệu của hệ thống
Chi tiết các bảng dữ liệu users
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi name varchar(255) Tên của người dùng email varchar(255) Email của người dùng birthday timestamp Ngày sinh của người dùng image_url varchar(255) Đường dẫn đến ảnh đại diện của người dùng address text Địa chỉ của người dùng phone varchar(15) Số điện thoại của người dùng gender boolean true: Nam false: Nữ
Giới tính của người dùng password_diges t varchar(255) Mật khẩu đăng nhập đã được mã hóa của người dùng device_tokens text Dữ liệu dạng mảng
Danh sách registration_token của các thiết bị mà người dùng đang đăng nhập created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.2 Chi tiết bảng users teams
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi name varchar(255) Tên của nhóm description varchar(255) Mô tả về nhóm is_private boolean true: Nhóm bí mật, chỉ thành viên trong nhó m mới tìm thấy được n hóm false: Nhóm công khai , tất cả người dùng đều có thể tìm thấy nhóm Mặc định: false
Khả năng truy cập của nhóm image_url varchar(255) Đường dẫn đến ảnh đại diện cho nhó m created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.3 Chi tiết bảng teams user_teams
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi team_id integer Khóa ngoại, liên kết v ới bảng teams user_id integer Khóa ngoại, liên kết v ới bảng users is_activated boolean Mặc định: false Trạng thái kích hoạt is_owner boolean Mặc định: false Cho biết người dùng có phải là trưởng nhóm hay không is_invited boolean true: Người dùng được mời vào nhóm false: Người dùng tự x in vào nhóm Mặc định: false
Cho biết bản ghi có phải được tạo khi trưởng nhóm mời người vào nhóm không created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.4 Chi tiết bảng user_teams notes
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi title varchar(255) Tiêu đề của ghi chú content text Nội dung ghi chú team_id integer Khóa ngoại, liên kết v ới bảng teams created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.5 Chi tiết bảng notes appointments
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi description varchar(255) Mô tả cuộc hẹn note text Ghi chú về cuộc hẹn place text Địa điểm gặp mặt của cuộc hẹn time timestamp Thời gian của cuộc hẹn team_id integer Khóa ngoại, liên kết v ới bảng teams created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.6 Chi tiết bảng appointments boards
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi name varchar(255) Tên của bảng công việc description text Mô tả về bảng công việc team_id integer Khóa ngoại, liên kết v ới bảng teams created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.7 Chi tiết bảng boards tasks
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi title varchar(255) Tiêu đề của công việc detail text Chi tiết công việc start_at timestamp Thời gian bắt đầu công việc end_at timestamp Thời gian kết thúc công việc status task_status_en um task_status_enum { Todo
Doing done } Mặc định: todo
Trạng thái của công việc following_ids integer Dữ liệu dạng mảng
Chứa danh sách định danh của các ng ười dùng đang theo dõi công việc (mục đích để gửi thông báo) board_id integer Khóa ngoại, liên kết v ới bảng boards creator_id integer Khóa ngoại, liên kết v ới bảng users
Liên kết với bản ghi chứa dữ liệu ngư ời dùng đang được chỉ định làm công việc này assignee_id integer Khóa ngoại, liên kết v ới bảng users
Liên kết với bản ghi chứa dữ liệu ngư ời dùng tạo ra công việc created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.8 Chi tiết bảng tasks attachments
Tên trường Kiểu dữ liệu Ghi chú Mô tả id integer Khóa chính, duy nhất Định danh của bản ghi source varchar(255) Đường dẫn đến tệp đính kèm source_type attachment_ty pe_enum attachment_type_enum { image video document other } Mặc định: image Định dạng dữ liệu của tệp đính k èm description text Mô tả về tệp đính kèm task_id integer Khóa ngoại, liên kết với bản g tasks created_at timestamp Thời gian tạo của bản ghi updated_at timestamp Thời gian cập nhật gần nhất của bản ghi
Bảng III.9 Chi tiết bảng attachments sub_tasks
THỬ NGHIỆM
Ứng dụng được đóng gói thành tệp APK Người dùng có thể tải trực tiếp tệp định dạng apk từ đường dẫn bên dưới và cài đặt vào điện thoại Đường dẫn: https://www.dropbox.com/s/lhm1ogtszwiyxrk/12172019.apk?dl=0
Yêu cầu: o Hệ điều hành Android 5.0 trở lên o Người dùng phải cài đặt cho phép điện thoại cài đặt ứng dụng từ tệp không rõ nguồn gốc
Dưới đây là một số hình ảnh chạy ứng dụng Kuro Team trên thực tế
Giao diện đăng nhập, cho phép người dùng nhập thông tin tài khoản và đăng nhập vào hệ thống
Hình III.3 Màn hình đăng nhập
Giao diện đăng kí tài khoản, cho phép người dùng nhập thông tin và tạo tài khoản để sử dụng đăng nhập vào hệ thống
Hình III.4 Màn hình đăng kí tài khoản
Giao diện tìm kiếm nhóm cho phép người dùng tìm kiếm nhóm theo tên, và lựa chọn xin gia nhập nhóm
Hình III.5 Màn hình tìm kiếm nhóm và xin gia nhập
Giao diện thông tin cá nhân cho phép người dùng có thể xem thông tin cá nhân của mình mà sử dụng chức năng cập nhật lại thông tin nếu cần
Hình III.6 Màn hình thông tin cá nhân người dùng
Giao diện tạo nhóm cho phép người dùng có thể tạo nhóm mới cho riêng mình với các thông tin như tên nhóm, khả năng truy cập của nhóm và một vài mô tả cho nhóm
Hình III.7 Màn hình tạo nhóm mới
Giao diện xem thông tin nhóm, trưởng nhóm có thể thực hiện các thao tác như chỉnh sửa thông tin, tạo ghi chú, cuộc hẹn, bảng công việc hoặc mời thành viên vào nhóm
Hình III.8 Màn hình xem thông tin nhóm
Hình III.9 Màn hình xem thông tin nhóm
Hình III.10 Màn hình cập nhật thông tin nhóm
Giao diện tìm kiếm người dùng cho phép trưởng nhóm tìm kiếm người dùng theo tên và mời người đó tham gia vào nhóm của mình
Hình III.11 Màn hình tìm kiếm và mời người vào nhóm
Giao diện tạo bảng công việc cho phép trưởng nhóm có thể tạo một bảng công việc mới bao gồm các thông tin như tên bảng, mô tả cho bảng
Hình III.12 Màn hình tạo bảng công việc mới
Giao diện tạo ghi chú mới cho phép trưởng nhóm tạo một ghi chú và hiển thị thông tin ghi chú đó lên trang thông tin nhóm sau khi tạo thành công
Hình III.13 Màn hình tạo ghi chú mới
Giao diện tạo cuộc hẹn cho phép trưởng nhóm tạo một cuộc hẹn mới và hiển thị thông tin cuộc hẹn lên trang thông tin nhóm sau khi tạo thành công
Hình III.14 Màn hình tạo cuộc hẹn mới
Giao diện xem thông tin các công việc của một bảng công việc
Hình III.15 Màn hình danh sách công việc
Chức năng cập nhật trạng thái công việc
Hình III.16 Màn hình cập nhật trạng thái công việc
Giao diện tạo mới công việc cho một bảng
Hình III.17 Màn hình tạo công việc mới
Giao diện xem thông tin chi tiết công việc bao gồm thời gian, người thực hiện, mô tả, các nhận xét đi kèm và các hình ảnh đính kèm
Hình III.18 Màn hình chi tiết công việc
Giao diện danh sách cách kênh tin nhắn từ các nhóm đã tham gia, người dùng có thể chọn một kênh tin nhắn để trò chuyện với mọi người trong nhóm đó
Hình III.19 Màn hình danh sách các nhóm trò chuyện
Giao diện trò chuyện, cho phép người dùng nhập và gửi tin nhắn đến nhóm hiện tại đang chọn
Hình III.20 Màn hình trò chuyện nhóm
Giao diện xem tất cả các thông báo từ các nhóm gửi đến
Hình III.21 Màn hình danh sách thông báo