Tải bản đầy đủ (.pdf) (20 trang)

Báo Cáo Thực Tập Kiến Trúc Source Code Phần Mềm Android.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (827.38 KB, 20 trang )

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

KIẾN TRÚC SOURCE CODE PHẦN MỀM
ANDROID
Công ty thực tập

: SHub JSC

Người phụ trách

: Lê Văn Tư

Thực tập sinh

: Trần Minh Cường

TP. Hồ Chí Minh, tháng 12 năm 2022


LỜI MỞ ĐẦU
Xu hướng công nghệ đang ngày càng phát triển, các thiết bị thông minh càng được chú
trọng hơn. Việc lập trình trên thiết bị di động đang là xu thế hiện nay. Các thiết bị di động
Android rất phổ biến, nắm bắt xu hướng nên em có định hướng phát triển bản thân trong lĩnh
vực lập trình trên thiết bị di động (android)
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như
muốn được tham gia trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập trong
hè. Vì vậy, em quyết định chọn Shub mơi trường lý tưởng, hiện đại, chuyên nghiệp – là nơi sẽ
giúp em thực hiện được dự định này.



Trần Minh Cường


LỜI CẢM ƠN
Lời đầu tiên, em xin bày tỏ lòng biết ơn sâu sắc đến Ban giám hiệu, quý thầy cô trường Đại
học Công nghệ thông tin – ĐHQG HCM nói chung và q thầy cơ khoa Cơng nghệ Phần mềm
nói riêng
Trải qua 3 tháng thực tập tại Cơng ty Cổ phần Công nghệ Giáo dục SHub tuy không dài
nhưng đó là một lợi thế về thời gian cho em trong quá trình viết báo cáo thực tập. Và trong suốt
quá trình thực hiện báo cáo, em đã nhận được rất nhiều sự giúp đỡ nhiệt tình của các anh chị tại
Công ty Cổ phần Công nghệ Giáo dục SHub.
Cuối cùng, em xin gửi lời cảm ơn chân thành đến Ban lãnh đạo công ty, anh Nguyễn Đăng
An – CEO Công ty Cổ phần Công nghệ Giáo dục SHub, anh Lê Văn Tư – Hướng dẫn trực tiếp
đã luôn đồng hành, hướng dẫn cho em trong suốt quá trình thực tập. Cảm ơn tồn bộ tập thể
cơng ty cũng đã hỗ trợ em rất nhiều trong quá trình thực hiện và hoàn thành thời gian thực tập.
Do thời gian thực tập và trình độ vẫn cịn hạn chế, nên báo cáo thực tập sẽ khơng tránh khỏi
những sai sót. Em rất mong nhận được những đóng góp, ý kiến của q thầy cơ để bài báo cáo
hồn thiện hơn.
Em xin chân thành cảm ơn.
Trần Minh Cường
TP HCM, 22/12/2022

Trần Minh Cường


NHẬN XÉT CỦA KHOA

Trần Minh Cường



Mục lục
Chương 1: Giới thiệu công ty thực tập ...................................................................................... 1
1. Giới thiệu công ty SHub JSC .............................................................................................. 1
2. Sản phẩm của công ty ......................................................................................................... 2
Chương 2: Nội dung thực tập ..................................................................................................... 3
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ...................................................... 3
2. Nghiên cứu kỹ thuật ............................................................................................................ 4
2.1

Các công cụ làm việc.................................................................................................... 4

2.2

Đọc source code và tài liệu hướng dẫn ........................................................................ 4

2.3

Tìm hiểu về Jetpack compose và coroutine ................................................................. 7

3. Thực hiện project ................................................................................................................ 8
4. Lịch làm việc ....................................................................................................................... 9
Chương 3: Chi tiết về xây dựng kiến trúc Android và refactor code................................... 10
1. Giới thiệu về lý do thực hiện refactor ............................................................................... 10
2. Thực hiện........................................................................................................................... 10
3. Kết hoạch .......................................................................................................................... 10
3.1

Thực hiện refactor bảng tin ........................................................................................ 10


3.2

Thực hiện refactor tài liệu .......................................................................................... 13

Chương 4: Kết quả đạt được .................................................................................................... 14
TÀI LIỆU THAM KHẢO ........................................................................................................ 15
TỔNG KẾT ................................................................................................................................ 15

Trần Minh Cường


1

Chương 1: Giới thiệu công ty thực tập
1. Giới thiệu công ty SHub JSC
SHub Classroom là một trong nhiều dự án dưới tên chung SHub do các sinh viên, cựu
sinh viên Trường ĐH Khoa học tự nhiên, ĐH Quốc gia TP.HCM thực hiện. Hiện tại,
SHub Classroom đang phát triển theo mơ hình startup tại Khu cơng nghệ phần mềm ĐH
Quốc gia TP.HCM với hơn 10 thành viên. Định hướng hiện nay của nhóm là sử dụng
cơng nghệ tạo ra các sản phẩm giúp hỗ trợ những quá trình đổi mới giáo dục ở Việt
Nam, đặc biệt hướng đến xây dựng cộng đồng học tập trên mơi trường trực tuyến.

Hình 1. Logo của công ty SHub Classroom

Thông tin công ty:
Tên công ty: Công ty Cổ phần Công nghệ Giáo Dục SHub
Người sáng lập: Nguyễn Đăng An
Năm thành lập: 2019
Ý tưởng ban đầu: Ứng dụng hỗ trợ làm bài tập, sau phát triển lên thành phần mềm hỗ trợ
giảng dạy và học tập dành cho giáo viên.

Các thành tích đạt được: - Giải Nhất cuộc thi “Tri thức trẻ”
- Top 4 ứng dụng giáo dục thịnh hành trên Google Play
- Hơn 3 triệu lượt download app (tính trên cả nền tảng Android và IOS, chưa tính trên
website)

Trần Minh Cường


2

- Có hơn 5 triệu người dùng tính đến thời điểm hiện tại. - Có hơn 200 trường và các
trung tâm đào tạo tham gia sử dụng. Địa chỉ công ty: Phịng I103, Nhà A, Khu cơng
nghệ phần mềm, Ðường nội bộ ÐHQG - TPHCM
2. Sản phẩm của công ty
SHub Classroom là một nền tảng phục vụ cả nhà trường, giáo viên và học sinh, tập trung
vào việc giải quyết những khía cạnh như: Học tập, quản lý, giao tiếp, hỗ trợ giáo viên và
học sinh, kết nối và các cơng cụ tiện ích. Đối với giáo viên
Tách câu, đảo đề tự động: Ứng dụng trí tuệ nhân tạo, file đề bài không cần theo format
cố định bằng việc các mã đề khác nhau được tự động tạo khi học sinh làm bài, giúp tăng
tính minh bạch trong việc làm bài của học sinh. Hệ thống sẽ tự động nhận diện và đảo
thứ tự các câu để tạo thành nhiều mã đề khác nhau. Chấm điểm tự luận trực tiếp trên
hình ảnh: Giáo viên có thể mơ tả, nhận xét phần mà học
sinh sai/ đúng trực tiếp lên hình ảnh. Bên cạnh đó, giáo viên có thể nhận xét thêm về các
phần và tổng thể bài làm của học sinh được đính kèm với bài làm. Tính năng này chính
là một phần không thể thiếu để hỗ trợ giáo viên chấm bài tự luận cho học sinh khi làm
kiểm tra online. Tạo đề online: Với SHub, người dùng có thể tạo bài tập trắc nghiệm và
tự luận trực tuyến. Ngoài ra giáo viên cịn có thể đăng tải đề theo nhiều cách: từ kho học
liệu đã tạo, từ file sẵn có bất kỳ hoặc tạo nhiều mã đề mới tự động thơng qua tính năng
tách câu từ file word
Kho học liệu trực tuyến: Giáo viên có thể xây dựng kho học liệu của riêng mình. Học

liệu sẽ được dùng để tạo bài tập, bài giảng, tài liệu ... cho các lớp học trong tương lai.
Ngồi ra, SHub cịn tự động lưu trữ thông tin giáo viên, các lớp và bài giảng trên hệ
thống SHub
Classroom, thông tin lớp học, bảng điểm của học sinh sau khi làm bài tập trên hệ thống.
Những thơng tin này có thể dễ dàng truy xuất qua file excel để người dùng dễ dàng quản
lý và chia sẻ. Kiểm tra trực tuyến: với tính năng này, Shub cung cấp cho người dùng tiện
ích tạo đề và cung cấp mã đề cho từng học sinh. Việc chấm điểm và gửi kết quả cũng sẽ
được cập nhập thông qua ứng dụng.
Đối với các doanh nghiệp giáo dục:
Quản lý các lớp học và giáo viên thuộc hệ thống của trường
Trần Minh Cường


3

