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ữ
Trang 1ĐẠ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
Trang 2MỤ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
Trang 3LỜ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
Trang 4LỜ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
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
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
Trang 7đầ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 toà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 chuyên 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 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 Fractal, 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 & Cơ bản về Swift
Thời gian: 2 tuần
Trang 8- 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
Trang 9Kế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)
Tìm hiểu về
Swift, làm quen
với xCode &
macOS
Cách khai báo biến: let & var Điều kiện rẽ nhánh: if else,
guard else, switch case
Vòng lặp: For, while
Sử dụng Break
& Continue
Array: một chiều
và đa chiều Thao tác với Array: thêm, xóa, sửa, truy xuất
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,
Kiểu dữ liệu optional, phân biệt và sử dụng ?
Và ! Khi unwrap
Kiểu dữ liệu hỗn hợp: Tuples
Các hàm xử lý nâng cao của mảng: filtter, map, reduce, flatmap
Viết ứng dụng
đầu tiên, build
máy thật & máy
ảo
Toán tử số học:
+, -, *, /, %
Trang 10Vòng đời của
app
Toán tử so sánh:
>, <, =>, =<, ==,
!=, ===, !==
Tuần 2: Giới thiệu và làm quen với Xcode & Swift (Part 2)
Dictionary: cách
thao tác(thêm,
xóa, sửa, truy
xuất) & khai báo
Ex Hàm: cách khai
báo, dữ liệu vào
& dữ liệu ra
Struct, Class, Num: Sử dụng, phân biệt & so sách
Protocol: Cách khai báo và sử dụng
Quan hệ của
dictionary với
cấu trúc JSON
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
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
Trang 11UIViewController &
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,
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
Bắt giá trị, thay đổi thuộc tính,
UITabbarController,
UINavigationControll
er: Cách chuyển màn
hình, set root
Custom cell, bắt gía trị cho từng cell
Custom cell, bắt giá trị cho từng cell
So sánh tableView
vs collectionView
Tuần 4: Auto Layout, Animation, Gesture
Gesture: Tap, Long
Press, shake,
Auto layout các thành phần của UIKit trên cả iPhone &
iPad (SizeClass)
Ex 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
Location service,
Camera, Push local
notification
CoreData, UserDefaults vs KeychainAccess
Tìm hiểu về CocoaPods, GoogleMap, Firebase - PushNotification
SwiftAsync: Đa luồng, Alamofire, Mapping json to ObjectMapper, Codable with
Ex
Trang 12
Tuần 6: Media, Coding Convention & Distribute App
Coding convention:
Link
Đọc & ghi
dữ liệu lên
bộ nhớ thiết
bị
Truy cập, thêm, xóa, sửa: Danh
bạ, hình ảnh, thư mục,
Ex
How to Distribute App
Tuần 7: Design Pattern & Software Architecture
Tìm hiểu & so sánh
về MVC vs MVP
Viết demo về
mô hình MVC &
MVP
Tìm hiểu về Viper Viết demo về Viper
Ex
Tuần 8: Ứng dụng
Tham gia dự án &
release app Testflight
& adhoc
Ex
Trang 13Chươ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:
Trang 144 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:
Trang 15Chươ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