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 PHÁT TRIỂN Ứ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 ĐẠT HUỲNH Thực tập sinh TRẦN LÊ T[.]
Trang 1TRƯỜ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 PHÁT TRIỂN Ứ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:
ĐẠT HUỲNH
Thực tập sinh:
TRẦN LÊ THANH TÙNG
Trang 2LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp phần mềm đang có những bước tiến nhanh chóng cùng với những ứng dụng thực tiễn trong cuộc sống Chính nhờ vào sự phát triển đó mà dẫn tới các thiết
bị số như máy tính, điện thoại thông minh đang trở nên vô cùng phổ biến Vì thế mà nhu cầu về phát triển các ứng dụng trên điện thoại thông minh ngày càng gia tăng khiến nó trở thành một mảng không thể thiếu trong bức tranh toàn cảnh của ngành công nghiệp phần mềm
Đối với em, điện thoại di động đã trở thành một người bạn đồng hành không thể thiếu trong cuộc sống hiện đại ngày nay Tuy điện thoại chỉ mang một kích thước nhỏ gọn nhưng lại mang trong mình vô vàn những chức năng hữu ích Có thể nói rằng, điện thoại di động có thể thay thế phần nào những thiết bị khác như đồng hồ, máy ảnh, máy tính cầm tay,… Bản thân em tuy tiếp xúc khá trễ với điện thoại di động nhưng sự đa năng của nó lại làm em hứng thú với việc lập trình các ứng dụng di động, đặc biệt là khi mình có thể tự tay tạo ra các ứng dụng để phục vụ cho bản thân mình và những người khác
Sự phát triển của ngành công nghiệp phần mềm nói chung cũng như lập trình ứng dụng di động nói riêng có tác động to lớn đến hầu hết tất cả các lĩnh vực trong đời sống Ngành kinh tế hiện đại như tài chính – ngân hàng cũng không nằm ngoài xu thế này Các ứng dụng của công nghệ thông tin đã góp phần hỗ trợ cho sự vận hành của các dịch vụ tài chính – ngân hàng Từ đó, các công ty công nghệ tài chính và các ngân hàng số liên tiếp ra đời với một phương thức kinh doanh hoàn toàn mới và Tyme Bank là một trong số đó
Sau ba năm học tập trên trường, em cảm thấy đã đến lúc mình bắt đầu một chặng đường mới để mình có thể học hỏi thêm kinh nghiệm thực tế và phát triển bản thân mình Ngay lúc đó,
em đã tìm thấy Tyme – một môi trường chuyên nghiệp, lý tưởng để có thể giúp em thực hiện điều đó, đồng thời đây cũng là một cơ hội để em thể hiện bản thân mình, mở đầu cho sự nghiệp sau này của em
Trang 3LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn đến quý công ty Tyme đã tạo điều kiện cho em có cơ hội được thực tập và phát triển tại công ty Trong suốt quá trình thực tập em đã học hỏi được rất nhiều điều, từ những kiến thức chuyên môn cho đến những kỹ năng mềm cần thiết trong môi trường làm việc chuyên nghiệp
Đặc biệt em muốn gửi lời cảm ơn chân thành đến mentor của mình là anh Đạt Huỳnh, người đã luôn bên cạnh hướng dẫn, giúp đỡ và cho em những lời khuyên trong quá trình thực tập tại Tyme Bên cạnh đó em cũng muốn gửi lời cảm ơn đến những thành viên của Bamboo team, những anh/chị đã giúp đỡ em rất nhiều từ ngày những đầu em đến công ty Và cũng không thể không kể đến sự hỗ trợ từ bộ phận nhân sự và bộ phận IT tại Tyme, em xin cảm ơn rất nhiều
vì sự hỗ trợ tận tình mà mọi người đã dành cho em cũng như dành cho các bạn thực tập sinh khác tại Tyme Ngoài ra thì, em xin đặc biệt cảm ơn những anh chị trainer, anh Sơn Lê, anh Hà
Hồ, anh Long Huỳnh, chị Thủy Phạm, chị Tuyến Nguyễn đã góp sức vào chương trình thực tập này để tạo ra những buổi training vô cùng hữu ích
Cuối cùng, em xin cảm ơn các thầy cô tại trường Đại học Công nghệ Thông tin cũng như các thầy cô tại khoa Công nghệ Phần mềm đã tận tâm giảng dạy em trong suốt những năm đại học của mình để em có thể tự tin vững bước trên con đường sự nghiệp Em cũng xin cảm ơn các thầy cô vì đã hỗ trợ và tạo điều kiện cho em thực hiện bài báo cáo này Một lần nữa, em xin chân thành cảm ơn
Trần Lê Thanh Tùng
Thành phố Hồ Chí Minh, ngày 10 tháng 12 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP 6
1 Giới thiệu về Tyme 6
2 Sản phẩm của công ty 6
CHƯƠNG 2 NỘI DUNG THỰC TẬP 7
1 Giai đoạn 1: Tìm hiểu, khám phá 7
2 Giai đoạn 2: Quan sát 10
3 Giai đoạn 3: Thực hành 10
4 Giai đoạn 4: Ship IT 11
CHƯƠNG 3 CHI TIẾT VỀ PROJECT 12
1 Send money with QR Code (iOS) 12
TỔNG KẾT 16
Trang 6CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu về Tyme
Tyme Group là một trong những tập đoàn ngân hàng kỹ thuật số phát triển nhanh nhất thế giới, xây dựng các ngân hàng “high-tech” và “high-touch” ở các thị trường đang phát triển mới nổi
Có trụ sở chính tại Singapore cùng với Trung tâm Phát triển Sản phẩm & Công nghệ tại Việt Nam, Tyme Group 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à ít được tiếp cận với ngân hàng
Tyme Group 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 ngân hàng trong nước cũng như các đối tác trong lĩnh vực Fintech để cho ra mắt những ngân hàng kỹ thuật số mới
Về phía Tyme Vietnam, đây là một Trung tâm Công nghệ (Technology Hub) của Tyme Group và được thành lập vào năm 2016 Tyme Vietnam tập hợp những người làm về kĩ thuật và sản phẩm có chung sứ mệnh toàn cầu là trở thành serial bank builders, định hướng 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 đã xây dựng và cung cấp các dịch vụ ngân hàng tại hai quốc gia là Nam Phi và Philippines
TymeBank: có trụ sở tại Nam Phi, hiện là một trong những ngân hàng 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
Trang 7 GoTyme: có trụ sở tại Philippines, là công ty liên doanh giữa Gokongwei Group và Tyme Group
Trang 8CHƯƠNG 2 NỘI DUNG THỰC TẬP
Chương trình thực tập năm 2022 của Tyme bao gồm nhiều mảng khác nhau, như mảng Mobile (di động), Python (Data, DevOps), Java API (Backend) và Quality Assurance Công ty
tổ chức chương trình thực tập này nhằm muốn tạo ra nơi để các bạn sinh viên có cơ hội được học tập, phát triển cũng như là trải nghiệm đầu tiên tốt đẹp khi làm việc ở trong môi trường làm việc chuyên nghiệp Xuyên suốt quá trình tham gia vào đợt thực tập này, em không những có cơ hội được tiếp xúc với các kiến thức chuyên môn mà còn được phát triển các kỹ năng mềm khác nhằm tạo cho bản thân một bước đà để tiếp tục sự nghiệp của bản thân sau này
Nhìn chung thì quá trình thực tập bao gồm 4 giai đoạn (trong vòng 3 tháng), đối với mảng Mobile mà em đã chọn thì có thêm 2 mảng con nữa là Android và iOS Khi tham gia chương trình thực tập của Tyme, em đã có cơ hội để tiếp xúc với iOS Development, một định hướng mà em đã có hứng thú từ lâu và đây cũng chính là nội dung mà em đã thực tập tại Tyme trong 3 tháng vừa qua
1 Giai đoạn 1: Tìm hiểu, khám phá
Thời gian: tuần 1 – 2.
Nội dung:
Tham gia những buổi sharing chung về giới thiệu công ty, quá trình phát triển, những quy tắc, quy định về bảo mật, an toàn thông tin, văn hóa, sự kiện, cách làm việc, v.v
Tham gia những phiên học (online & offline sessions):
o Engineering Culture: Những hành vi, thái độ của một kỹ sư và giá trị cốt
lõi của công ty
o Professionalism in Working: Tác phong chuyên nghiệp khi làm việc tại
công ty, văn hóa ứng xử sao cho chuẩn mực
o Git: Cơ bản về hệ thống quản lý phiên bản phân tán và cách sử dụng.
Trang 9o Branching Model: Mô hình phân nhánh, có thể hiểu là các quy tắc trong
quản lý source code để mà mọi người cùng làm việc hiệu quả trên một source code dễ dàng và tránh các vấn đề về merge code
o Cyber Security: Khóa học về bảo mật về an ninh mạng, những nguy cơ dẫn
đến bị hack và cách phòng tránh (bởi banking là domain khá nhạy cảm)
o KnowBe4 Security Training: Những vấn đề về bảo mật và hành động cần
lưu ý để tránh gây rò rỉ thông tin
Tìm hiểu cách sử dụng các công cụ làm việc:
o Confluence: Công cụ quản lý, lưu trữ, chia sẻ tài liệu.
o Jira: Công cụ quản lý công việc.
o BitBucket: Code repository dựa trên Git.
o Hibob: Nền tảng quản lý nhân sự.
o Slack: Công cụ giao tiếp chính tại Tyme.
o Outlook: Nền tảng Email chính tại Tyme.
o Xcode: IDE phát triển ứng dụng nền tảng iOS.
Tìm hiểu tài liệu, nghiên cứu, thực hành và tham gia những buổi training về chuyên môn theo lộ trình đã được các trainer và mentor của từng mảng xây dựng:
o iOS Development: Phát triển ứng dụng điện thoại trên nền tảng iOS sử
dụng ngôn ngữ Swift và UIKit Framework, đồng thời kết hợp với Reactive Programming thông qua RxSwift
Swift Foundation: Cơ bản về ngôn ngữ Swift.
UIKit: UI Framework để phát triển iOS.
Reactive Programming với RxSwift: Ý tưởng chính là làm cho ứng
dụng có thể phản ứng với thay đổi trong dữ liệu cơ bản mà không cần phải trực tiếp gọi đến nó
Networking + Alamofire: Tổng quan về kết nối mạng trong phát
triển iOS và thư viện Alamofire
Trang 10 Multi-threading: Xử lý đa luồng trong iOS.
Local Storage: Xử lý lưu trữ dữ liệu cục bộ.
Unit Testing: Cách thực hiện các unit test trong phát triển ứng dụng
iOS
o MVVM-C Pattern: Mẫu thiết kế phát triển ứng dụng điện thoại iOS mà
Tyme đang áp dụng để giảm bớt sự phụ thuộc giữa các thành phần trong cấu trúc ứng dụng
o Clean Architecture: Clean Architecture là một khái niệm được định nghĩa
và đề xuất bởi Robert C.Martin (hay còn gọi là Uncle Bob) với mục tiêu là thức đẩy việc triển khai hệ thống gắn kết, độc lập với công nghệ và ưu tiên khả năng tái sử dụng lại code
o TymeBank iOS Application Architecture: Kiến trúc của ứng dụng trên nền
tảng iOS của TymeBank với sự áp dụng MVVM-C và Clean Architecture
o Automation Test: Kiểm thử tự động với Pikachu Framework, Appium.
Kết quả:
Hiểu rõ hơn về công ty và các sản phẩm của công ty
Hiểu được cách đảm bảo an toàn, bảo mật thông tin khi làm việc tại công ty
Hiểu được văn hóa và quy trình làm việc tại công ty
Ứng dụng được các công cụ làm việc hiệu quả
Nắm rõ các nội dung cơ bản trong lập trình iOS và có thể ứng dụng để xây dựng tính năng
Hiểu được cấu trúc ứng dụng của TymeBank, từ đó có thể tiến tới phát triển các tính năng
Hiểu rõ tầm quan trọng của Clean Architecture và cách ứng dụng để phát triển phần mềm
Trang 11 Hiểu cơ bản về Automation Test, biết cách sử dụng Pikachu Framework và Appium để chạy Automation Test Đồng thời, thực hiện được việc viết các testcase cho các tính năng với Pikachu Framework
2 Giai đoạn 2: Quan sát
Thời gian: tuần 3 – 4.
Nội dung:
Tham gia quan sát và tìm hiểu cách làm việc, quy trình và văn hóa của team
o Agile Scrum
o Các sự kiện:
Daily Standups
Refinement
Sprint Planning
Internal Review
Sprint Review
Sprint Retro
o Quy trình làm việc của team và của community cho các tech stack tại Tyme
o Quy trình Release tại Tyme
Tìm hiểu domain mà team mình đang chịu trách nhiệm
o DebiCheck – Transaction & Saving
Kết quả:
Nắm rõ được các nội dung liên quan đến quy trình làm việc, tại sao phải có những
sự kiện đó
Hiểu rõ quy trình làm việc và văn hóa của team
Hiểu được những công việc mà các thành viên của team đang thực hiện
Có thể tham gia và đóng góp vào các sự kiện của team cũng như của công ty
Nắm rõ quy trình để release phiên bản mới cho ứng dụng
Trang 123 Giai đoạn 3: Thực hành
Thời gian: tuần 5 – 12.
Nội dung:
Tham gia vào quy trình của team và bắt đầu thực hiện các công việc
Ứng dụng những gì đã tìm hiểu, nghiên cứu để thực hiện trên sản phẩm thật của công ty
Thực hiện ý tưởng riêng với team thực tập sinh mảng Mobile Send Money with
QR Code (chi tiết ở chương 3).
Kết quả:
Có được kinh nghiệm thực tế về quy trình làm việc của team
Có kinh nghiệm thực tế trong việc thực hiện tính năng trên sản phẩm thật của công ty
4 Giai đoạn 4: Ship IT
Thời gian: tuần 13.
Nội dung:
Thuyết trình về những bài học tại Tyme và đề xuất một ý tưởng, giải pháp để cải thiện Tyme, có thể là về quy trình, về cách làm việc, hoặc về sản phẩm,…
o Send Money with QR Code
Performance Review với mentor
Kết quả:
Biết được ưu điểm và nhược điểm của bản thân từ Performance Review để từ đó
có thể cải thiện và phát triển bản thân hơn nữa
Trang 13CHƯƠNG 3 CHI TIẾT VỀ PROJECT
Ngoài mở tài khoản và giao dịch thông qua các kiosk, TymeBank cung cấp các nền tảng giao dịch khác trên thiết bị điện thoại di động bao gồm cả Android và iOS Các ứng dụng này có thể tải về và sử dụng miễn phí
1 Send money with QR Code (iOS)
Một trong những tính năng thiết yếu nhất trong ứng dụng di
động TymeBank là Send Money, hay còn gọi là Gửi Tiền.
Tính năng này cho phép một người dùng TymeBank có thể
gửi tiền đến một số điện thoại vùng Nam Phi (cả những số
điện thoại chưa có tài khoản ngân hàng)
Ở tính năng này, theo cách thông thường hiện có tại ứng
dụng, người dùng phải thực hiện các bước sau để có thể thực
hiện gửi tiền: nhập số điện thoại → nhập tên người nhận →
nhập số tiền → nhập mô tả giao dịch → gửi tiền.
Trang 14Tuy nhiên thì đó là trong trường hợp thuận lợi, còn trong trường hợp người dùng nhập sai
số điện thoại thì người dùng phải quay trở lại và bắt đầu luồng gửi tiền lại từ đầu và điều này thì khá bất tiện Ngoài ra, trong trường hợp người dùng muốn gửi hoặc nhận tiền từ nhiều người thì việc thực hiện thủ công các bước trên sẽ khá mất nhiều thời gian
Điều này dẫn đến một ý tưởng để cải thiện quá trình gửi tiền cho người dùng Bằng cách
sử dụng mã QR để lưu trữ thông tin gửi tiền, người dùng có thể thực hiện thao tác nhanh hơn Mã QR này được tạo tự động dựa trên thông tin người dùng và người dùng có thể chỉnh sửa số tiền nhận và mô tả cho giao dịch Sau đó thì người dùng có thể gửi mã QR cho những người khác, người sẽ quét mã QR này để gửi số tiền đã được xác định trước đó
Các tính năng:
Hiển thị mã QR:
o Cho phép chỉnh sửa số tiền và mô tả giao dịch
o Gợi ý mô tả giao dịch
o Lưu và chia sẻ mã QR
Quét mã QR:
o Quét mã QR với số tiền và mô tả chưa được xác định
o Quét mã QR với số tiền và mô tả đã được xác định
o Bật/tắt đèn flash
o Lấy mã QR từ thư viện ảnh
Hướng dẫn sử dụng
So sánh với các phương thức khác thì mã QR là rất nhanh Những gì người dùng cần làm
là mở ứng dụng và quét mã, sau đó là xác nhận giao dịch Khi thực hiện so sánh luồng gửi tiền theo cách thông thường và dùng mã QR thì thời gian hoàn thành có sự cách biệt khá rõ ràng
Trang 15Một ứng dụng khác nữa là điều này có cho phép nhà bán lẻ có thể tạo mã QR trên biên lai của khách hàng, để in ra và đặt tại cửa hàng, đưa vào hóa đơn hoặc cung cấp duới dạng thanh toán trực tuyến Khách hàng có thể quét nó và sau đó xác nhận giao dịch
Giao dịch với mã QR cũng làm giảm khả năng xảy ra lỗi, chẳng hạn như nhập sai số điện thoại hoặc gửi nhầm người nhận Điều này tất nhiên sẽ thuận tiện hơn cho người dùng khi
họ không bận tâm đến việc số điện thoại nhận tiền mà họ nhập vào có chính xác hay không
Người thực hiện:
Trần Lê Thanh Tùng
Trương Kim Lâm (sinh viên UIT cùng là thực tập sinh Mobile mảng iOS tại Tyme với em)
Những việc đã làm:
Tự động tạo mã QR dựa trên thông tin người dùng
Tính năng gửi tiền bằng mã QR với số tiền và mô tả giao dịch chưa được xác định
Tính năng gửi tiền bằng mã QR với số tiền và mô tả giao dịch đã được xác định
Tính năng bật/tắt đèn flash
Tính năng gửi tiền với mã QR được lấy từ thư viện ảnh
Tính năng chỉnh sửa số tiền và mô tả giao dịch cho mã QR
Tính năng gợi ý mô tả giao dịch trong phần chỉnh sửa số tiền và mô tả giao dịch
Tính năng lưu mã QR dưới dạng hình ảnh
Tính năng chia sẻ mã QR
Tính năng hướng dẫn sử dụng
Đồng bộ hóa dữ liệu QR giữa nền tảng Android và iOS
Hướng phát triển:
Hiện tại tính năng quét mã QR chỉ hỗ trợ với camera được đính sẵn trong ứng dụng, nên cải thiện tiếp theo cho tính năng này có thể là quét mã QR với camera