Quản lý hồ sơ của các học sinh, bao gồm (thông tin cá nhân, bảng điểm,...)
Hỗ trợ Nhà trường triển khai kiểm tra tập trung, thảo luận, thông báo cho từng lớp, khối
lớp hay toàn trường. Bảo mật tối ưu toàn bộ tài nguyên tại kho lưu trữ dữ liệu Trung tâm
Đại học Quốc gia TP. HCM.
Điểm nổi bật: Shub cung cấp miễn phí những chức năng cơ bản như tạo và quản lý lớp
học, tạo đề kiểm tra và thống kê điểm số, lưu trữ học liệu và xuất file đủ để đáp ứng nhu
cầu của giáo viên trong việc tổ chức một lớp học trên hệ thống. Muốn cập nhập thêm
những tính năng ưu việt khác người dùng sẽ phải nâng cấp lên phiên bản Premium.
SHub Classroom hỗ trợ tạo bài tập từ file bất kỳ mà không cần soạn thảo. Giúp giáo
viên tiết kiệm đến 70% thời gian cho lớp học của mình. Việc học của học sinh trở nên
thú vị hơn với SHub Classroom. Sau khi làm bài xong, kết quả của học sinh sẽ được
hiển thị ngay lập tức. Thông tin làm bài của học sinh được cập nhật liên tục cho giáo
viên và phụ huynh. Hồn tồn miễn phí cho học sinh.
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Kiến trúc Source Code phần mềm Android” nhằm mục đích

giúp sinh viên thực tập được đào tạo về kiến thức kiến trúc source code Android, đồng
thời rèn luyện những kỹ năng mềm như làm việc nhóm, giao tiếp với đồng nghiệ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ơi trường phát
triển
1. Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về cơng ty, q trình thành lập và phát triển (như
đã nhắc đến ở trên), 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.
Ngồ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…
Kết quả : Hiểu thêm về cơng ty Shub JSC, q 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
Trần Minh Cường


4

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 dụng: Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá 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 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 đó như:
- GitLab: là một trang web dựa trên DevOps mã nguồn mở và là một phần mềm có
chức năng và nhiệm vụ quản lý phiên bản mã nguồn, cung cấp một trình quản lý Gitrepository. Trình quản lý này có các tiện ích như wiki, theo dõi sự cố và tích hợp liên
tục. Bên cạnh đó là khả năng triển khai các tính năng pipeline và sử dụng license mã
nguồn mở được phát triển bởi GitLab Inc.

- Trello: công cụ quản lý công việc cũng như ghi chú các hướng dẫn hiệu quả và tiện
lợi
- Android Studio – IDE hỗ trợ phát triển Android
- Discord: Công cụ trao đổi công việc, meeting
2.2 Đọc source code và tài liệu hướng dẫn
Các kiến thức liên quan: ngôn ngữ Kotlin trong Android, Kiến trúc dự án Android
Thời gian: 1 tuần
Nội dung: Đọc tài liệu hướng dẫn và tìm hiểu cơng nghệ để xây dựng kiến trúc phần
mềm Android
- Định nghĩa về Android:
Android là một tập hợp phần mềm (software stack) dành cho các thiết bị di
động, bao gồm hệ điều hành, phần mềm trung gian (middleware)và các ứng
dụng chủ chốt (key applications). Google Inc. đã mua lại phát triển ban đầu
của phần mềm từ Android Inc., năm 2005. Hệ điều hành di động của
Android dựa trên nền tảng Linux
- Ngôn ngữ Kotlin và các thế mạnh vượt trội so với Java:
Kotlin là ngôn ngữ lập trình được phát triển bởi JetBrains. 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". Đây
là một ngôn ngữ mã nguồn mở.
Trần Minh Cường


5

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. 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 qua máy ảo. Khi Kotlin được chuyển đổi
thành bytecode, nó có thể truyền được qua mạng và thực hiện bởi JVM

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.
Kotlin dễ học và dễ tiếp cận. Null-safety của Kotlin: giúp chúng ta thoát
khỏi NullPointerException. Giúp chúng ta tránh những exeption kiểu con
trỏ null. Trong Kotlin, hệ thống sẽ từ chối biên dịch đoạn code đang gán
hay trả về giá trị null
Review code khơng cịn là vấn đề - Kotlin tập trung nhiều hơn vào việc cú
pháp dễ hiểu, dễ đọc để review, chúng có thể hoàn thành bởi những thành
viên team chưa quen với ngơn ngữ này
- Kiến trúc phần mềm Android
+ Tìm hiểu về Dependency Injection
Theo như trong nguyên lý cuối cùng của SOLID - Dependency inversion
principle:
1. Các module cấp cao không nên phụ thuộc vào các modules cấp thấp. Cả 2 nên phụ
thuộc vào abstraction.
2. 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 nhau thông qua interface, không phải thông qua implementation.)
Với cách code thông thường, các module cấp cao sẽ gọi các module cấp thấp.
Module cấp cao sẽ phụ thuộc và module cấp thấp, điều đó tạo ra các dependency.
Khi module cấp thấp thay đổi, module cấp cao phải thay đổi theo. Một thay đổi sẽ
kéo theo hàng loạt thay đổi, giảm khả năng bảo trì của code.

