ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THỰC TẬP TỐT NGHIỆP Đề tài Tìm hiểu phát triển ứng dụng di động Android Công ty thực tập Công ty Trách nhiệm[.]
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
THỰC TẬP TỐT NGHIỆP
Đề tài: Tìm hiểu phát triển ứng dụng di động Android
Công ty thực tập: Công ty Trách nhiệm hữu hạn Kỹ thuật số TYME
Lớp: SE501.N11.PMCL Sinh viên thực hiện: Hồ Hữu Thịnh – 19522275
TP.Hồ Chí Minh, ngày 25 tháng 12 năm 2022
Trang 2NHẬN XÉT CỦA KHOA
Trang 3
LỜI MỞ ĐẦU
Ngày nay, ngành lập trình ứng dụng là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển của các kỹ thuật công nghệ, tốc độ phát triển của ngành lập trình ứng dụng di động cũng tăng trưởng nhanh chóng
Lập trình viên ứng dụng di động được sinh ra là do nhu cầu sử dụng thiết bị điện thoại của mọi người ngày càng tăng Và họ sẽ là nguồn nhân lực quan trọng cho việc phát triển của ngành lập trình ứng dụng di động sau này Việt Nam cũng không phải là ngoại lệ, các công ty công nghệ lớn, đa quốc gia đang tập trung vào mảng phát triển ứng dụng di động của mình như: Tiki,
Shopee, Gojek, Vì lý do này, em quyết định chọn lập trình di động làm định hướng cho việc học tập và phát triển ngành nghề tương lai của mình
Trong quá trình học tập tại trường, em cũng có định hướng sẽ trở thành một lập trình viên ứng dụng di động, em đã đăng ký học các môn như 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 trên thiết bị di động…
Tuy nhiên học tập ở trường chưa bao giờ là đủ và em muốn có thêm nhiều kinh nghiệm thực tế, cũng như muốn được trải nghiệm những dự án thực tế tại một môi trường chuyên nghiệp, với những mong muốn đó, em quyết định đăng ký môn thực tập doanh nghiệp và em may mắn đậu vào TYME - một công ty có môi trường làm việc hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 4LỜ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ó cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của anh mentor và các anh chị trainer, em đã tiếp thu được những kiến thức quan trọng để có thể làm được một ứng dụng di động Chân thành cảm ơn các anh chị trong nhóm trainer đã dành ra nhiều thời gian, công sức để hướng dẫn em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Ngô Đình Duy Quang - mentor đã đồng hành cùng em trong thời gian vừa qua, hướng dẫn, giúp đỡ cho em tận tình những lúc khó khăn trong công việc cũng như việc làm quen với môi trường mới; cảm ơn các anh chị trong team HR đã traning tụi em về TYME và phong cách làm việc ở đây Cảm ơn các anh trainer: anh Trí, anh Hiếu, anh Long, anh Đạt, anh Sơn, chị Hưng đã có những buổi training bổ sung kiến thức cho tụi em Cuối cùng, em cảm ơn hai team Titan và Kirin giúp đỡ em trong 3 tháng vừa qua
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Hồ Hữu Thịnh
TP HCM, tháng 12 năm 2022
Trang 5MỤC LỤC
I CHƯƠNG I: GIỚI THIỆU CÔNG TY 6
1 Giới thiệu công ty TNHH Kỹ thuật số Tyme 6
2 Sản phẩm của công ty 6
II Nội dung thực tập 7
1 Tìm hiểu công ty và môi trường làm việc 7
2 Nghiên cứu kỹ thuật 7
2.1 Các công cụ làm việc 7
2.2 Học tập các kiến thức phục vụ cho công việc trở thành một lập trình viên Android 8
2.3 Thực hiện dự án thực tế 10
III Chi tiết về dự án “Send money with QR code” 11
1 Giới thiệu tính năng send money 11
1 Vấn đề đặt ra 11
2 Cách thức hiện thực hoá 11
3 Quy trình thực hiện 12
Trang 6I GIỚI THIỆU CÔNG TY
1 Giới thiệu công ty TNHH Kỹ thuật số Tyme
Tyme Group là một trong những tập đoàn chuyên đi xây dựng ngân hàng kỹ thuật số công nghệ cao chủ yếu nhắm đến các các thị trường mới nổi có tốc độ phát triển nhanh Có trụ sở chính tại Singapore với Trung tâm Phát triển Sản phẩm & Công nghệ tại Việt Nam, Tyme thiết kế, xây dựng và thương mại hóa các ngân hàng kỹ thuật số cho các thị trường mới nổi, với chuyên môn đặc biệt trong việc phục vụ các nhóm dân cư chưa được phục vụ đầy đủ và chưa có điều kiện được tiếp cận với ngân hàng
Tyme sở hữu nền tảng công nghệ và tài sản trí tuệ trên toàn cầu, đồng thời hợp tác với các đối tác ngân hàng và fintech trong nước để ra mắt các ngân hàng kỹ thuật số mới
Được thành lập vào năm 2016, Tyme Việt Nam là Trung tâm Phát triển Công nghệ & Sản phẩm của TymeGroup, với sứ mệnh toàn cầu là trở thành những người xây dựng ngân hàng nối tiếp, định hình tương lai của ngân hàng thông qua công nghệ
2 Sản phẩm của công ty
Tyme Group hiện cung cấp dịch vụ ngân hàng tại các quốc gia:
- Nam Phi (TymeBank): có trụ sở tại Nam Phi, hiện là một trong những ngân hàng kỹ thuật
số phát triển nhanh nhất thế giới, với hơn 5 triệu khách hàng kể từ khi ra mắt vào tháng 2 năm 2019
- Philippines (GoTyme): có trụ sở tại Philippines, là liên doanh giữa Tập đoàn Gokongwei
và Tập đoàn Tyme, ra mắt vào giữa năm 2022
Trang 7II 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 được đào tạo toàn diện về lập trình ứng dụng trên thiết bị di động, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường chuyên nghiệp
1 Tìm hiểu công ty và môi trường làm việc
Thời gian: 2 ngày
Nội dung: Tìm hiểu về công ty, cách tổ chức phòng ban trong công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và 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ủa công ty Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc, phong cách làm việc chuyên nghiệp
Kết quả: Hiểu thêm về công ty Tyme, quá trình thành lập và phát triển Có thêm các kỹ năng về
việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1.Các công cụ làm việc
Thời gian: 3 ngày
Nội dung: Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Khoảng thời gian này, mentor sẽ hướng dẫn các thực tập sinh h tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như:
- Bitbucket: Đây là công cụ quản lý source code được sử dụng khá phổ biến trong môi trường doanh nghiệp Điểm mạnh của nó so với những công cụ quản lý source code khác
có lẽ nằm ở tính bảo mật và khả năng tương thích với các sản phẩm trong hệ sinh thái Atlassian
- Fork: Công cụ git GUI giúp trực quan hoá các thao tác với git
- Jira: công cụ theo dõi và quản lý lỗi, vấn đề và dự án để làm quy trình phát triển trở nên
dễ dàng hơn
- Confluence: không gian làm việc nhóm, nơi kết hợp giữa kiến thức và sự cộng tác nhóm Các Pages cung cấp cho nhóm của bạn một nơi để tạo, nắm bắt và cộng tác trong bất kỳ
dự án hoặc ý tưởng nào Các Spaces giúp cấu trúc, tổ chức và chia sẻ công việc, vì vậy mọi thành viên trong nhóm đều có khả năng hiểu biết về quy định và tiếp cận thông tin một cách thuận lợi và nhanh chóng nhất
- Android studio: IDE hỗ trợ phát triển các ứng dụng trong hệ sinh thái Android
- Mockoon: Công cụ hỗ trợ tạo mock api, giả lập response từ server trả về
Kết quả: Làm quen với các công cụ làm việc nêu trên
Trang 82.2.Học tập các kiến thức phục vụ cho công việc trở thành một lập trình viên Android
Thời gian: 3 tuần
Nội dung: Ngôn ngữ lập trình Kotlin, hệ điều hành Android, architecture pattern…
Android
Là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Android được phát triển bởi Android Inc với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005
Ngôn ngữ lập trình Kotlin
Là một ngôn ngữ lập trình đa nền tảng, kiểu tĩnh, có mục đích chung với suy luận loại Kotlin được thiết kế để tương tác với Java và phiên bản JVM của thư viện tiêu chuẩn của Kotlin phụ thuộc vào thư viện lớp Java Ưu điểm lớn nhất của Kotlin có lẽ là coroutines, tính năng này hỗ trợ lập trình không đồng bộ, làm cho các tác vụ phổ biến như lệnh gọi mạng và cập nhật cơ sở dữ liệu trở nên đơn giản và hiệu quả
Architecture pattern and Clean architecture
Tìm hiểu về các mẫu kiến trúc để xây dựng một dự án Android: MVP, MVVM, MVI
MVP (Model-View-Presenter) là lâu đời nhất, nó được sinh ra vì cần phải giải quyết 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 và cập nhật ở view View và Presenter tách biệt với nhau hoàn toàn và giao tiếp với nhau qua thông qua
interface
MVVM (Model-View-ViewModel) là mô hình mới hơn mô hình MVP, Trong kiến trúc này, vai trò của quan điểm và mô hình giống như trong MVP Trách nhiệm duy nhất của View là tương tác với các yếu tố UI và trách nhiệm duy nhất của Model là là nhà cung cấp dữ liệu Thành phần mới ở đây là ViewModel Đây là một thành phần cũng xử lý cả logic và sử dụng mô hình để truy xuất dữ liệu nhưng không giống như Presenter, nó có thể tồn tại khi có những thay đổi và không
bị ảnh hưởng với vòng đời của View
MVI (Model-View-Intent) là là một trong những mô hình mới nhất dành cho Android Người dùng thực hiện một hành động sẽ là Intent → Intent là trạng thái là đầu vào cho model → Model lưu trữ trạng thái và gửi trạng thái được yêu cầu đến View → View Tải trạng thái từ Model → Hiển thị cho người dùng
Clean architecture trong Android gồm có 3 thành phần chính:
Trang 9Clean architecture in android
- Presentation Layer: Layer quyết định sẽ hiển thị gì và nhận input gì từ giao diện người dùng Tầng này sẽ thường sẽ được implement bởi các kiến trúc như MVP, MVVM, MVC, MVI, …
- Domain layer: là lớp chứa tất cả model và toàn bộ bussiness logic của ứng dụng, có thể coi đây là nơi chứa các policy còn các layer khác là nơi chứa các cơ chế Domain layer nằm trong cùng do đó sẽ không biết bất kỳ layer nào khác bên ngoài Đây là module cấp cao, không phụ thuộc vào bất kỳ implementation của module cấp thấp nào mà chỉ phụ thuộc thông qua abstraction Mỗi usecase đảm nhiệm một nhiệm vụ duy nhất (Single responsibility principle)
- Data layer là lớp này cung cấp cách thức để truy cập các nguồn dữ liệu trong room
database hoặc internet Các triển khai này sử dụng Repository pattern
Thực hiện: Đọc tài liệu hướng dẫn và xem cách triển khai trực tiếp bên trong source code của
công ty
Kết quả: Hiểu được cách áp dụng các kiến trúc phù hợp khi xây dựng một ứng dựng Android
đồng thời nâng cao kỹ năng lập trình với ngôn ngữ Kotlin
Trang 102.3.Thực hiện dự án thực tế
Sau hơn một tháng được training và thực hành, thực tập sinh đã nắm được những kiến thực cơ bản về Kotlin và Android Trong tháng thứ hai, trainer đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project trên Android
Chi tiết về dự án và cách thực hiện sẽ được nói cụ thể ở chương III
Trang 11III Chi tiết về dự án “Send money with QR code”
1 Giới thiệu tính năng send money
Tính năng Send money cho phép người dùng trong 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 không biết số tài khoản người nhận hoặc người nhận không có số tài khoản)
- Nếu số điện thoại là số điện thoại của người dùng TymeBank, tiền sẽ được chuyển trực tiếp vào tài khoản
- Nếu số điện thoại là số điện thoại không phải là người dùng TymeBank, tiền sẽ được gửi dưới dạng voucher, người dùng sẽ cầm mã này đến đại lý PicknPay để quy đổi thành tiền mặt và phải trả một khoản phí
Quy trình hoạt động của send money
1 Vấn đề đặt ra
Với quy trình kể trên ta có thể dễ dàng nhận thấy người dùng sẽ cần thực hiện kha khá các thao tác mới có thể chuyển tiền đến cho người nhận chưa kể trong quá trình thao tác, nếu không may nhập sai số điện thoại thì sẽ rất phiền dẫn đến trải nghiệm không tốt cho người dùng
Giải pháp ta có thể cân nhắc đến chính là thực hiện chuyển tiền thông qua mã QR, khi đó quy trình sẽ diễn ra như thế này nếu so với quy trình cũ
Quy trình send money với QR code khi so sánh với quy trình truyền thống
2 Cách thức hiện thực hoá
Chia nhóm cùng một thực tập sinh khác cùng thực hiện với sự hỗ trợ từ các anh chị mentor và trainor
Trang 123 Quy trình thực hiện
- Tìm hiểu business logic của tính năng send money
- Thiết kế UI cho tính năng
- Thực hiện viết code cho tính năng và xử lý các logic liên quan
- Hoàn thành và tiến hành update code lên Bitbucket
- Pair review với các anh chị trainor, mentor
Trang 13TÀI LIỆU THAM KHẢO
[1] [Online] Available: Tyme Vietnam - Tyme Vietnam
[2] [Online] Available: Collaboration software for software, IT and business teams
(atlassian.com)
[3] [Online] Available: Android Mobile App Developer Tools – Android Developers
[4] [Online] Available: Stack Overflow - Where Developers Learn, Share, & Build Careers
[5] [Online] Available: Medium – Where good ideas find you
[6] [Online] Available: Clean Coder Blog
Trang 14TỔNG KẾT
Như vậy, chỉ trong vòng một tháng ngắn ngủi, thực tập sinh đã kịp hoàn thành tính năng Send mone via QR code Sau khi trình bày với các anh trong công ty, ý tưởng được đánh giá cao và sẽ được đưa đến người dùng trong thời gian sớm nhất
Chân thành cảm ơn sự giúp đỡ của anh mentor, các anh chị nhóm trainer và sự hỗ trợ của feature team Cảm ơn thầy cô đã giúp em hoàn thành bài báo cáo này