ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
-----&-----
BÁO CÁO THỰC TẬP DOANH NGHIỆP
LẬP TRÌNH ỨNG DỤNG DI ĐỘNG iOS
Nơi thực tập: Cơng ty Cổ phần Công Nghệ Fractal
Sinh viên thực hiện: Nguyễn Thành Long
Mã số sinh viên: 18520092
TP. HCM, ngày 10 tháng 6 năm 2022
MỤC LỤC
LỜI MỞ ĐẦU................................................................................................................................ 2
LỜI CẢM ƠN................................................................................................................................ 3
NHẬN XÉT CỦA KHOA............................................................................................................. 4
CHƯƠNG 1: GIỚI THIỆU VỀ CÔNG TY THỰC TẬP .......................................................... 5
1. GIỚI THIỆU VỀ CÔNG TY FRACTAL: .......................................................................................... 5
2. NHỮNG SẢN PHẨM CỦA CÔNG TY: ............................................................................................. 5
CHƯƠNG 2: NỘI DUNG THỰC TẬP ....................................................................................... 6
1. TÌM HIỂU VỀ CƠNG TY VÀ KỸ NĂNG CƠ BẢN TRONG CÔNG TY .................................................. 6
2. NGHIÊN CỨU KỸ THUẬT: ............................................................................................................ 6
3. LỊCH LÀM VIỆC ........................................................................................................................... 8
CHƯƠNG 3: CHI TIẾT VỀ PROJECT................................................................................... 12
1. GIỚI THIỆU VỀ ỨNG DỤNG ........................................................................................................ 12
2. HÌNH ẢNH CỦA ỨNG DỤNG ........................................................................................................ 12
3. NHỮNG NGƯỜI THỰC HIỆN DỰ ÁN: ........................................................................................... 12
4. TRÁCH NHIỆM DỰ ÁN ................................................................................................................ 13
5. KẾT QUẢ ĐẠT ĐƯỢC KHI THỰC HIỆN DỰ ÁN ............................................................................. 13
CHƯƠNG 4: TỔNG KẾT .......................................................................................................... 14
1. NHẬN XÉT ĐÁNH GIÁ VỀ CÔNG TY ............................................................................................ 14
2. KINH NGHIỆM ĐẠT ĐƯỢC ......................................................................................................... 14
CHƯƠNG 5: TÀI LIỆU THAM KHẢO .................................................................................. 14
1
LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp mobile 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 vô cùng mạnh mẽ, ứng dụng
mobile đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế
giới, cả về phần cứng và phần mềm.
Với sự phát triển nhanh chóng của các thiết bị di động kéo theo sự gia tăng
của thị phần ứng dụng mobile. Hiện nay các ứng dụng mobile là một phần không
thể thiếu trên chiếc smartphone của mỗi chúng ta.
Từ lâu, trong quá trình học tập tại trường, em đã định hướng bản thân trở
thành một lập trình viên Ứng dụng di động chuyên nghiệp nên em đã tìm tịi về các
cơng nghệ di động, các ngôn ngữ và đăng ký các môn chuyên ngành lập trình ứng
dụng di động.
Sau quá trình tự học và làm đồ án, em cảm thấy bản thân đã sẵn sàng để xin
thực tập để có thể học hỏi, tiếp thu nhiều kiến thức hơn trong ngành này. Do đó em
đã đăng ký mơn thực tập và bắt đầu tìm kiếm công việc. Rất may mắn cộng với
những nỗ lực, em đã trúng tuyển vào Công ty Cổ phần Công Nghệ Fractal
2
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty Cổ phần Công Nghệ Fractal đã 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 nhóm
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 nền tảng iOS. Chân thành cảm ơn các anh chị trong nhóm trainer đã
bỏ ra 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 này.
Đặc biệt cảm ơn anh Đạt – Leader Team Mobile, anh Long – Senior iOS
Developer, đã training iOS cho em, hướng dẫn, giúp đỡ cho em tận tình cả những
khó khăn trong cơng việc, đến những khó khăn việc làm quen với môi trường mới.
Cũng như hướng dẫn các quy trình làm việc trong cuộc sống thực tế là như thế nào.
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.
3
NHẬN XÉT CỦA KHOA
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
4
Chương 1: Giới thiệu về Công ty thực tập
1. Giới thiệu về Công ty Fractal:
Được thành lập từ tháng 7 năm 2017, Fractal là công ty phần mềm chuyên
cung cấp các dịch vụ phát triển ứng dụng bán hàng và tiếp thị. Các dịch vụ này
được phát triển dành riêng cho đặc thù doanh nghiệp trong việc thu thập và phân
tích dữ liệu khách hàng.
Trong thời gian vừa qua, Fractal luôn nỗ lực hết sức để trở thành một trong
những cái tên nổi bật và đáng tin cậy trong cộng đồng công ty công nghệ tại Việt
Nam. Đáp ứng nhu cầu của khách hàng cũng chính là mục tiêu kinh doanh mà
Fractal hướng tới.
2. Những sản phẩm của Công ty:
Fractal đã có cơ hội hợp tác với đa số các công ty nổi tiếng trong ngành:
FMCG, Dược phẩm, Giao thông vận tải, Bán lẻ & Thương mại điện tử. Chúng tôi
tập trung vào các dịch vụ cung cấp giải pháp DMS, Outsourcing – Digital
Production và Loyalty System.
2.1. DMS:
DMS là một giải pháp toàn diện để quản lý hệ thống phân phối trực
tuyến - Một hình thức rất phổ biến trong các mơ hình sản xuất: Nhà
sản xuất - Nhà phân phối - Đại lý - bán lẻ.
2.2. Outsourcing, Digital Production:
Với dịch vụ Outsourcing, Digital Production, Fractal tự hào có thể
cung cấp cho khách hàng những dịch vụ được thiết kế theo tiêu chuẩn
riêng của từng mơ hình doanh nghiệp. Bằng việc theo sát những mơ
hình sẵn có, Giải pháp Ouutsourcing đảm bảo chất lượng sản phẩm
5
đầu ra - không bị ảnh hưởng bởi giá cả cạnh tranh và các giải pháp hiệu quả về chi
phí.
2.3. Loyalty System:
Xây dựng sự gắn kết và lòng trung thành của khách hàng. Loyalty
System là một nền tảng được xây dựng nhằm phát triển và nuôi dưỡng
mối quan hệ với nhóm khách hàng đã sử dụng dịch vụ. Hệ thống này
cho phép tiếp cận khách hàng bằng chiến lược đa kênh, khuyến khích
lịng trung thành bằng các hình thức tặng thưởng và dự đoán các hành vi
mua hàng trong tương lai.
Chương 2: Nội dung thực tập
Đợt thực tập với mục đích giúp sinh viên thực tập được đào tạo tồn diện về
lập trình các phần mềm nghiệp vụ bằng các công nghệ đặc thù, đồ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 phát triển
phần mềm chun nghiệp.
1. Tìm hiểu về cơng ty và 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. 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 Fractal, 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.
2. Nghiên cứu kỹ thuật:
2.1. Các công cụ làm việc & Cơ bản về Swift
Thời gian: 2 tuần
Nội dung: Tìm hiểu về các cơng cụ sẽ được sử dụng trong q trình làm việc.
Tìm hiểu về các cơng cụ và ngơn ngữ sẽ được sử dụng trong quá trình làm việc tại
Fractal như:
6
- Skype: để liên lạc giữa các thành viên.
- Jira: quản lý dự án
- Git để quản lý mã nguồn
- Xcode
- Cơ bản về ngôn ngữ Swift
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Hiểu được về quy trình làm việc và các cơng cụ dùng trong quy trình
2.2. Các thư viện UIKit của Swift
Thời gian: 1 tuần
Nội dung: Tìm hiểu về các thư viện có trong UIKit
Tìm hiểu các thư viên cơ bản thiết kế giao diện như Storyboard, Xib. Cũng như các
thư viện phổ biến như UIView, UIViewController, UIButton, UILabel,
UITableview, …
Thực hiện: Thực hành tìm hiểu cách sử dụng các thư viện trên.
Kết quả: Hiểu được các áp dụng của các thư viện này trong dự án.
2.3. Cách xử lý Auto Layout, Animation, Gesture:
Thời gian: 1 tuần
Nội dung: Tìm hiểu các nội dung về UI như Auto Layout các thành phần UIKit
trong iPhone & iPad, cơ bản về các Animation, Gesture như: Long press, Double
Tap, ..
Thực hiện: Đọc tài liệu và viết các chương trình demo cơ bản
Kết quả: Hiểu được cơ chế hoạt động của Auto Layout và Animation cơ bản.
2.4. Các Service của hệ thống: Cocoapods, Libs & RestAPI
Thời gian: 1 tuần
Nội dung: Tìm hiểu cơ bản về Cocoapods, các loại thư viện hay được áp dụng.
Cũng như tìm hiểu về RestAPI. Và tìm hiểu về Local Data
Thực hiện: Đọc tài liệu và viết các chương trình demo cơ bản
Kết quả:
- Vận dụng được CocoaPods để tiến hành tích hợp các thư viện biên ngoài
- Áp dụng được các thư viện phổ biến như: Firebase, Google Maps.
- Các loại lưu trữ ở trong máy local như: User Default, Core Data
2.5. Coding Convention & Distribute App
Thời gian: 1 tuần
Nội dung: Tìm hiểu các chuẩn Coding Convention của Swift. Học được cách
Distribute App lên Appstore & TestFlight
Thực hiện: Đọc tài liệu và thực hiện demo
7
Kết quả:
- Hiểu được các quy chuẩn code chung của Swift
- Biết cách Distribute App lên Testflight
2.6. Design Pattern & Architecture
Thời gian: 1 tuần
Nội dung: Tìm hiểu các mơ hình kiến trúc MVC, MVP & Viper
Thực hiện: Đọc tài liệu và viết các chương trình demo cơ bản
Kết quả:
- Vận dụng được các mơ hình MVC và MVP trong dự án.
- Đặc biệt là biết được mơ hình Clean Architecture của iOS Swift là Viper
3. Lịch làm việc
Khi bắt đầu thực tập, công ty và các anh training đã gửi em một bảng kế
hoạch thực tập sẵn để em thực hiện như sau:
Tuần 1: Giới thiệu và làm quen với Xcode & Swift (Part 1)
Ngày 1
Ngày 2
Tìm hiểu về
Swift, làm quen
với xCode &
macOS
Cách khai báo
biến: let & var
Cấu trúc của một
ứng dụng iOS
bằng xCode &
quy trình thiết kế
Kiểu dữ liệu cơ
bản & các hàm
xử lý: Int,
Double, String,
...
Viết ứng dụng
đầu tiên, build
máy thật & máy
ảo
Toán tử số học:
+, -, *, /, %
Ngày 3
Điều kiện rẽ
nhánh: if else,
guard else,
switch case
Ngày 4
Array: một chiều
và đa chiều
Sử dụng Break
& Continue
Thao tác với
Array: thêm,
xóa, sửa, truy
xuất
Kiểu dữ liệu
Kiểu dữ liệu hỗn
optional, phân
hợp: Tuples
biệt và sử dụng ?
Và ! Khi unwrap
8
Ngày 5
Vòng lặp: For,
while
Các hàm xử lý
nâng cao của
mảng: filtter,
map, reduce,
flatmap
Vịng đời của
app
Tốn tử so sánh:
>, <, =>, =<, ==,
!=, ===, !==
Tuần 2: Giới thiệu và làm quen với Xcode & Swift (Part 2)
Ngày 1
Dictionary: cách
thao tác(thêm,
xóa, sửa, truy
xuất) & khai báo
Ngày 2
Ngày 3
Hàm: cách khai
báo, dữ liệu vào
& dữ liệu ra
Ex
Quan hệ của
dictionary với
cấu trúc JSON
Ngày 4
Struct, Class,
Num: Sử dụng,
phân biệt & so
sách
Ngày 5
Protocol: Cách
khai báo và sử
dụng
Closure: cách
khai báo, dữ liệu
vào & dữ liệu ra
So sách
Dictionary vs
Array
Tuần 3: UIKit và các thành phần cơ bản
Ngày 1
Ngày 2
Ngày 3
Ngày 4
Ngày 5
Thiết kế giao diện với
storyboard, xib
UILabel,
UIButton,
UITextField,
UIImageVie
w,
WKWebVie
w
UITableView
&
UITableViewC
ell
UICollectionView
&
UICollectionViewC
ell
UIScrollVie
w, UISlider,
UIStackVie
w
9
UIViewController &
UIView: vịng đời,
các thuộc tính &
phương thức
Các thuộc
tính của đối
tượng: màu,
font, text, bắt
sự kiện, ....
UITabbarController,
UINavigationControll
er: Cách chuyển màn
hình, set root
Các phương
thức của
tableView,
thêm, xóa, sửa
Các phương thức
của collectionView,
thêm, xóa, sửa
Custom cell,
bắt gía trị cho
từng cell
Custom cell, bắt giá
trị cho từng cell
Bắt giá trị,
thay đổi
thuộc tính, ...
So sánh tableView
vs collectionView
Tuần 4: Auto Layout, Animation, Gesture
Ngày 1
Gesture: Tap, Long
Press, shake, ...
Ngày 2
Auto layout
các thành
phần của
UIKit trên cả
iPhone &
iPad
(SizeClass)
Ngày 3
Ex
Ngày 4
Ngày 5
Animation: tạo các
animation cho view
CoreGraphics:
Vẽ Line, path,
...
Tuần 5: Các Service của hệ thống, Local Data, CocoaPods – 3RD Libs & RestAPI
Ngày 1
Location service,
Camera, Push local
notification
Ngày 2
Ngày 3
CoreData,
Tìm hiểu về
UserDefaults vs CocoaPods,
KeychainAccess GoogleMap,
Firebase PushNotification
10
Ngày 4
SwiftAsync: Đa
luồng, Alamofire,
Mapping json to
ObjectMapper,
Codable with
Dynamic key
Ngày 5
Ex
Tuần 6: Media, Coding Convention & Distribute App
Ngày 1
Ngày 2
Coding convention:
Link
Đọc & ghi
dữ liệu lên
bộ nhớ thiết
bị
Ngày 3
Truy cập, thêm,
xóa, sửa: Danh
bạ, hình ảnh,
thư mục, ...
Ngày 4
Ngày 5
How to
Distribute
App
Ex
Tuần 7: Design Pattern & Software Architecture
Ngày 1
Tìm hiểu & so sánh
về MVC vs MVP
Ngày 2
Ngày 3
Viết demo về Tìm hiểu về
mơ hình
Viper
MVC &
MVP
Ngày 4
Viết demo về Viper
Ngày 5
Ex
Tuần 8: Ứng dụng
Ngày 1
Tham gia dự án &
release app Testflight
& adhoc
Ngày 2
Ex
Ngày 3
Ex
Ngày 4
Ex
11
Ngày 5
Ex
Chương 3: Chi tiết về project
1. Giới thiệu về ứng dụng
Khatoco SupApp là một ứng dụng được sử dụng nội bộ của Công ty sản xuất
thuốc lá Khatoco. Ứng dụng được các nhân viên tiếp thị của công ty để báo cáo các
thông tin về mua bán các sản phẩm thuốc lá về tổng bộ, cũng như cập nhật các
thông số của thị trường và báo cáo về KPI của những nhân viên tiếp thị đó.
2. Hình ảnh của ứng dụng
3. Những người thực hiện dự án:
- Senior iOS Developer: Quách Long & Thắng Nguyễn
- Internship tham gia: Thành Long
12
4. Trách nhiệm dự án
- Công việc: Đã được các anh tạo cơ hội để thực hiện tính năng trong dự án KPI
Nhà Phân phối
- Nội dung cơng việc:
• Xây dựng giao diện (UI) theo design có sẵn
• Thực hiện tích hợp API để lấy thơng tin và hiển thị thông tin tương ứng
5. Kết quả đạt được khi thực hiện dự án
- Đã hoàn thành được UI theo như yêu cầu.
- Vận dụng RestAPI để tích hợp API lấy thơng tin.
- Vận dụng mơ hình Viper để thực hiện dự án
- Hình ảnh về chức năng thực hiện:
13
Chương 4: Tổng kết
1. Nhận xét đánh giá về công ty
Công ty Cổ phần Công Nghệ Fractal chuyên gia công các phần mềm và giải
pháp cho các doanh nghiệp. Mặc dù là một công ty quy mô khá nhỏ (khoảng hơn
30 người) nhưng môi trường làm việc và học tập rất là năng động. Mọi người trong
công ty đều cố gắng giúp đỡ nhau để công ty ngày một phát triển cũng như cố gắng
để các dự án hoàn thành tốt nhất có thể.
2. Kinh nghiệm đạt được
Qua 2 tháng thực tập tôi đã nắm được các kiến thức cơ bản và một số kiến
thức nâng cao của lập trìnhviên iOS. Làm việc trong môi trường thực tế tôi đã hiểu
được các quy trình để phát triển một phần mềm được sử dụng thực tế là như thế
nào.
Được các anh chị training nhiệt tình, tơi đã cảm thấy tự tin hơn trên con
đường làm việc của mình. Cũng như giúp tôi phát triển hơn các kĩ năng khác như
làm việc nhóm, quản lý thời gian cũng như sự chú trọng về chất lượng đầu ra của
sản phẩm.
Chương 5: Tài liệu tham khảo
-
- />- />- />
14