Trần Minh Cường


6

Chính vì vậy nếu tn theo Dependency Inversion principle, các module cùng phụ
thuộc vào 1 interface khơng đổi. Ta có thể dễ dàng thay thế, sửa đổi module cấp thấp

mà khơng ảnh hưởng gì tới module cấp cao.
Từ đó ta có Dependency Injection: đây là một cách để hiện thực Inversion of Control
Pattern.
+ Network: Hầu hết ứng dụng Android trên thị trường đều kết nối với Internet để
thực hiện một số thao tác mạng. Chẳng hạn như truy xuất email, tin nhắn hoặc thông
tin tương tự qua một máy chủ phụ trợ. Việc này giúp đơn giản hố q trình tìm nạp
dữ liệu, đồng thời hỗ trợ ứng dụng tuân thủ các phương pháp hay nhất của Android,
chẳng hạn như thực hiện thao tác trên một luồng ở chế độ nền.
Sử dụng thư viện Retrofit để kết nối với một dịch vụ web REST trên Internet và
nhận phản hồi.
Sử dụng thư viện Moshi để phân tích cú pháp phản hồi JSON thành đối tượng dữ
liệu.
+ Module: Nơi phân chia các tính năng của phần mềm, khái qt hố các tính năng
giúp việc phát triển và mở rộng một cách dễ dàng
+ UI Layer: Vai trò của giao diện người dùng là hiển thị dữ liệu ứng dụng trên màn
hình cũng như đóng vai trị là điểm chính trong q trình tương tác của người dùng.
Bất cứ khi nào dữ liệu thay đổi, do sự tương tác của người dùng (chẳng hạn như
nhấn vào một nút) hoặc đầu vào bên ngoài (chẳng hạn như phản hồi mạng), giao diện
người dùng sẽ cập nhật để phản ánh các thay đổi đó. Về mặt hiệu quả, giao diện
người dùng là đại diện trực quan của trạng thái ứng dụng như được truy xuất từ lớp
dữ liệu
+ Domain Layer: Lớp miền chịu trách nhiệm về việc tổng hợp các logic nghiệp vụ
phức tạp, hoặc logic nghiệp vụ đơn giản được sử dụng lại trong nhiều ViewModel.
Lớp này là khơng bắt buộc vì khơng phải ứng dụng nào cũng có những yêu cầu này.
Bạn chỉ nên sử dụng thuộc tính này khi cần, ví dụ: để xử lý độ phức tạp hoặc ưa
chuộng khả năng tái sử dụng.
+ Data Layer: Trong khi lớp giao diện người dùng chứa trạng thái liên quan đến giao
diện người dùng và logic giao diện người dùng, thì lớp dữ liệu chứa dữ liệu ứng
Trần Minh Cường



7

