Nguyễn Quốc Dũng Chung Thá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 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[.]
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, smartphone ngày phát triển gần trở thành phần thiếu sống người Bên cạnh đó, ta có hệ điều hành dành cho smartphone phổ biến iOS android Khi nghiệp vụ ngành nghề tin học hóa, thực ứng dụng di động dẫn đến ứng dụng xuất ngày nhiều giúp cải thiện đời sống người Với mong muốn đưa nghiệp vụ ngành nghề vào ứng dụng nhằm giúp sống người cải thiện Vì lý này, em định chọn lập trình ứng dụng di động cho việc học tập Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tham gia mơi trường chun nghiệp Vì vậy, em định chọn Công ty TNHH Giải pháp Phần mềm Tường Minh – TMA Technology Group - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực dự định 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ó hội thực tập cơng ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình nhóm trainer, nhóm thực tập chúng em tiếp thu kiến thức quan trọng để làm ứng dụng dành cho iOS Chân thành cảm ơn anh chị nhóm trainer bỏ 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 Đặc biệt cảm ơn anh Ngơ Lâm Quang Tín, training iOS, Objective C kĩ git trình làm việc nhóm, hướng dẫn, giúp đỡ cho em tận tình khó khăn cơng việc, đến 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ị kỹ làm việc nhóm; cảm ơn anh Nguyễn Hồng Thuận review code điểm em cần khắc phục q trình làm việc trao đổi nhóm Cũng xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo 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 Giới thiệu công ty TMA Technology Group Sản phẩm công ty Chương 2: Nội dung thực tập Tìm hiểu cơng ty kỹ công ty Nghiên cứu kỹ thuật Thực project 12 Lịch làm việc 12 Chương 3: Chi tiết project 14 Giới thiệu ứng dụng 14 Thực 14 Kế hoạch 14 TÀI LIỆU THAM KHẢO 15 Nguyễn Quốc Dũng Chung Thái Dung Chương 1: Giới thiêu cơng ty thực tập Hình 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 – thành lập năm 1997 nhằm cung cấp phần mềm outsource chất lượng cho công ty hang đầu giới TMA công ty outsource lớn Việt Nam với 3800 kỹ sư Đội ngũ kỹ sư tuyển chọn từ nguồn lực công nghệ thông tin lớn Việt Nam, đào tạo hoàn thành nhiều dự án lớn Sau 25 năm phát triển, quy mô đội ngũ kỹ sư tăng từ đến 3800 2 Hình 2 Sản phẩm 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 khả mở rộng cao sử dụng nhiều công nghệ khác (.Net, Java, C/C++, PHP, Python, Ruby, iOS, Android, Cloud, database, SharePoint, v.v…) Khơng vậy, cơng ty cịn phát triển nhiều ứng dụng quan trọng sứ mệnh lớn cho công ty hàng đầu lĩnh vực viễn thông & mạng, tài & 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 ứ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ì hỗ trợ Implementation Phát triển phần mềm dựa thiết kế ban đầu Phát triển mô-đun thành phần dự án phát Nguyễn Quốc Dũng Chung Thái Dung triển phần mềm đa đối tác Sustaining Bảo trì phần mềm có, sửa lỗi, phát triển tính mới, v.v Porting & Migration Chuyển phần mềm sang ngôn ngữ lập trình tảng khác Di chuyển hệ thống cũ sang công nghệ để cải thiện hiệu suất giảm chi phí bảo trì hỗ trợ Nguyễn Quốc Dũng Chung Thái Dung 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 đào tạo toàn diện lập trình ứng dụng cho iOS, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, giao tiếp Tại cơng ty, sinh viên có hội học tập, khám phá làm việc mơi trường phát triển phần mềm chun nghiệp Tìm hiểu công ty kỹ công ty Thời gian : ngày Nội dung : Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu công ty, trình thành lập 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ông ty Ngồi ra, thực tập sinh cịn giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc… Kết : Hiểu thêm cơng ty TMA, q trình thành lập phát triển Có thêm kỹ việc sử dụng email cơng việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc Thời gian : ngày Nội dung : Tìm hiểu cơng cụ sử dụng 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 cơng cụ giúp ích cho 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 số đó: Nguyễn Quốc Dũng Chung Thái Dung - Gitlab: công cụ quản lý source code project tồn nhóm Cách commit, push, pull tạo merge request nhằm tránh conflict trình thực dự án - Redmine: cơng cụ quản lý cơng việc nhóm nhằm quản lý tiến độ công việc cá nhân, task Thực : Thực hành sử dụng phần mềm nêu Kết : Làm quen với Gitlab, Redmine sử dụng command line để commit/pull/push 2.2 Tìm hiểu ngôn ngữ Objective C Thời gian : ngày (1 tuần) Nội dung : Đọc tài liệu hướng dẫn tìm hiểu 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 ngơn ngữ có mục đích chung phát triển dựa ngơn ngữ Lập trình C cách thêm tính ngơn ngữ lập trình Small Talk khiến trở thành ngơn ngữ hướng đối tượng Nó chủ yếu sử dụng việc phát triển hệ điều hành iOS Mac OS X ứng dụng Ban đầu, Objective-C phát triển NeXT cho hệ điều hành NeXTSTEP họ, từ Apple tiếp quản cho iOS 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 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 - Cài đặt môi trường cho ngôn ngữ Objective C Sử dụng XCode version macOS tạo project dùng ngơn ngữ Objective C - Lập trình hướng đối tượng Objective C Các kiến thức lập trình hướng đối tượng khái niêm, đặc tính tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình Objective C Nguyễn Quốc Dũng Chung Thái Dung Thực : - Tham gia đầy đủ buổi training công ty - Làm thực hành, kiểm tra kiến thức học - Đọc tài liệu hướng dẫn - Xem source code mẫu Kết : - Nâng cao kỹ lập trình với ngơn ngữ Objective C - Có kiến thức quan trọng cho việc lập trình ứng dụng iOS sau - Ngồi cịn biết thêm số quy tắc việc viết code cho chuẩn, dễ đọc, dễ hiểu 2.3 Tìm hiểu cách tạo ứng dụng iOS Thời gian : ngày (1 tuần) Nội dung : Đọc tài liệu hướng dẫn tìm hiểu cách tạo ứng dụng iOS - Định nghĩa iOS: iOS hệ điều hành điện thoại di động phát triển Apple phân phối độc quyền cho phần cứng Apple Ban đầu, iOS cơng bố năm 2007 cho iPhone, sau mở rộng để hỗ trợ thiết bị khác Apple iPod Touch (tháng năm 2007), iPad (tháng năm 2010), iPad Mini (tháng 11 năm 2012) hệ thứ hai Apple Ttivi trở (tháng năm 2010) Hiện iOS hệ thứ 16 (iOS 16.x) - Cách tạo project Single page application XCode Nắm cách tạo single page application XCode phiên dung ngơn ngữ lập trình Objective C Cấu trúc iOS application - Life-cycle ứng dụng iOS Cách app khởi động: o Khi người dùng mở điện thoại khơng có ứng dụng chạy ngồi app nằm OS Nguyễn Quốc Dũng Chung Thái Dung o Khi user nhấn vào icon app để vào app, Springboard kích hoạt app App với thư viện thực thi tải vào nhớ, Springboard hiển thị hình launch screen app Sau app bắt đầu chạy application delegate nhận notification o Các method thực thi theo trình tự sau: application:willFinishLaunchingWithOptions: Đây method gọi AppDelegate Method gọi sau app khởi chạy thành công application:didFinishLaunchingWithOptions: Method gọi trước window app hiển thị applicationDidBecomeActive: Method gọi để báo cho app biết chuyển trạng thái từ In-Active sang Active applicationWillResignActive: Method gọi để báo cho app biết chuyển từ trạng thái Active sang In-Active applicationDidEnterBackground: Method gọi để báo cho app biết khơng chạy foreground, có khoảng tầm giây để thực thi task applicationWillEnterForeground: Method gọi phần việc chuyển trạng thái từ Background sang Active, nên dùng method để hoàn thành thay đổi app trước xuống Background applicationDidBecomeActive: gọi method hoàn thành việc chuyển trạng thái app từ In-Active sang Active applicationWillTerminate : Method gọi app bị hệ thống khai tử khỏi nhớ - Tìm hiểu delegate iOS: Giả dụ đối tượng A gọi đối tượng B để thực 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 thực hành động cần thiết Nguyễn Quốc Dũng Chung Thái Dung Những khái niệm ví dụ trên: o A đối tượng delegate B o B có reference A o A implement delegate methods B o B notify đến A thông qua delegate methods - Tìm hiểu UI elements iOS Để thiết kế giao diện cho ứng dụng, XCode cho phép kéo thả UI element vào hình giao diện (.xib) để tạo giao diện cho ứng dụng Sau ta tạo field đặt tên cho element code để thực action - Tìm hiểu design pattern architecture pattern Trong trình tham khảo source code, hiểu cách thực hoạt động mẫu thiết kế observer Bên cạnh đó, cịn tìm hiểu architecture pattern: o MVC (Model – View – Controller) Model: Quản lý liệu View : Nơi hiển thị liệu cho người dùng Controller : Là nơi xử lý yêu cầu gửi đến Xử lý input người dùng chuyển xuống model model có update controller nhận data đẩy lên View Hình o MVVM (Model – View - ViewModel) Nguyễn Quốc Dũng Chung Thái Dung Tương tự MVC, ViewModel lớp trung gian View Model ViewModel xem thành phần thay cho Controller mô hình MVC Nó chứa mã lệnh cần thiết để thực data binding, command Hình o MVP ( Model – View – Presenter) Mơ hình MVP gần giống với mơ hình MVC Nó kế thừa từ mơ hình MVC, Controller thay bới Presenter Mơ hình chia ứng dụng thành phần chính: Model, View Presenter Trong đó, Presenter nhận input người dùng thông qua View, xử lý liệu người dùng với trợ giúp Model trả kết View Presenter giao tiếp với View qua interface Interface định nghĩa lớp Presenter(với cần truyền liệu) Nguyễn Quốc Dũng Chung Thái Dung 10 Hình o VIPER (View – Interactor – Presentor – Entity – Routing) Mẫu kiến trúc VIPER sử dụng cho ứng dụng iOS, VIPER bao gồm : View - Interactor - Presenter - Entity – Routing View : hiển thị giao diện dựa hướng dẫn Presenter đồng thời tiếp nhận input truyền tới Presenter Interactor : Chứa business logic tùy theo use case tương ứng Presenter : Chứa view logic để hiển thị ( nhận kết từ interactor), nhận input người dùng gửi yêu cầu tới interactor Entity : Các model object sử dụng interactor ROUTING : điều khiển việc hiển thị hình Nguyễn Quốc Dũng Chung Thái Dung 11 Hình Thực : - Làm thực hành, kiểm tra kiến thức học - Đọc tài liệu hướng dẫn - Xem source code mẫu Kết : - Có kiến thức quan trọng cho việc lập trình ứng dụng iOS sau - Hiểu cách hoạt động ứng dụng iOS 2.4 Các kỹ mềm Thời gian: Nội dung: Các kỹ mềm cần thiết cho q trình làm việc nhóm - Cách làm việc nhóm thái độ làm việc - Kỹ giao tiếp - Cấu trúc email cách viết email Thực : - Tham gia đầy đủ buổi training Kết quả: 2.5 Áp dụng kỹ học trình thực tập Lập trình ứng dụng iOS XCode Nội dung : Tạo giao diện cho iOS - Tạo giao diện iOS áp dụng delegate: Nguyễn Quốc Dũng Chung Thái Dung 12 Tự tìm hiểu tạo single page application, cụ thể hình đăng nhập áp dụng delegate tìm hiểu life-cycle iOS Thực : - Tham gia đầy đủ buổi training - Nghiên cứu tìm hiểu method iOS Kết quả: - Tạo giao diện thành công áp dụng delegate Thực project Sau tuần training thực hành, thực tập sinh nắm kiến thực Objective C, lập trình ứng dụng iOS Objective C Trong tuần tiếp theo, thực tập sinh áp dụng kiến thức học để áp dụng vào project iOS Chi tiết project nói phần sau Lịch làm việc Mức Công việc Tuần Người hướng độ Nhận xét người dẫn hoàn hướng dẫn thành - Tìm hiểu cơng ty, Anh Ngơ Lâm cách tổ chức cơng Quang Tín ty - Anh Làm quen với Quốc Dũng công cụ làm việc Anh cơng ty - Nguyễn Nguyễn Hồng Thuận Học cách trao đổi, làm việc qua email - 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 project làm Đọc source code - Tìm hiểu lập trình Anh Ngơ Lâm ứng dụng iOS dùng Quang Tín ngơn ngữ Objective C - Thực hành giao diện - Đọc source code - Đọc source code Anh Ngơ Lâm - Tìm hiểu project Quang Tín - Test chức Anh Nguyễn project Hoàng Thuận release - Đọc source code - Giải bug Quang Tín 5,6,7,8 project - Anh Ngơ Lâm Anh Nguyễn Nhận review code từ Hồng Thuận anh mentor Nguyễn Quốc Dũng Chung Thái Dung 14 Chương 3: Chi tiết project Giới thiệu ứng dụng Ứng dụng sản phẩm có nghiệp vụ dành cho cứu hộ gọi khẩn cấp Hiện ứng dụng hoàn thành phiên Android cần phát triển phía iOS Source code project cần refactor từ version trước update để fix lỗi iOS Thực Chung Thái Dung giúp đỡ anh Ngơ Lâm Quang Tín, Nguyễn Hồng Thuận, Nguyễn Quốc Dũng Kế hoạch - Đọc source code đồng thời build thiết bị để nắm flow hình ứng dụng - Take notes ghi làm để tránh conflict trình push merge code - Liên tục update tiến trình thực tập sinh lúc tham gia làm project - Đọc bug ticket fix để hiểu project mà thực tập sinh tham gia - Đọc mơ tả bug có project để tìm root cause solution cho bug Đồng thời take note anh team review code thực tập sinh Kết quả: - Fix bug tồn đọng - Refactor code 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 https://www.tmasolutions.com/about-us [2] Objective-C Tutorial – Tutorialspoint https://www.tutorialspoint.com/objective_c/index.htm [3] iOS - Objective-C Tutorial – Tutorialspoint https://www.tutorialspoint.com/ios/ios_objective_c.htm [4] iOS life-cycle – Apple developers https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_ap p_s_life_cycle?language=objc [5] MVC MVP MVVM architecture pattern https://medium.com/@ankit.sinhal/mvc-mvp-and-mvvm-design-pattern-6e169567bbad [6] VIPER architecture pattern - viblo https://viblo.asia/p/gioi-thieu-ve-kien-truc-viper-OEqGj6QPG9bL [6] Getting Started with the VIPER Architecture Pattern | Kodeco, the new raywenderlich.com https://www.kodeco.com/8440907-getting-started-with-the-viper-architecture-pattern#tocanchor-003 Nguyễn Quốc Dũng Chung Thái Dung ... 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 đào tạo toàn diện lập trình ứng dụng cho iOS, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, giao tiếp... project Sau tuần training thực hành, thực tập sinh nắm kiến thực Objective C, lập trình ứng dụng iOS Objective C Trong tuần tiếp theo, thực tập sinh áp dụng kiến thức học để áp dụng vào project iOS... ngành nghề vào ứng dụng nhằm giúp sống người cải thiện Vì lý này, em định chọn lập trình ứng dụng di động cho việc học tập Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn