Báo Cáo Thực Tập Lập Trình Ứng Dụng Di Động.pdf

21 8 0
Báo Cáo Thực Tập Lập Trình Ứng Dụng Di Động.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG DI ĐỘNG Công ty thực tập CÔNG TY TNHH KỸ THUẬT SỐ TYME Người phụ trách Nguyễn Thanh Trọng Hữu Thực tập si[.]

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG DI ĐỘNG Cơng ty thực tập : CƠNG TY TNHH KỸ THUẬT SỐ TYME Người phụ trách : Nguyễn Thanh Trọng Hữu Thực tập sinh : Nguyễn Đức Thành Phát TP Hồ Chí Minh, tháng 12 năm 2022 LỜI MỞ ĐẦU Ngày nay, ngành lập trình ứng dụng phận thiếu ngành công nghệ phần mềm Với tốc độ phát triển kỹ thuật cơng nghệ, tốc độ phát triển ngành lập trình ứng dụng di động tăng trưởng nhanh chóng Ngành di động sinh nhu cầu sử dụng thiết bị điện thoại người ngày tăng Và họ nguồn nhân lực quan trọng cho việc phát triển ngành di động sau Việt Nam ngoại lệ, ngành công nghiệp di dộng Việt Nam phát triển mạnh mẽ, công ty công nghệ lớn, đa quốc gia tập trung vào mảng phát triển ứng dụng di động như: Tiki, Shopee, Gojek, Vì lý này, em định chọn lập trình di động làm định hướng cho việc học tập Trong trình học tập trường, em có định hướng trở thành lập trình viên ứng dụng di động, em đăng ký học mơn nhập mơn lập trình di động, lập trình ứng dụng di động, ngơn ngữ lập trình java, phát triển ứng dụng di động thiết bị di động Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tham gia lập trình ứng dụng mơi trường chun nghiệp Vì vậy, em định đăng ký môn thực tập doanh nghiệp em may mắn đậu vào TYME - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực dự định Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát LỜI CẢM ƠN Trân trọng gửi lời cảm ơn CÔNG TY TRÁCH NHIỆM HỮU HẠN KỸ THUẬT SỐ TYME tạo điều kiện cho em có hội thực tập cơng ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình anh mentor anh chị trainer, em tiếp thu kiến thức quan trọng để làm ứng dụng di động Chân thành cảm ơn anh chị nhóm trainer dành nhiều thời gian, công sức để hướng dẫn chúng em hoàn thành đợt thực tập Đặc biệt cảm ơn anh Nguyễn Thanh Trọng Hữu - mentor đồng hành em thời gian vừa qua, hướng dẫn, giúp đỡ cho em tận tình khó khăn cơng việc, đến khó khăn việc làm quen với môi trường mới; cảm ơn anh chị team HR traning tụi em TYME phong cách làm việc Cảm ơn anh trainer: anh Trí, anh Hiếu, anh Long, anh Đạt, anh Sơn, chị Hưng có buổi training bổ sung kiến thức cho tụi em Cuối cùng, em cảm ơn hai team Dragon Phoenix giúp đỡ em tháng vừa qua Cũng xin cảm ơn thầy khoa Cơng nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo Nguyễn Đức Thành Phát TP HCM, tháng 12 năm 2022 Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát NHẬN XÉT CỦA KHOA Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát MỤC LỤC Chương Giới thiệu công ty thực tập Giới thiệu công ty TYME Sản phẩm công ty Chương Nội dung thực tập Tìm hiểu cơng ty kỹ công ty Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc 2.2 Xem source code mẫu tài liệu hướng dẫn tìm hiểu cơng nghệ để xây dựng ứng dụng di động 10 2.2.1 Định nghĩa Android 10 2.2.2 Ngôn ngữ Koltin 11 2.2.3 Dependency Injection với Dagger 11 2.2.4 Architecture Pattern and Clean Architecture 13 Thực project 15 Lịch làm việc 15 Chương Chi tiết project Send money via QR code 17 Giới thiệu tính Send money 17 Quy trình hoạt động Send money 17 Vấn đề đặt 17 Thực 18 Kế hoạch 19 TÀI LIỆU THAM KHẢO 20 Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát TỔNG KẾT 21 Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát Chương Giới thiệu công ty thực tập Giới thiệu công ty TYME TymeGroup tập đoàn ngân hàng kỹ thuật số phát triển nhanh giới, xây dựng ngân hàng công nghệ cao cảm ứng cao thị trường nổi, phát triển nhanh TymeGroup có trụ sở Singapore với Trung tâm Phát triển Công nghệ & Sản phẩm Việt Nam Tyme thiết kế, xây dựng thương mại hóa ngân hàng kỹ thuật số cho thị trường nổi, với chuyên môn đặc biệt việc phục vụ nhóm dân cư thiếu ngân hàng Tyme sở hữu tảng cơng nghệ tài sản trí tuệ toàn cầu, đồng thời hợp tác với đối tác ngân hàng fintech nước để mắt ngân hàng kỹ thuật số Tyme Việt Nam trung tâm Cơng nghệ Tập đồn TymeGroup, thành lập vào năm 2016 Sản phẩm công ty TymeGroup cung cấp dịch vụ ngân hàng hai quốc gia: Nam Phi Philippines Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát - TymeBank: có trụ sở Nam Phi, ngân hàng kỹ thuật số phát triển nhanh giới, với triệu khách hàng kể từ mắt vào tháng năm 2019 - GoTyme: có trụ sở Philippines, liên doanh Tập đoàn Gokongwei Tập đoàn Tyme mắt vào năm 2022 Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát Chương Nội dung thực tập Đợt thực tập với chủ đề “Lập trình ứng dụng di động” nhằm mục đích giúp sinh viên thực tập đào tạo tồn diện lập trình ứng dụng thiết bị di động, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, giao tiếp Tại cơng ty, sinh viên có hội học tập, khám phá làm việc môi trường chuyên nghiệp Tìm hiểu cơng ty kỹ công ty Thời gian: ngày Nội dung: Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu cơng ty, q trình thành lập phát triển giá trị cốt lõi, quy trình làm việc từ cao xuống thấp, cách thức tổ chức cơng ty Ngồi ra, thực tập sinh giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc, phong cách làm việc chuyên nghiệp, Kết quả: Hiểu thêm cơng ty Tyme, q trình thành lập phát triển Có thêm kỹ việc sử dụng email công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc Thời gian: ngày Nội dung: Tìm hiểu cơng cụ sử dụng q trình làm việc Trong thời gian này, mentor hướng dẫn thực tập sinh tìm hiểu cơng cụ giúp ích cho cơng việc sau Một số phần mềm số như: - Bitbucket: cơng cụ quản lý source code + Bitbucket tích hợp tốt với Jira (nằm chung hệ sinh thái Atlassion), dùng để track bug, track issue, service desk quản lý dự án Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 10 + Bitbucket cấp quyền để hạn chế vào riêng branch thay cấp quyền cho tất branch bên repo Điều giúp ngăn tình khơng đáng có push master, coi điểm khác biệt Bitbucket + Dễ dàng so sánh branch commit history, tạo pull request review code - Source tree, Git fork: cơng cụ GUI giúp trực quan hóa thao tác với GIT - Jira: công cụ theo dõi quản lý lỗi, vấn đề dự án để làm quy trình phát triển trở nên dễ dàng - Confluence: khơng gian làm việc nhóm, nơi kết hợp kiến thức cộng tác nhóm Các Pages cung cấp cho nhóm bạn nơi để tạo, nắm bắt cộng tác dự án ý tưởng Các Spaces giúp cấu trúc, tổ chức chia sẻ cơng việc, thành viên nhóm có khả hiểu biết quy định tiếp cận thông tin cách thuận lợi nhanh chóng - Android Studio: IDE hỗ trợ phát triển Android - Mockoon: tạo mock api, giả lập response từ server trả Thực hiện: Thực hành sử dụng phần mềm nêu Kết quả: Làm quen với việc sử dụng công cụ 2.2 Xem source code mẫu tài liệu hướng dẫn tìm hiểu công nghệ để xây dựng ứng dụng di động Các kiến thức liên quan: ngôn ngữ Kotlin Android, Dependency Injection với Dagger 2, Architecture Pattern and Clean Architecture Thời gian: tuần Nội dung: Tìm hiểu cơng cụ sử dụng trình làm việc 2.2.1 Định nghĩa Android Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 11 Android hệ điều hành dựa tảng Linux thiết kế dành cho thiết bị di động có hình cảm ứng điện thoại thơng minh máy tính bảng Android phát triển Android Inc với hỗ trợ tài từ Google sau Google mua lại vào năm 2005 2.2.2 Ngôn ngữ Koltin Kotlin ngơn ngữ lập trình phát triển JetBrains Năm 2019, Google thơng báo ngơn ngữ lập trình Kotlin ngơn ngữ ưa thích nhà phát triển ứng dụng Android Kotlin ngôn ngữ lập trình đa tảng, kiểu tĩnh, có mục đích chung với suy luận loại Kotlin thiết kế để tương tác đầy đủ với Java phiên JVM thư viện tiêu chuẩn Kotlin phụ thuộc vào thư viện lớp Java, loại suy luận cho phép cú pháp ngắn gọn Null safety Kotlin: Kotlin giúp bạn tránh NullPulumExceptions, có nghĩa hệ thống từ chối biên dịch đoạn code gán hay trả giá trị null Các ứng dụng Android sử dụng Kotlin có khả gặp cố 20% Kotlin coroutines hỗ trợ lập trình khơng đồng bộ, làm cho tác vụ phổ biến lệnh gọi mạng cập nhật sở liệu trở nên đơn giản hiệu Review code khơng cịn vấn đề - Kotlin tập trung nhiều vào việc cú pháp dễ hiểu, dễ đọc để review, chúng hồn thành thành viên team chưa quen với ngôn ngữ 2.2.3 Dependency Injection với Dagger Theo nguyên lý cuối SOLID - Dependency inversion principle: - Các module cấp cao không nên phụ thuộc vào modules cấp thấp Cả nên phụ thuộc vào abstraction Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 12 - Interface (abstraction) không nên phụ thuộc vào chi tiết, mà ngược lại (Các class giao tiếp với thông qua interface, thông qua implementation) Với cách code thông thường, module cấp cao gọi module cấp thấp Module cấp cao phụ thuộc module cấp thấp, điều tạo dependency Khi module cấp thấp thay đổi, module cấp cao phải thay đổi theo Một thay đổi kéo theo hàng loạt thay đổi, giảm khả bảo trì code Chính tn theo Dependency Inversion principle, module phụ thuộc vào interface không đổi Ta dễ dàng thay thế, sửa đổi module cấp thấp mà khơng ảnh hưởng tới module cấp cao Từ ta có Dependency Injection: cách để thực Inversion of Control Pattern Thư viện Dagger dependency injection, khác với dependency injection dành cho việc triển khai ứng dụng Enterprise Spring IoC hay JavaEE CDI Dagger Được thiết kế cho thiết bị low-end, nhỏ gọn đầy đủ tính Hầu hết dependency injection sử dụng reflection để tạo inject module Reflection nhanh thích hợp cho version Android cũ reflection gây khó khăn lớn việc debug hay tracking gặp lỗi Thay việc sử dụng reflection Dagger sử dụng trình biên dịch trước (precompiler), trình biên dịch tạo tất lớp, module cần thiết để làm việc Dagger mạnh mẽ so với dependency injection khác thay vào Dagger lại nhẹ nhàng dễ dàng sử dụng gần bỏ điểm yếu dependency injection khả tracking bug Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 13 2.2.4 Architecture Pattern and Clean Architecture Tìm hiểu mẫu kiến trúc để xây dựng dự án Android: MVP, MVVM, MVI MVP (Model-View-Presenter) lâu đời nhất, sinh cần phải giải vấn đề khớp nối chặt chẽ với kiến trúc MVC Trong cấu trúc MVP, presenter thao túng model cập nhật view View Presenter tách biệt với hoàn toàn giao tiếp với qua thơng qua interface MVVM (Model-View-ViewModel) mơ hình mơ hình MVP, Trong kiến trúc này, vai trị quan điểm mơ hình giống MVP Trách nhiệm View tương tác với yếu tố UI trách nhiệm Model là nhà cung cấp liệu Thành phần ViewModel Đây thành phần xử lý logic sử dụng mơ hình để truy xuất liệu không giống Presenter, tồn có thay đổi khơng bị ảnh hưởng với vịng đời View MVI (Model-View-Intent) là mơ hình dành cho Android Người dùng thực hành động Intent → Intent trạng thái đầu vào cho model → Model lưu trữ trạng thái gửi trạng thái yêu cầu đến View → View Tải trạng thái từ Model → Hiển thị cho người dùng Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 14 Clean Architecture Android gồm có thành phần chính: • Domain layer lớp chứa tất model tồn bussiness logic ứng dụng, coi nơi chứa policy layer khác nơi chứa chế Domain layer nằm khơng biết layer khác bên ngồi Đây module cấp cao, khơng phụ thuộc vào implementation module cấp thấp mà phụ thuộc thông qua abstraction Mỗi usecase đảm nhiệm nhiệm vụ (Single responsibility principle), • Data layer lớp cung cấp cách thức để truy cập nguồn liệu room database internet Các triển khai sử dụng Repository pattern • Presentation Layer: Layer định hiển thị nhận input từ giao diện người dùng Tầng thường implement kiến trúc MVP, MVVM, MVC, MVI, … Thực hiện: Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 15 - Đọc tài liệu hướng dẫn - Xem trực tiếp source code cách áp dụng công ty - Nâng cao kỹ lập trình với ngơn ngữ Kotlin - Hiểu cách áp dụng mơ hình xây dựng ứng dụng Kết quả: Android - Nắm quy trình viết unit test, vận dụng TDD để viết unit test - Ngồi cịn biết thêm số quy tắt viết code chuẩn, dễ hiểu, dễ đọc Thực project Sau tháng training thực hành, thực tập sinh nắm kiến thực Kotlin Android Trong tháng thứ hai, trainer hướng dẫn thực tập sinh áp dụng kiến thức học để thực project Android Chi tiết đồ án nói phần sau Lịch làm việc Tuần Công việc - - Người hướng dẫn Tìm hiểu cơng ty, Anh Hữu, anh cách tổ chức công Đạt, anh Sơn, ty chị Hưng Làm quen với anh chị công cụ làm việc team HR Mức độ hoàn thành Nhận xét người hướng dẫn công ty - Học cách trao đổi, làm Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 16 việc qua email Tìm hiểu ngơn ngữ - Anh Hữu Kotlin Android Thực hành - codelab theo hướng dẫn Đọc tài liệu source - code công ty - - Tìm hiểu DI với Anh Đạt, anh Dagger Sơn, chị Hưng Training unit test, asynchronous - Training Architecture Pattern and Clean Architecture Android - Thực hành viết Anh Hữu ứng dụng đơn giản vận dụng kiến thức học 5,6,7,8, - Thực project Send Anh Đạt, anh 9,10,11 money via QR Sơn, anh Hữu Tổng hợp lại Anh Đạt, anh kiến thức học Sơn, anh Hữu 12 - Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 17 Chương Chi tiết project Send money via QR code Giới thiệu tính Send money Tính Send money cho phép người dùng hệ thống ngân hàng TymeBank gửi tiền cho người dùng khác thông qua số điện thoại (trong trường hợp người gửi tiền số tài khoản người nhận người nhận khơng có số tài khoản) - Nếu số điện thoại số điện thoại người dùng TymeBank, tiền chuyển trực tiếp vào tài khoản - Nếu số điện thoại số điện thoại người dùng TymeBank, tiền gửi dạng voucher, người dùng cầm mã đến đại lý Pick n Pay để quy đổi thành tiền mặt phải trả khoản phí Quy trình hoạt động Send money Người gửi tiền tiến hành nhập số điện thoại người nhận Kế đến, người gửi tiền nhập số tiền Cuối đến bước xác nhận gửi Vấn đề đặt Sẽ khơng có trường hợp người gửi nhập sai số điện thoại → gửi sai người → tiền nhập sai số tiền → gửi lại nhiều lần ➔ Thực tính Send money via QR code Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 18 Thực Nguyễn Đức Thành Phát hỗ trợ bạn Thịnh, anh Đạt, anh Sơn, anh Hữu, chị Hưng Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 19 Kế hoạch - Đọc source code để hiểu luồng hoạt động tính Send money - Thiết kế giao diện hình quét mã - Thực code giao diện hình quét mã - Thực luồng xử lý quét mã QR code - Tối ưu hàm tuỳ chỉnh cho code đẹp mắt, dễ bảo trì - Hoàn thành phần mét quã - Cho phép người dùng chọn ảnh quét mã, sử dụng đèn flash - Fix lỗi tồn đọng Kết quả: Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát 20 TÀI LIỆU THAM KHẢO [1] [Online] Available: https://vietnam.tyme.com/ [2] [Online] Available: https://www.atlassian.com/ [3] [Online] Available: https://developer.android.com [4] [Online] Available: https://stackoverflow.com/ [5] [Online] Available: https://medium.com/ [6] [Online] Available: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-cleanarchitecture.html Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát ... trở thành lập trình viên ứng dụng di động, em đăng ký học môn nhập môn lập trình di động, lập trình ứng dụng di động, ngơn ngữ lập trình java, phát triển ứng dụng di động thiết bị di động Sau... Philippines, liên doanh Tập đoàn Gokongwei Tập đoàn Tyme mắt vào năm 2022 Nguyễn Thanh Trọng Hữu Nguyễn Đức Thành Phát Chương Nội dung thực tập Đợt thực tập với chủ đề ? ?Lập trình ứng dụng di động” nhằm... ngành lập trình ứng dụng phận thiếu ngành công nghệ phần mềm Với tốc độ phát triển kỹ thuật công nghệ, tốc độ phát triển ngành lập trình ứng dụng di động tăng trưởng nhanh chóng Ngành di động

Ngày đăng: 01/02/2023, 21:17

Tài liệu cùng người dùng

Tài liệu liên quan