dụng và logic nghiệp vụ. Logic nghiệp vụ là những gì mang lại giá trị cho ứng
dụng—được tạo ra từ các quy tắc nghiệp vụ trong thế giới thực xác định cách tạo,
lưu trữ và thay đổi dữ liệu ứng dụng.
Thực hiện:
- Đọc tài liệu hướng
- Xem source code mẫu và hiểu cách vận hành project của công ty
Kết quả:
- Nâng cao kỹ năng lập trình với ngơn ngữ Kotlin
- Biết được cách kiến trúc phần mềm để dễ phát triển và bảo trì
2.3 Tìm hiểu về Jetpack compose và coroutine
Thời gian: 1 tuần
Nội dung: Các kiến thức cơ bản vể Jetpack compose và coroutine để xây dựng giao
diện Android một cách nhanh chóng hơn so với XML và quản lý đa luồng với
coroutine
- Khái niệm cơ bản về Jackpack Compose:
Jetpack Compose là một bộ công cụ hiện đại, được khuyên dùng cho Android để
xây dựng giao diện người dùng gốc. Cơng cụ này đơn giản hố và đẩy nhanh quá
trình phát triển giao diện người dùng trên Android. Nhanh chóng đưa ứng dụng vào
hoạt động với mã ngắn gọn hơn, các công cụ mạnh mẽ và API Kotlin trực quan.
- Lý do sử dụng Jetpack Compose:
Ít code hơn: Việc viết ít mã hơn sẽ ảnh hưởng đến tất cả các giai đoạn phát triển,
sẽ tập trung vào vấn đề hiện có, ít phải kiểm tra, gỡ lỗi và ít xảy ra lỗi hơn; với tư
cách là người đánh giá hoặc người bảo trì, bạn có ít mã để đọc, hiểu, xem lại và bảo
trì. Compose cho phép bạn làm được nhiều việc hơn bằng ít mã hơn, so với việc sử
dụng hệ thống Android View: các nút, danh sách hoặc ảnh động Code đang viết chỉ
được viết bằng Kotlin, thay vì tách mã giữa Kotlin và XML. Mã được viết bằng
Compose rất đơn giản và dễ dàng để bảo trì mọi thứ bạn đang xây dựng.

Trực quan: Compose sử dụng API khai báo, nghĩa là tất cả những gì cần làm là
mô tả giao diện người dùng. Compose sẽ xử lý phần còn lại. API rất trực quan. Với
Compose, tạo các thành phần nhỏ, khơng có trạng thái khơng gắn với một hoạt động
Trần Minh Cường


8

hoặc mảnh cụ thể. Điều đó giúp dễ dàng sử dụng lại và thử nghiệm chúng. Trong
Compose, trạng thái hoàn toàn rõ ràng và được chuyển tới nội dung kết hợp. Bằng
cách đó, có một nguồn đáng tin cậy duy nhất cho trạng thái đã được gói gọn và tách
biệt. Sau đó, khi trạng thái ứng dụng thay đổi, giao diện người dùng của bạn sẽ tự
động cập nhật.
Đẩy mạnh quy trình phát triển: Compose tương thích với tất cả mã hiện có: có thể
gọi mã Compose từ Views và Views từ Compose. Hầu hết các thư viện phổ biến như
Di chuyển, ViewModel và coroutine Kotlin hoạt động với Compose, vì vậy bạn có
thể bắt đầu áp dụng vào lúc và ở nơi bạn muốn.
Mạnh mẽ: Compose cho phép tạo các ứng dụng tuyệt đẹp có quyền truy cập trực
tiếp vào API nền tảng Android và khả năng hỗ trợ tích hợp dành cho Material
Design, Giao diện tối, ảnh động và nhiều ưu điểm khác. Với Compose, việc mang lại
chuyển động và sự sống cho ứng dụng của bạn thông qua ảnh động thật nhanh chóng
và dễ dàng
- Khái niệm cơ bản về Coroutine: Coroutine là một mẫu thiết kế cho cơ chế xử lý
đồng thời mà bạn có thể dùng trên Android để đơn giản hoá mã nguồn thực thi
không đồng bộ. Coroutine đã được thêm vào Kotlin trong phiên bản 1.3 và dựa trên
các khái niệm sẵn có trong những ngôn ngữ khác.
Trên Android, coroutine giúp quản lý các tác vụ chạy trong thời gian dài có thể chặn
luồng chính và khiến ứng dụng của bạn khơng phản hồi. Hơn 50% nhà phát triển
chuyên nghiệp sử dụng coroutine cho biết rằng năng suất làm việc của họ tăng lên.
Chủ đề này trình bày cách bạn có thể sử dụng coroutine của Kotlin để giải quyết các

vấn đề này, qua đó cho phép bạn viết mã ứng dụng rõ ràng và súc tích hơn.
- Tính năng coroutine: Coroutine là giải pháp chúng tơi đề xuất để lập trình khơng
đồng bộ trên Android. Những tính năng đáng chú ý bao gồm: Dung lượng nhẹ, ít rị
rỉ hơn, tích hợp sẳn tình năng hỗ trợ huỷ, tích hợp Jetpack
3. Thực hiện project
Sau hơn 3 tuần đọc tài liệu và mày mò thực hành, thực tập sinh đã nắm được những kiến
thức cơ bản về Kotlin, Jetpack Compose, Android. Trong tuần tiếp theo, thực tập sinh áp

Trần Minh Cường


9

dụng những kiến thức đã học để thực hiện Refactor và ứng dụng kiến trúc trên Android
Chi tiết đồ án sẽ được nói ở phần sau.
4. Lịch làm việc
Tuần

