CHƯƠNG 1: TỔNG QUAN 1.1 Lý do chọn đề tài 1.1 Tính thời sự của đề tài Trường Cao đẳng Công nghệ Thủ Đức tiếp cận và phát triển hướng dạy và học theo dự án thực tế, bám sát thực tiễn. Thể hiện qua các hoạt động như đưa Giảng viên, Sinh viên thực tập tại doanh nghiệp, mời chuyên gia về trường chia sẻ công nghệ trong thực tế, xây dựng chương trình đào tạo thể hiện các công nghệ mà hiện nay đang sử dụng tại doanh nghiệp, … Với mong muốn sinh viên ra trường có cơ hội việc làm, làm đúng ngành nghề đã được đào tạo. Ngoài ra Nhà trường còn định hướng phát triển các chương trình hợp tác quốc tế, chia sẻ kỹ thuật, đào tạo gắn kết với đối tác nước ngoài. Điển hình như chương trình công nghệ thông tin gắn kết với đối tác Nhật Bản, là Tập đoàn Freesia và Trường Cao đẳng Công nghệ Công nghiệp Tokyo để đạt được chương trình đào tạo với sự gắn kết của ba bên.
Chương trình đào tạo ngành Công nghệ thông tin theo mô hình gắn kết với doanh nghiệp và trường cao đẳng Nhật Bản (gọi tắt là Chương trình IT-TFT) là chương trình được xây dựng trên cơ sở tiếp cận mô hình KOSEN của Nhật Bản, kết hợp chương trình đào tạo của Trường Cao đẳng Công nghệ Thủ Đức (TDC) và Trường Cao đẳng Công nghệ Công nghiệp Tokyo - Nhật Bản (Tokyo Metropolitan College of Industrial Technology - TMCIT), với sự hợp tác và hỗ trợ từ Tập đoàn Freesia - Nhật Bản. Qua đó thấy được tính thực tiễn trong chương trình đào tạo của Nhà trường, phát triển ứng dụng trên nền tảng web, thiết bị di động là nghề nghiệp hấp dẫn, đây cũng là các hướng đào tạo của Khoa CNTT, đang được đa số các công ty quan tâm tuyển dụng. Các công nghệ nổi bật như Node.js, Java, Python, Kotlin, PHP, … đang được áp dụng vào nhiều dự án. Đây là cơ hội đối với sinh viên khi được tiếp cận, được đào tạo sớm trong nhà trường, do đó sẽ có cơ hội được ứng tuyển vào các ngành nghề trên sau khi ra trường.
Xây dựng hệ sinh thái phần mềm trên nền tảng web Khoa CNTT, cung cấp nhiều dịch vụ để GV và SV có môi trường giảng dạy và học tập bám sát thực tiễn như quản lý người 1 dùng áp dụng mô hình ACL (được phát triển bởi Sentry's PHP SDK, Sentinel, Cartalyst), OAuth 2.0, web Khoa CNTT đã được thiết kế hướng dịch vụ, chia nhỏ thành các module nhỏ xử lý nghiệp vụ, cung cấp API tương tác với hệ thống, … Nhờ đó GV & SV có thể phát triển thêm các tiện ích để cài đặt vào hệ thống. GV, SV tham gia vào hệ sinh thái phần mềm Khoa CNTT có điều kiện làm việc nhóm, quản lý source code với Git với hàng trăm thành viên tham gia, hàng trăm branch. Xử lý nhuần nhuyễn các xử lý trên Git như merge, conflict, rebase, … Đây là những kỹ năng cần thiết khi tham gia dự án trong doanh nghiệp. Doanh nghiệp ngày càng yêu cầu cao về mặt kỹ năng giải quyết vấn đề, lập trình viên có kỹ năng xử lý lỗi, khả năng tìm kiếm giải pháp, kỹ năng hợp tác làm việc nhóm.
Do đó, SV có điều kiện thực hành trong quá trình học tập có ưu thế lớn khi tìm việc làm sau khi ra trường. Kiến trúc web Khoa CNTT đã được thiết kế và hiện thực trong các NCKH năm học 2018- 2019, 2019-2020. Đã tạo ra được hệ thống các thư viện PHP (package PHP) công bố trên các dịch vụ Github, Packagist. Các xử lý thu thập dữ liệu tự động trên các trang StackOverflow, ITviec, VietnamWorks, các xử lý lỗi bảo mật dữ liệu, quản lý thực tập.
Trong đề tài này tác giả tiếp tục đóng góp thêm các tiện ích vào hệ sinh thái, nâng cấp lên phiên bản mới. Đặc biệt, tác giả có xây dựng mới ứng dụng mobile trên Android với Kotlin, nhờ đó GV & SV có thêm tư liệu để giảng dạy và học tập. Một trong những ràng buộc đối với một đề tài NCKH cần đáp ứng là giải quyết được một vấn đề nào đó trong Nhà trường, thể hiện tính thực tiễn của ứng dụng. Đề tài này, tác giả xây dựng một ứng dụng (web, mobile) hỗ trợ Khoa CNTT quản lý công việc một cách thuận tiện.2 Tính cấp thiết đáp ứng nhu cầu phát triển kinh tế - xã hội, nâng cao chất lượng đào tạo Đào tạo bám sát thực tiễn là yêu cầu cấp thiết mà lãnh đạo Nhà trường luôn quán triệt và đề ra đối với giảng viên.
Chính vì vậy trong chương trình học luôn luôn thể hiện nội dung thực tiễn mà sinh viên cần phải thực hiện. Với việc tạo ra web Khoa CNTT không chỉ là trang tin tức – thông báo mà còn là một trang dịch vụ, cung cấp các tiện ích để GV và SV 2 sử dụng phục vụ mục đích học tập. Điều này minh chứng cho việc thiết kế web theo hướng dễ mở rộng, tạo ra hệ sinh thái phần mềm trên nền tảng web Khoa CNTT. Xuất phát từ yêu cầu thực tiễn, ngoài công tác giảng dạy theo sự phân công của Khoa CNTT, GV còn phụ trách thêm các công tác khác như xây dựng chương trình đào tạo, thực hiện NCKH, chuẩn bị các sự kiện hợp tác doanh nghiệp như tham quan doanh nghiệp, … Hiện tại, Khoa CNTT dùng Google Sheet để quản lý các công việc của GV, giao việc qua email, điện thoại, họp khoa, họp tổ bộ môn, … Việc thống kê kết quả công việc thực hiện dùng để xét thi đua năm học.
Trong quá trình thực hiện nảy sinh một số vấn đề sau: các công việc thực hiện bởi nhiều GV được mô tả lặp lại nhiều lần cho từng GV, khi cần điều chỉnh 1 thông tin thống kê công việc cần thực hiện toàn bộ các Sheet, mô tả chi tiết công việc chưa được rõ ràng. Nhằm hoàn thiện hệ sinh thái ứng dụng cho Khoa CNTT, bên cạnh việc phát triển các tiện ích bên mảng web, cần phát triển thêm các phần mềm bên di động, sử dụng các dịch vụ đã cung cấp bên hệ sinh thái web. Do đó tác giả đề tài dựa trên yêu cầu thực tiễn từ Khoa CNTT cần một ứng dụng để quản lý công việc, đã phát triển thêm tiện ích quản lý công việc tích hợp vào web Khoa CNTT. Bên cạnh đó cũng phát triển thêm ứng dụng di động trên Android với các tính năng như nhận được tin nhắn khi có công việc mới, các công việc đã làm, xác nhận trạng thái công việc.
Đó là lý do tác giả chọn đề tài: “Xây dựng hệ thống quản lý công việc cho Khoa Công nghệ thông tin Trường Cao đẳng Công nghệ Thủ Đức” 3 1.2 Mục đích nghiên cứu Đề tài gồm 03 mục tiêu 1.1 Sử dụng Kotlin xây dựng ứng dụng trên Android Để viết ứng dụng Android có 2 ngôn ngữ chính: ngôn ngữ lập trình Java, ngôn ngữ lập trình Kotlin. Trong đó ngôn ngữ lập trình Java đang là ngôn ngữ lập trình ứng dụng Android được sử dụng phổ biến nhất hiện nay, có hệ thống thư viện đa dạng, có cộng đồng người sử dụng lớn mạnh. Hình 1 - Kết quả thống kê hỏi đáp liên quan đến Java (StackOverflow) Ngôn ngữ Kotlin được Jetbrains phát triển, xuất hiện lần đầu năm 2011 khi JetBrains công bố dự án của họ mạng tên Kotlin. Kotlin có chức năng chính là hỗ trợ khắc phục một số vấn đề gặp phải khi viết App Android bằng ngôn ngữ Java.
Đây là một ngôn ngữ mã nguồn mở, Android team đã thông báo Kotlin sẽ trở thành ngôn ngữ chính thức của Android. Kotlin biên dịch thành JVM bytecode hoặc JavaScript - giống như Java, bytecode cũng là format biên dịch cho Kotlin. Nhờ biên dịch thành bytecode nghĩa là một khi đã biên dịch, các đoạn code sẽ chạy thông qua một máy ảo thay vì một bộ xử lý. Bằng cách này, code có thể chạy trên bất kỳ nền tảng nào, khi nó được biên dịch và chạy thông 4 qua máy ảo.
Kotlin có thể sử dụng tất cả các nền tảng và thư viện Java hiện có - Bất kể là nền tảng cao cấp dựa trên xử lý annotation. Điều quan trọng là Kotlin dễ dàng tích hợp với Maven, Gradle hay các hệ thống build khác. Hình 2 - Kết quả thống kê hỏi đáp liên quan đến Kotlin (StackOverflow) Ngôn ngữ Kotlin được đánh giá là làm App Android khá đơn giản, Kotlin giúp giảm số dòng code, không còn quá dài. Điều này giúp người lập trình có thể tập trung vào vấn đề quan trọng, thay vì mất thời gian xử lý các câu lệnh.
Tìm hiểu về Kotlin, tạo ứng dụng mobile trên Android sử dụng các pattern: factory, repository, adapter; để tạo ra ứng dụng thông báo công việc đến GV.2 Phát triển package phân quyền và xác thực dùng chung cho các ứng dụng Trước đây Web Khoa CNTT chạy trên môi trường Laravel 7x, PHP 7. Trong đề tài này đã nâng cấp lên Laravel 8x, PHP 8. Việc nâng cấp này là cần thiết để GV và SV có môi trường giảng dạy và học tập bám sát thực tiễn. Khi tiến hành nâng cấp có thay đổi code để các tiện ích có thể chạy được trong môi trường mới.
Tiện ích phân quyền và xác thực (package-acl) là tiện ích cốt lõi của hệ thống, cung cấp các tính năng quản lý người dùng, phân quyền và xác thực người dùng. 5 Hình 3 - Thêm cột device_token vào bảng user_profile trong lược đồ ERD Một trong những lỗi phổ biến khi nâng cấp ứng dụng PHP 7.x là lỗi type hint Ví dụ một khai báo chạy được trên PHP 7.x nhưng sẽ lỗi trên PHP 8.x public function selectItems($params = [], $id) { //Write your code here } Ghi nhận lỗi Deprecated: Required parameter $id follows optional parameter $params in … PHP type hint đưa ra nhiều ràng buộc trong PHP 8, điều chỉnh lại cách xử lý trên để chạy được trên PHP 8.x: thêm kiểu dữ liệu của biến hoặc thiết lập đầy đủ giá trị mặc định cho biến. public function selectItems(array $params = [], int $id = 0) { //Write your code here } public function selectItems($params = [], $id = 0) { //Write your code here } 6 Trong đề tài này có phát triển ứng dụng mobile, do đó cần thiết để phát triển các API dùng cho xác thực người dùng khi sử dụng ứng dụng trên thiết bị di động. Hình 4 - Lược đồ ERD của Laravel Passport sử dụng OAuth 2.0 Tích hợp package Laravel Passport vào hệ thống, cung cấp các API về xác thực cho các ứng dụng sử dụng API Ví dụ về API xác thực người dùng Hình 5 - Dùng Postman gửi yêu cầu xác thực 7 Thông tin khi thực hiện API xác thực người dùng Hình 6 - Kết quả trả về sau khi thực hiện yêu cầu trên Postman 8 1.