1. Trang chủ
  2. » Tất cả

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

20 6 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo Cáo Thực Tập Kiến Trúc Source Code Phần Mềm Android
Tác giả Trần Minh Cường
Người hướng dẫn Lê Văn Tư
Trường học Trường Đại Học Công Nghệ Thông Tin - ĐH Quốc Gia TP.HCM
Chuyên ngành Kỹ Thuật Phần Mềm
Thể loại Báo cáo thực tập
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 827,38 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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[.]

Trang 1

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

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

Trang 2

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

Trang 3

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à quý 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 toà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 quý thầy cô để bài báo cáo hoàn thiện hơn

Em xin chân thành cảm ơn

Trần Minh Cường

TP HCM, 22/12/2022

Trang 4

NHẬ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 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

Trang 6

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)

Trang 7

- 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 Ngoà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

Trang 8

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 Hoàn toà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, quá 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

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…

Kết quả : Hiểu thêm về công ty Shub JSC, 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

Trang 9

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ý Git-repository 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ở

Trang 10

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

Trang 11

Chính vì vậy nếu tuân 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 hoá quá 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 quát hoá 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 quá 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

Trang 12

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 hoá 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

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

TỪ KHÓA LIÊN QUAN