1

Cơng việc

- Tìm hiểu về cơng ty,

Người

Mức độ

Nhận xét của


hướng dẫn

hồn

nguời hướng

thành

dẫn

Lê Văn Tư

10

Lê Văn Tư

10

Lê Văn Tư

10

cách tổ chức của công
ty
- Làm quen với các
công cụ làm việc trong
công ty
- Học cách trao đổi
làm việc
2


- Tìm hiểu về ngơn
ngữ lập trình Kotlin,
Jetpack Compose và
Coroutine
- Thực hành các bài
codelab hướng dẫn
- Đọc tài liệu và
source code của công
ty

3,4

- Đọc tài liệu xây
dựng kiến trúc cho dự
án

5,6,7,8

Refactor Bảng tin

Lê Văn Tư

10

7,8

Refactor Tài liệu

Lê Văn Tư


10

Trần Minh Cường


10

9,10,11,12

Fix code tồn động và

Lê Văn Tư

10

Refactor
Chương 3: Chi tiết về xây dựng kiến trúc Android và refactor code
1. Giới thiệu về lý do thực hiện refactor
Do Soure code hiện tại sử dụng XML và Java sử dụng mơ hình MVC còn nhiều lỗi gây
hay xảy ra crash hệ thống. Khó bảo trì, phát triển các tính năng mới. Source code cần
được refactor, đặc biệt là source code cần chuyển từ Java sang Kotlin.
2. Thực hiện
Trần Minh Cường, hỗ trợ Lê Văn Tư
3. Kết hoạch
3.1 Thực hiện refactor bảng tin
- Đọc tài liệu, đọc source code, tìm hiểu các tính năng của phần đang thực hiện
- Take notes những việc cần làm
- Tìm hiểu các api được gọi
- Tiến hành chuyển đổi từ giao diện XML sang Jetpack Compose và áp dụng kiến trúc

mới
- Tối ưu, xây dựng giao diện đẹp mắt dễ bảo trì
Kết quả:
- Hồn tất task
- Giao diện giống với design, tính năng ổn định

Trần Minh Cường


11

Thêm loading vào trang giao diện. Lúc đầu giao diện khơng có loading gây ra cảm giác
chờ đợi cho người dùng. Cập nhật thêm loading giúp cho trải nghiệm của người dùng trở
tốt hơn

Cập nhật lại giao diện bằng Jetpack Compose
Trần Minh Cường


12

Trần Minh Cường


13

Chuyển đổi giao diện từ giao diện cũ sang giao diện mới, thay đổi phần comment từ
Comment Bottom Dialog sang Comment Screen
3.2 Thực hiện refactor tài liệu
- Chuyển đổi giao diện từ XML sang Jetpack Compose

- Chuyển file java sang kotlin
- Tối ưu hóa các hàm
Kết quả:
- Hồn thành Task
- fix bugs còn tồn động

Trần Minh Cường


14

Chương 4: Kết quả đạt được
So sánh phiên bản 2.9.3 so với 2.9.2 khi chưa được refactor. Sự cố lỗi là tăng 777,35%
và lỗi ANR tăng 233,3 %

So sánh phiên bản 2.9.4 so với 2.9.3 sau khi được refactor. Sự cố lỗi giảm 92,05% và lỗi
ANR chỉ còn tăng 26,93% giảm nhiều so với phiên bản trước

Trần Minh Cường


15

TÀI LIỆU THAM KHẢO
[1] "Shub Classroom", />[2] "Cấu trúc ứng dụng | Android Developer",
/>tXSTqyN-P9HjiAhvZg17zMMvZJLw3Xyz6qA87RLgq2oXM
[3] "Khóa học cơ bản về Kotlin trên Android Developer",
/>DLUrwriarKYnINrmQ
[4] "Tìm hiểu kiến trúc GitLab", a/p/tim-hieu-kien-truc-gitlabBAQ3vVbZvbOr


TỔNG KẾT
Như vậy, chỉ trong vòng thời gian ngắn ngủi, thực tập sinh đã kịp hoàn thành
refactor và kiến trúc lại Source Code. Sau khi refactor, vẫn đầy đủ các tính năng đã
thực hiện và đã tối ưu hơn.
Chân thành cảm ơn sự giúp đỡ của các anh trong team SHub Classroom. Cảm ơn tất
cả thầy cơ đã giúp em hồn thành bài báo cáo này.
Trần Minh Cường



×