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

Báo Cáo Thực Tập Lập Trình Ứng Dụng Cho Ios.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 (458.14 KB, 21 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

LẬP TRÌNH ỨNG DỤNG CHO IOS

Cơng ty thực tập

: TMA Technology Group

Người phụ trách

: Anh Nguyễn Quốc Dũng

Thực tập sinh

: Chung Thái Dung

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

Nguyễn Quốc Dũng

Chung Thái Dung


LỜI MỞ ĐẦU
Ngày nay, khi smartphone ngày càng phát triển và gần như trở thành một phần không thể
thiếu trong cuộc sống con người. Bên cạnh đó, ta có 2 hệ điều hành dành cho smartphone phổ
biến nhất hiện nay là iOS và android.
Khi nghiệp vụ của các ngành nghề dần dần được tin học hóa, được hiện thực trong các


ứng dụng di động dẫn đến các ứng dụng mới xuất hiện ngày càng nhiều giúp cải thiện đời sống
con người. Với mong muốn được đưa nghiệp vụ của các ngành nghề vào trong các ứng dụng
nhằm giúp cuộc sống con người cải thiện hơn. Vì lý do này, em quyết định chọn lập trình ứng
dụng di động cho việc học tập của mình.
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. Vì vậy, em quyết định chọn Cơng ty
TNHH Giải pháp Phần mềm Tường Minh – TMA Technology Group - một 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.

Nguyễn Quốc Dũng

Chung Thái Dung


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty TNHH Giải pháp Phần mềm Tường Minh đã 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, nhóm
thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được ứng dụng
dành cho 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 hồn thành đợt thực tập này.
Đặc biệt cảm ơn anh Ngô Lâm Quang Tín, đã training iOS, Objective C và kĩ năng git
trong q trình làm việc nhóm, 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ảm ơn anh Nguyễn Quốc
Dũng đã hỗ trợ em làm quen với môi trường mới, hỗ trợ thiết bị và kỹ năng làm việc nhóm; cảm
ơn anh Nguyễn Hoàng Thuận đã review code và chỉ ra những điểm em cần khắc phục trong quá
trình làm việc và trao đổi nhóm
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.

Chung Thái Dung
TPHCM, 15/12/2022

Nguyễn Quốc Dũng

Chung Thái Dung


NHẬN XÉT CỦA KHOA
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................

Nguyễn Quốc Dũng


Chung Thái Dung


MỤC LỤC
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 TMA Technology Group ....................................................................... 1
2. Sản phẩm của công ty .......................................................................................................... 2
Chương 2: Nội dung thực tập......................................................................................................... 4
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ....................................................... 4
2. Nghiên cứu kỹ thuật ............................................................................................................. 4
3. Thực hiện project ............................................................................................................... 12
4. Lịch làm việc ..................................................................................................................... 12
Chương 3: Chi tiết về project ....................................................................................................... 14
1. Giới thiệu về ứng dụng ...................................................................................................... 14
2. Thực hiện ........................................................................................................................... 14
3. Kế hoạch ............................................................................................................................ 14
TÀI LIỆU THAM KHẢO ........................................................................................................... 15

Nguyễn Quốc Dũng

Chung Thái Dung


1

Chương 1: Giới thiêu cơng ty thực tập

Hình 1


1. Giới thiệu công ty TMA Technology Group
Công ty TNHH Giải pháp Phần mềm Tường Minh – TMA Technology Group –
được thành lập năm 1997 nhằm cung cấp các phần mềm outsource chất lượng cho
các công ty hang đầu trên thế giới. TMA là một trong những công ty outsource lớn
nhất Việt Nam với 3800 kỹ sư. Đội ngũ kỹ sư được tuyển chọn từ nguồn lực công
nghệ thông tin lớn của Việt Nam, được đào tạo bài bản và đã hoàn thành nhiều dự án
lớn.
Sau hơn 25 năm phát triển, quy mô đội ngũ kỹ sư đã tăng từ 6 đến 3800.


2

Hình 2

2. Sản phẩm của cơng ty
Với 25 năm làm việc, TMA đã cung cấp hàng trăm sản phẩm phần mềm doanh
nghiệp đòi hỏi chất lượng và khả năng mở rộng cao sử dụng nhiều công nghệ khác
nhau (.Net, Java, C/C++, PHP, Python, Ruby, iOS, Android, Cloud, database,
SharePoint, v.v…). Không chỉ vậy, cơng ty cịn phát triển nhiều ứng dụng quan
trọng trong sứ mệnh lớn cho các công ty hàng đầu trong lĩnh vực viễn thơng &
mạng, tài chính & bảo hiểm, thương mại điện tử & bán lẻ.
Công ty có dịch vụ phát triển đa dạng như:
Full-Cycle

Software Phát triển các ứng dụng phần mềm từ ý tưởng kinh doanh

Development

đến triển khai: phân tích u cầu, thiết kế, mã hóa, thử
nghiệm, triển khai, bảo trì và hỗ trợ


Implementation

Phát triển phần mềm dựa trên thiết kế ban đầu
Phát triển các mô-đun và thành phần của các dự án phát

Nguyễn Quốc Dũng

Chung Thái Dung


3

triển phần mềm đa đối tác
Sustaining

Bảo trì phần mềm hiện có, sửa lỗi, phát triển các tính năng
mới, v.v.

Porting & Migration

Chuyển phần mềm sang các ngơn ngữ lập trình hoặc nền
tảng khác nhau.
Di chuyển các hệ thống cũ sang các công nghệ mới để cải
thiện hiệu suất và giảm chi phí bảo trì và hỗ trợ.

Nguyễn Quốc Dũng

Chung Thái Dung



4

Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình ứng dụng iOS” nhằm 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 ứng dụng cho iOS, đồ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 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 TMA, 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

Thời gian : 2 ngày
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.
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.Đồng thời thực tập sinh làm quen với hệ điều
hành macOS. Một số phần mềm trong số đó:

Nguyễn Quốc Dũng

Chung Thái Dung


5

-

Gitlab: là công cụ quản lý source code project của tồn bộ nhóm. Cách
commit, push, pull và tạo merge request nhằm tránh các conflict trong quá
trình thực hiện dự án.

-

Redmine: là cơng cụ quản lý cơng việc của nhóm nhằm quản lý tiến độ công
việc của từng cá nhân, từng task

Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Làm quen với Gitlab, Redmine và sử dụng command line để
commit/pull/push
2.2.

Tìm hiểu ngơn ngữ Objective C

Thời gian : 5 ngày (1 tuần)
Nội dung : Đọc tài liệu hướng dẫn và tìm hiểu về ngơn ngữ Objective C nhằm phát

triển ứng dụng dành cho iOS
-

Ngôn ngữ Objective C:
Objective-C là ngơn ngữ có mục đích chung được phát triển dựa trên ngơn ngữ
Lập trình C bằng cách thêm các tính năng của ngơn ngữ lập trình Small Talk
khiến nó trở thành ngơn ngữ hướng đối tượng. Nó chủ yếu được sử dụng trong
việc phát triển hệ điều hành iOS và Mac OS X cũng như các ứng dụng của nó.
Ban đầu, Objective-C được phát triển bởi NeXT cho hệ điều hành NeXTSTEP
của họ, từ đó nó đã được Apple tiếp quản cho iOS và Mac OS X.
Objective-C hỗ trợ đầy đủ lập trình hướng đối tượng, bao gồm bốn đặc điểm
chính của lập trình hướng đối tượng: tính kế thừa, tính đóng gói, tính ảo hóa, tính
đa hình trong

-

Cài đặt mơi trường cho ngơn ngữ Objective C
Sử dụng XCode version mới nhất của macOS tạo project dùng ngơn ngữ
Objective C

-

Lập trình hướng đối tượng trong Objective C
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niêm, các đặc tính
như tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình trong Objective C.

Nguyễn Quốc Dũng

Chung Thái Dung



6

Thực hiện :
-

Tham gia đầy đủ các buổi training của công ty.

-

Làm các bài thực hành, kiểm tra về kiến thức đã học.

-

Đọc tài liệu hướng dẫn

-

Xem source code mẫu

Kết quả :
-

Nâng cao kỹ năng lập trình với ngơn ngữ Objective C

-

Có được những kiến thức quan trọng cho việc lập trình ứng dụng iOS sau này.

-


Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho đúng
chuẩn, dễ đọc, dễ hiểu.

2.3.

Tìm hiểu cách tạo ứng dụng iOS

Thời gian : 4 ngày (1 tuần)
Nội dung : Đọc tài liệu hướng dẫn và tìm hiểu về cách tạo ứng dụng iOS
-

Định nghĩa về iOS:
iOS là một hệ điều hành điện thoại di động được phát triển bởi Apple và phân
phối độc quyền cho phần cứng của Apple. Ban đầu, iOS được công bố năm 2007
cho iPhone, sau đó được mở rộng để hỗ trợ các thiết bị khác của Apple như iPod
Touch (tháng 9 năm 2007), iPad (tháng 1 năm 2010), iPad Mini (tháng 11 năm
2012) và thế hệ thứ hai của Apple Ttivi trở đi (tháng 9 năm 2010).
Hiện tại iOS đã có thế hệ thứ 16 (iOS 16.x).

-

Cách tạo một project Single page application trong XCode
Nắm được cách tạo một single page application trong XCode phiên bản mới nhất
dung ngơn ngữ lập trình Objective C. Cấu trúc của một iOS application.

-

Life-cycle của một ứng dụng iOS
Cách một app khởi động:

o Khi người dùng mở điện thoại thì sẽ khơng có ứng dụng nào chạy ngoài
những app nằm trong OS.

Nguyễn Quốc Dũng

Chung Thái Dung


7

o Khi user nhấn vào icon của app để vào app, Springboard sẽ kích hoạt app.
App cùng với các thư viện sẽ được thực thi và tải vào trong bộ nhớ, trong
khi đó Springboard sẽ hiển thị màn hình launch screen của app. Sau đó app
sẽ bắt đầu được chạy và application delegate sẽ nhận được các notification.
o Các method sẽ được thực thi theo trình tự sau:
application:willFinishLaunchingWithOptions: Đây là method đầu tiên
được gọi trong AppDelegate. Method này sẽ được gọi sau khi app đã khởi
chạy thành công
application:didFinishLaunchingWithOptions: Method này được gọi trước
khi window của app được hiển thị.
applicationDidBecomeActive: Method này được gọi để báo cho app biết
khi nó chuyển trạng thái từ In-Active sang Active.
applicationWillResignActive: Method này được gọi để báo cho app biết
rằng nó sắp chuyển từ trạng thái Active sang In-Active.
applicationDidEnterBackground: Method này được gọi để báo cho app biết
nó đang khơng chạy ở dưới foreground, có khoảng tầm 5 giây để thực thi
các task .
applicationWillEnterForeground: Method này được gọi như là 1 phần trong
việc chuyển trạng thái từ Background sang Active, nên dùng method này
để hoàn thành các thay đổi đối với app trước khi nó xuống Background.

applicationDidBecomeActive: được gọi ngay khi method này đã hoàn
thành việc chuyển trạng thái của app từ In-Active sang Active.
applicationWillTerminate : Method này được gọi khi app sắp bị hệ thống
khai tử khỏi bộ nhớ.
-

Tìm hiểu về delegate của iOS:
Giả dụ đối tượng A gọi đối tượng B để thực hiện một hành động. Khi hành động
hoàn thành, đối tượng A cần phải biết B đã hoàn thành task và thực hiện các hành
động cần thiết.

Nguyễn Quốc Dũng

Chung Thái Dung


8

Những khái niệm chính trong ví dụ trên:
o A là đối tượng delegate của B
o B sẽ có reference của A
o A sẽ implement delegate methods của B
o B sẽ notify đến A thơng qua delegate methods
-

Tìm hiểu về các UI elements của iOS
Để thiết kế giao diện cho ứng dụng, XCode cho phép kéo thả các UI element vào
màn hình giao diện (.xib) để tạo giao diện cho ứng dụng. Sau đó ta có thể tạo các
field và đặt tên cho element đó trong code để thực hiện các action.


-

Tìm hiểu về design pattern và architecture pattern
Trong quá trình tham khảo source code, hiểu được cách hiện thực và hoạt động
của mẫu thiết kế observer. Bên cạnh đó, cịn tìm hiểu các architecture pattern:
o MVC (Model – View – Controller)
Model: Quản lý dữ liệu
View : Nơi hiển thị dữ liệu cho người dùng
Controller : Là nơi xử lý các yêu cầu được gửi đến. Xử lý input của người
dùng chuyển xuống model hoặc model có update thì controller sẽ nhận data và
đẩy lên View

Hình 3
o MVVM (Model – View - ViewModel)

Nguyễn Quốc Dũng

Chung Thái Dung


9

Tương tự như MVC, ViewModel cũng là lớp trung gian giữa View và Model.
ViewModel có thể được xem là thành phần thay thế cho Controller trong mơ
hình MVC. Nó chứa các mã lệnh cần thiết để thực hiện data binding,
command.

Hình 4
o MVP ( Model – View – Presenter)
Mơ hình MVP cũng gần giống với mơ hình MVC. Nó được kế thừa từ mơ

hình MVC, trong đó Controller được thay thế bới Presenter. Mơ hình này
chia ứng dụng thành 3 phần chính: Model, View và Presenter.
Trong đó, Presenter sẽ nhận input của người dùng thông qua View, rồi xử
lý dữ liệu của người dùng với sự trợ giúp của Model và trả kết quả về
View. Presenter giao tiếp với View qua interface. Interface được định
nghĩa trong lớp Presenter(với cái nó cần truyền dữ liệu).

Nguyễn Quốc Dũng

Chung Thái Dung


10

Hình 5
o VIPER (View – Interactor – Presentor – Entity – Routing)
Mẫu kiến trúc VIPER được sử dụng cho các ứng dụng iOS, VIPER bao
gồm : View - Interactor - Presenter - Entity – Routing.
View : hiển thị giao diện dựa trên hướng dẫn của Presenter đồng thời tiếp
nhận input và truyền tới Presenter
Interactor : Chứa các business logic tùy theo use case tương ứng.
Presenter : Chứa view logic để hiển thị ( nhận kết quả từ interactor), nhận
input của người dùng và gửi yêu cầu tới interactor.
Entity : Các model object được sử dụng bởi interactor
ROUTING : điều khiển việc hiển thị các màn hình.

Nguyễn Quốc Dũng

Chung Thái Dung



11

Hình 6

Thực hiện :
-

Làm các bài thực hành, kiểm tra về kiến thức đã học.

-

Đọc tài liệu hướng dẫn

-

Xem source code mẫu

Kết quả :
-

Có được những kiến thức quan trọng cho việc lập trình ứng dụng iOS sau này.

-

Hiểu được cách hoạt động của một ứng dụng iOS.

2.4.

Các kỹ năng mềm


Thời gian: 8 giờ
Nội dung: Các kỹ năng mềm cần thiết cho q trình làm việc nhóm
-

Cách làm việc nhóm và thái độ làm việc

-

Kỹ năng giao tiếp

-

Cấu trúc email và cách viết email

Thực hiện :
-

Tham gia đầy đủ các buổi training.

Kết quả:
2.5.

Áp dụng các kỹ năng đã được học trong quá trình thực tập
Lập trình ứng dụng iOS trên XCode

Nội dung : Tạo ra một giao diện cơ bản cho iOS
-

Tạo giao diện iOS cơ bản áp dụng delegate:


Nguyễn Quốc Dũng

Chung Thái Dung


12

Tự tìm hiểu tạo một single page application, cụ thể là màn hình đăng nhập áp
dụng delegate và tìm hiểu life-cycle của iOS.
Thực hiện :
-

Tham gia đầy đủ các buổi training.

-

Nghiên cứu và tìm hiểu các method của iOS

Kết quả:
-

Tạo một giao diện thành công và áp dụng được delegate

3. Thực hiện project
Sau 3 tuần được training và thực hành, thực tập sinh đã nắm được những kiến thực cơ
bản về Objective C, lập trình ứng dụng iOS bằng Objective C. Trong tuần tiếp theo, thực
tập sinh áp dụng những kiến thức đã học để áp dụng vào project trên iOS
Chi tiết project sẽ được nói ở phần sau.


4. Lịch làm việc
Mức
Cơng việc

Tuần

Người hướng

độ

Nhận xét của người

dẫn

hồn

hướng dẫn

thành
-

Tìm hiểu về công ty, Anh Ngô Lâm
cách tổ chức của công Quang Tín
ty.

1

-

Anh


Làm quen với các Quốc Dũng
cơng cụ làm việc trong Anh
cơng ty.

-

Nguyễn

Nguyễn

Hồng Thuận

Học cách trao đổi, làm
việc qua email.

2

-

Nguyễn Quốc Dũng

Tìm hiểu ngơn ngữ lập Anh Ngơ Lâm

Chung Thái Dung


13

trình Objective C


Quang Tín

Thực hành Objective

-

C
Đọc

-

storyboard

về

project sẽ được làm
Đọc source code

-

Tìm hiểu về lập trình Anh Ngơ Lâm
ứng dụng iOS dùng Quang Tín
ngơn ngữ Objective C

3

-

Thực hành giao diện

cơ bản

-

4

Đọc source code

-

Đọc source code

Anh Ngơ Lâm

-

Tìm hiểu về project

Quang Tín

-

Test các chức năng Anh

Nguyễn

của project đã được Hoàng Thuận
release
-


Đọc source code

-

Giải quyết các bug của Quang Tín

5,6,7,8

project
-

Anh Ngơ Lâm

Anh

Nguyễn

Nhận review code từ Hoàng Thuận
anh mentor

Nguyễn Quốc Dũng

Chung Thái Dung


14

Chương 3: Chi tiết về project
1. Giới thiệu về ứng dụng
Ứng dụng là một sản phẩm có nghiệp vụ dành cho cứu hộ hoặc các cuộc gọi khẩn cấp.

Hiện tại ứng dụng này đã hoàn thành phiên bản Android và cần phát triển ở phía iOS.
Source code của project cũng cần refactor từ các version trước và update để fix các lỗi ở
iOS mới nhất.

2. Thực hiện
Chung Thái Dung và sự giúp đỡ của anh Ngơ Lâm Quang Tín, Nguyễn Hoàng Thuận,
Nguyễn Quốc Dũng.

3. Kế hoạch
-

Đọc source code và đồng thời build trên thiết bị để nắm flow của các màn hình
trong ứng dụng.

-

Take notes những ghi chú khi làm để tránh conflict trong quá trình push và merge
code.

-

Liên tục update tiến trình của thực tập sinh lúc tham gia làm project

-

Đọc các bug trong ticket đã được fix để hiểu hơn về project mà thực tập sinh đang
được tham gia

-


Đọc các mơ tả về bug hiện có trong project để tìm root cause và solution cho bug
đó. Đồng thời take note khi các anh trong team review code của thực tập sinh.

Kết quả:
-

Fix những bug còn tồn đọng

-

Refactor code sao cho phù hợp với team.

Nguyễn Quốc Dũng

Chung Thái Dung


15

TÀI LIỆU THAM KHẢO
[1] TMA Solutions website
/>[2] Objective-C Tutorial – Tutorialspoint
/>[3] iOS - Objective-C Tutorial – Tutorialspoint
/>[4] iOS life-cycle – Apple developers
/>p_s_life_cycle?language=objc
[5] MVC MVP MVVM architecture pattern
/>[6] VIPER architecture pattern - viblo
a/p/gioi-thieu-ve-kien-truc-viper-OEqGj6QPG9bL
[6] Getting Started with the VIPER Architecture Pattern | Kodeco, the new
raywenderlich.com

/>
Nguyễn Quốc Dũng

Chung Thái Dung



×