Mục tiêu của thực tập này là hiểu rõ quy trình phát triển ứng dụng từ đầu đến cuối, đồng thời nắm vững các công nghệ và công cụ tiên tiến nhất để tạo ra sản phẩm chất lượng và đáp ứng yê
Trang 1TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ NHA TRANG
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN TIN HỌC
-***** -BÁO CÁO THỰC TẬP CƠ BẢN Ngành: Công Nghệ Thông Tin
Đề tài : Phát triển ứng dụng di động
Họ và tên : Lê Văn Tường Lớp : CĐ-CNTT16B Giáo viên hướng dẫn : Đặng Phú Quốc
Khánh Hòa – 2023
1
Trang 2MỤC LỤC Chương I : MỞ ĐẦU
1 Lời mở đầu 1
2 Giới thiệu đơn vị thực tập 2
Chương II : PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG 1.Tổng quan về phát triển ứng dụng di động 2
2 Công cụ và ngôn ngữ lập trình 2
2.1 Android Studio và Java/Kotlin 2
2.2 Xcode và Swift 3
2.3 Frameworks phổ biến (React Native, Flutter) 3
3 Thiết kế giao diện người dùng (UI/UX) 8
3.1 Nguyên tắc thiết kế 8
3.2 Công cụ thiết kế (Sketch, Adobe XD) 12
4 Phát triển ứng dụng 24
4.1 Lập trình front-end 24
4.2 Lập trình back-end và API 27
4.3 Quản lý cơ sở dữ liệu 37
5 Kiểm thử và triển khai ứng dụng
5.1 Kiểm thử tự động và thủ công
5.2 Triển khai ứng dụng lên App Store và Google Play
Chương III: QUẢN LÝ DỰ ÁN VÀ BẢO TRÌ ỨNG DỤNG 1 Quản lý dự án phần mềm 44
1.1 Phương pháp Agile và Scrum
1.2 Công cụ quản lý dự án (Jira, Trello)
2 Bảo trì và cập nhật ứng dụng 54
2.1 Theo dõi và sửa lỗi 54
2.2 Cập nhật tính năng mới 55
3 Xu hướng và tương lai của ứng dụng di động 59
3.1 Công nghệ mới (AI, IoT)
3.2 Tối ưu hóa hiệu suất và bảo mật
KẾT LUẬN 62
TÀI LIỆU THAM KHẢO 63
Trang 3CHƯƠNG I: MỞ ĐẦU
1 Lời mở đầu:
1.1 Bối cảnh:
Trong thời đại mà công nghệ số ngày càng đóng vai trò quan trọng, ứng dụng di động trở thành trung tâm của cuộc sống hàng ngày Sự gia tăng về sự phổ biến và sức ảnh hưởng của điện thoại thông minh đã mở ra những cơ hội mới và đặt ra thách thức cho cộng đồng phát triển Điều này đặt ra câu hỏi về cách chúng ta tận dụng công nghệ di động để giải quyết các vấn đề và đáp ứng nhanh chóng nhu cầu ngày càng đa dạng của người dùng
1.2 Mục tiêu của Thực tập:
Việc thực tập trong lĩnh vực phát triển ứng dụng di động không chỉ là cơ hội để học hỏi mà còn là sân chơi để áp dụng kiến thức đã học vào thực tế Mục tiêu của thực tập này là hiểu rõ quy trình phát triển ứng dụng từ đầu đến cuối, đồng thời nắm vững các công nghệ và công cụ tiên tiến nhất để tạo ra sản phẩm chất lượng và đáp ứng yêu cầu người dùng
1.3 Tầm quan trọng của Phát triển Ứng dụng Di động:
Trong ngữ cảnh ngày nay, việc phát triển ứng dụng di động không chỉ là sự cạnh tranh giữa các doanh nghiệp mà còn đóng góp vào sự tiện lợi và hiệu quả trong cuộc sống hàng ngày của mọi người Ứng dụng di động không chỉ là giao diện để truy cập thông tin mà còn là công cụ tạo ra trải nghiệm người dùng tốt nhất, từ giải trí đến công việc hàng ngày Quá trình phát triển ứng dụng di động không chỉ là công việc kỹ thuật
mà còn là sự kết hợp tài năng sáng tạo và hiểu biết sâu sắc về nhu cầu của cộng đồng
2 Giới thiệu đơn vị thực tập
Công ty TNHH T&T Ninh Hòa
2.1 Thông tin chung:
2.1.1 Thành lập và Đại diện pháp luật:
Công ty TNHH T&T Ninh Hòa được thành lập vào ngày 08/07/2020, có mã số thuế 4201897059 Ông Đặng Phú Quốc là đại diện pháp luật của công ty
2.1.2 Địa chỉ trụ sở chính:
Trụ sở chính của công ty đặt tại Đường 16/07, Tổ dân phố 17, Phường Ninh Hiệp,
Thị xã Ninh Hoà, Tỉnh Khánh Hòa
2.2 Lịch sử hình thành và phát triển:
3
Trang 4Công ty TNHH T&T Ninh Hòa được thành lập với mục tiêu cung cấp các giải
pháp xây dựng và dịch vụ chất lượng cao, đáp ứng nhu cầu đa dạng của thị trường Suốt quãng thời gian kể từ khi thành lập, công ty đã không ngừng phát triển, mở rộng quy mô và nâng cao năng lực kỹ thuật
2.3 Sứ mệnh và tầm nhìn:
Với tầm nhìn trở thành một trong những công ty hàng đầu trong lĩnh vực xây dựng
và cơ điện lạnh, T&T Ninh Hòa cam kết mang lại những sản phẩm và dịch vụ tốt nhất, góp phần vào sự phát triển bền vững của cộng đồng và xã hội
2.4 Các dự án tiêu biểu:
Công ty đã thực hiện nhiều dự án quan trọng trong lĩnh vực xây dựng công trình cấp, thoát nước và các công trình kỹ thuật dân dụng khác Mỗi dự án được thực hiện với sự chú trọng cao độ vào chất lượng và an toàn, đảm bảo sự hài lòng của khách hàng và đối tác
2.5 Trải nghiệm thực tập:
Trong quá trình thực tập tại Công ty TNHH T&T Ninh Hòa, tôi đã có cơ hội đặc biệt để tham gia vào các dự án thực tế Điều này giúp tôi áp dụng kiến thức đã học và phát triển kỹ năng chuyên môn trong một môi trường làm việc chuyên nghiệp Sự hỗ trợ và hướng dẫn tận tâm từ đội ngũ chuyên gia của công ty đã giúp tôi trải nghiệm một cách toàn diện quá trình làm việc trong lĩnh vực xây dựng và cơ điện lạnh
Trang 5CHƯƠNG II: PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG
1.Tổng quan về Phát triển Ứng dụng Di động:
Phát triển ứng dụng di động bao gồm thiết kế, xây dựng và duy trì các ứng dụng phù hợp với thiết bị di động như điện thoại thông minh và máy tính bảng Quá trình này tận dụng nhiều ngôn ngữ lập trình, khung và công cụ, trong đó phổ biến nhất là Java và Kotlin cho Android và Swift và Objective-C cho iOS
Xu hướng Phát triển Ứng dụng Di động Hiện tại
Một số xu hướng phát triển ứng dụng di động hiện tại bao gồm:
- Trí tuệ nhân tạo (AI) và Học máy (ML)
- Thực tế tăng cường (AR) và thực tế ảo (VR)
- Ứng dụng IoT di động
- Thanh toán di động
- Ứng dụng di động dựa trên đám mây
- Kết nối 5G
Triển vọng trong Tương lai
Triển vọng của ngành phát triển ứng dụng di động trong tương lai có thể bao gồm:
- Metaverse: Một thế giới thực tế ảo nơi người dùng có thể tương tác với môi trường
do máy tính tạo ra
- Blockchain: Công nghệ này đang được sử dụng trong nhiều ứng dụng, từ bảo mật
dữ liệu y tế đến giám sát chuỗi cung ứng và hậu cần
- AI và ML: Các công nghệ này đã thay đổi đáng kể cuộc sống của các chủ sở hữu công ty và sẽ tiếp tục phát triển trong tương lai
2 Công cụ và ngôn ngữ lập trình:
2.1 Android Studio và Java/Kotlin:
Android Studio là môi trường phát triển tích hợp chính thức (IDE) cho việc phát
triển ứng dụng Android, được xây dựng và phân phối bởi Google IDE này bao gồm các công cụ giúp các nhà phát triển phần mềm thiết kế, xây dựng, chạy và kiểm thử phần mềm, trong trường hợp này là các ứng dụng cho nền tảng Android Android Studio cung cấp nhiều tính năng như:
- Compose design tools: Tạo layout động với Jetpack Compose và xem trước layout trên mọi kích cỡ màn hình
- Intelligent code editor: Viết mã tốt hơn, làm việc nhanh hơn và tăng năng suất với trình soạn thảo mã thông minh hỗ trợ hoàn thành mã cho các ngôn ngữ lập trình Kotlin, Java và C/C++
5
Trang 6- Flexible build system: Hệ thống xây dựng linh hoạt cho phép bạn tùy chỉnh build để tạo ra nhiều biến thể build cho các thiết bị Android khác nhau từ một dự án duy nhất
- Android Emulator: Kiểm thử ứng dụng trên nhiều thiết bị Android khác nhau Khi nói đến việc lựa chọn giữa Java và Kotlin, có một số điểm khác biệt cần lưu ý:
- Cú pháp: Kotlin có cú pháp ngắn gọn hơn Java, điều này có nghĩa là nó đòi hỏi ít mã hơn để thực hiện cùng một thao tác
- An toàn với giá trị null: Kotlin kiểm soát các tham chiếu null thông qua hệ thống kiểu dữ liệu
- Lambda expressions và Inline functions: Kotlin cung cấp các biểu thức lambda và inline functions cho phép tạo ra các cấu trúc điều khiển tùy chỉnh hiệu suất cao
- Extension functions: Kotlin cho phép tạo ra các hàm mở rộng, trong khi Java không
hỗ trợ tính năng này
- Coroutines: Kotlin hỗ trợ coroutines, giúp làm việc với các ứng dụng đa luồng dễ dàng hơn
Tóm lại, Kotlin cung cấp một cú pháp ngắn gọn hơn, an toàn với giá trị null và các tính năng ngôn ngữ hiện đại khác, làm cho nó trở thành một lựa chọn hấp dẫn cho các
dự án mới hoặc các nhà phát triển đang học ngôn ngữ đầu tiên của họ Java có một hệ sinh thái rộng lớn hơn và là tiêu chuẩn công nghiệp cho nhiều ứng dụng
2.2 Xcode và Swift:
Xcode là môi trường phát triển tích hợp (IDE) chính thức của Apple dành cho việc
phát triển ứng dụng trên các nền tảng của Apple như iOS, macOS, watchOS và tvOS Xcode cung cấp một loạt công cụ hỗ trợ nhà phát triển từ việc tạo ứng dụng, kiểm thử, tối ưu hóa và nộp ứng dụng lên App Store Một số tính năng nổi bật của Xcode bao gồm:
- Giao diện người dùng trực quan: Xcode có công cụ thiết kế UI đẹp mắt và dễ sử dụng
- Hỗ trợ hoàn thành mã: Xcode giúp viết mã nhanh hơn và an toàn hơn với tính năng hoàn thành mã nâng cao
- Simulator: Kiểm thử ứng dụng trên nhiều thiết bị giả lập khác nhau khi thiết bị thực
tế không có sẵn
- Instruments: Công cụ phân tích và cải thiện hiệu suất ứng dụng và theo dõi sử dụng tài nguyên hệ thống
Swift là ngôn ngữ lập trình được phát triển bởi Apple, ra mắt lần đầu vào năm
2014 Swift là ngôn ngữ lập trình đa mô hình, hướng đối tượng, hàm, mệnh lệnh và có
Trang 7cấu trúc khối Swift được thiết kế để làm việc một cách an toàn và nhanh chóng, với
cú pháp đơn giản nhưng mạnh mẽ Một số đặc điểm của Swift bao gồm:
- Hiệu suất cao: Swift được biên dịch thành mã máy, tối ưu hóa cho hiệu suất
- An toàn: Swift giúp phát hiện lỗi phần mềm một cách dễ dàng hơn thông qua các tính năng như kiểm soát null pointer dereferencing
- Mở rộng: Swift hỗ trợ khái niệm mở rộng, cho phép áp dụng hệ thống mở rộng cho các loại, cấu trúc và giao thức
- Concurrency: Swift 5.5 mở rộng hỗ trợ cho concurrency và mã bất đồng bộ, đặc biệt
là giới thiệu một phiên bản độc đáo của mô hình actor
Swift không chỉ phù hợp cho việc phát triển ứng dụng di động mà còn có thể sử dụng cho việc lập trình hệ thống, ứng dụng máy tính để bàn và dịch vụ đám mây Với
sự hỗ trợ mạnh mẽ từ Xcode, Swift trở thành ngôn ngữ lập trình chính cho việc phát triển ứng dụng trên các nền tảng của Apple…
2.3 Frameworks phổ biến (React Native, Flutter):
Khi đánh giá các framework phát triển ứng dụng đa nền tảng như React Native và Flutter, có một số yếu tố quan trọng cần xem xét:
React Native:
Ưu điểm:
- Cộng đồng lớn và hỗ trợ từ Facebook
- Khả năng tái sử dụng mã và hot-reloading
- Hiệu suất gần với ứng dụng native
Nhược điểm:
- Có thể gặp khó khăn khi triển khai các tính năng phức tạp hoặc tùy chỉnh cao
- Phụ thuộc vào các thành phần native của nền tảng mục tiêu ⁴
Flutter:
Ưu điểm:
- Hiệu suất cao với các widget tùy chỉnh và độc lập với nền tảng
- Hỗ trợ tốt từ Google và cập nhật thường xuyên
- Tạo ra các ứng dụng với giao diện người dùng đẹp và mượt mà
Nhược điểm:
- Kích thước ứng dụng lớn hơn so với React Native
- Công cụ và thư viện có thể chưa đa dạng bằng React Native
Cả hai framework đều có khả năng phát triển ứng dụng đa nền tảng với cùng một
mã nguồn, giúp tiết kiệm chi phí và thời gian phát triển Tuy nhiên, lựa chọn giữa
7
Trang 8React Native và Flutter phụ thuộc vào yêu cầu cụ thể của dự án, kinh nghiệm của nhóm phát triển và các yếu tố khác như kích thước ứng dụng, hiệu suất và tính năng tùy chỉnh
Trong một số trường hợp, Flutter có thể cho hiệu suất cao hơn và khả năng tùy chỉnh UI tốt hơn² React Native lại có lợi thế về cộng đồng lớn và khả năng tích hợp chặt chẽ với các thành phần native³ Cả hai đều là những lựa chọn tốt và có thể mang lại kết quả tuyệt vời cho các dự án phát triển ứng dụng di động Điều quan trọng là phải xác định rõ các yêu cầu của dự án để chọn lựa framework phù hợp nhất
3 Thiết kế giao diện người dùng (UI/UX):
3.1 Nguyên tắc thiết kế UI/UX:
Trong thiết kế giao diện người dùng (UI) và trải nghiệm người dùng (UX), có một
số nguyên tắc cơ bản mà các nhà thiết kế nên tuân theo để tạo ra các sản phẩm dễ sử dụng, hấp dẫn và hiệu quả Dưới đây là một số nguyên tắc quan trọng:
- Đơn giản hóa (Simplicity): Giao diện nên đơn giản, dễ hiểu và không rối rắm Mục tiêu là giảm thiểu sự phức tạp và tạo ra một trải nghiệm người dùng mượt mà
- Tập trung vào người dùng (User-Centered Design): Thiết kế nên tập trung vào nhu cầu và mong muốn của người dùng, đảm bảo rằng sản phẩm cuối cùng phản ánh cách
sử dụng của họ
- Tính nhất quán (Consistency): Các yếu tố thiết kế nên nhất quán trên toàn bộ sản phẩm, từ màu sắc, phông chữ, nút và biểu tượng, giúp người dùng dễ dàng nhận biết
và sử dụng
- Rõ ràng (Clarity): Mọi thông tin trên giao diện nên rõ ràng và dễ hiểu, giúp người dùng không phải đoán mò về cách thức hoạt động của sản phẩm
- Khả năng truy cập (Accessibility): Sản phẩm nên dễ truy cập cho tất cả mọi người, bao gồm cả những người có khuyết tật¹
- Thử nghiệm và phản hồi (Testing & Feedback): Thường xuyên thử nghiệm thiết kế với người dùng thực tế và thu thập phản hồi để cải thiện sản phẩm
- Hiệu suất (Efficiency): Thiết kế nên giúp người dùng hoàn thành công việc của họ một cách nhanh chóng và hiệu quả
Các nguyên tắc này giúp định hình cách thức thiết kế sản phẩm để đảm bảo rằng người dùng có thể tương tác với sản phẩm một cách dễ dàng và thoải mái Việc áp dụng những nguyên tắc này sẽ giúp tạo ra những sản phẩm không chỉ đẹp về mặt thẩm
mỹ mà còn mang lại trải nghiệm người dùng tốt nhất
3.2 Công cụ thiết kế (Sketch, Adobe XD):
Trang 9Khi so sánh Sketch và Adobe XD, hai công cụ thiết kế phổ biến, có một số ưu và nhược điểm cần được xem xét:
Sketch:
Ưu điểm:
- Tập trung vào thiết kế UI/UX: Sketch được thiết kế đặc biệt cho thiết kế giao diện người dùng và trải nghiệm người dùng
- Hệ thống plugin mạnh mẽ: Có một thư viện plugin lớn, được tải về từ bên ngoài, giúp mở rộng chức năng
- Hỗ trợ tốt cho hệ thống thiết kế: Cung cấp các công cụ quản lý màu sắc và kiểm soát hệ thống thiết kế một cách chặt chẽ
Nhược điểm:
- Chỉ dành cho MacOS: Sketch chỉ có sẵn trên hệ điều hành MacOS, không hỗ trợ Windows hay Linux
Adobe XD:
Ưu điểm:
- Đa nền tảng: Adobe XD có thể sử dụng trên MacOS, Windows, iOS và Android
- Tích hợp với Creative Cloud: Dễ dàng tích hợp với các sản phẩm khác của Adobe
- Hỗ trợ prototyping bằng giọng nói: Cung cấp khả năng tạo mẫu bằng giọng nói và các công cụ vẽ mạnh mẽ
Nhược điểm:
- Giao diện người dùng: Một số người dùng cảm thấy giao diện của Adobe XD có thể gây nhầm lẫn và khó sử dụng so với Sketch
Cả Sketch và Adobe XD đều có những đặc điểm mạnh riêng biệt và phù hợp với các nhu cầu khác nhau của người dùng Sketch có lợi thế về hệ thống plugin và quản
lý hệ thống thiết kế, trong khi Adobe XD nổi bật với khả năng hỗ trợ đa nền tảng và tích hợp chặt chẽ với các sản phẩm khác của Adobe Lựa chọn giữa hai công cụ này phụ thuộc vào yêu cầu cụ thể của dự án và sở thích cá nhân của người thiết kế Đối với những người dùng đã quen thuộc với hệ sinh thái của Adobe, XD có thể là lựa chọn tốt hơn, trong khi những người dùng MacOS có thể ưu tiên Sketch vì sự tương thích và hệ thống plugin mạnh mẽ của nó
4 Phát triển ứng dụng:
4.1 Lập trình front-end:
Quy trình lập trình giao diện người dùng thường bao gồm các bước sau:
1 Xác định yêu cầu của khách hàng: Đây là bước đầu tiên và quan trọng nhất, nơi bạn hiểu rõ nhu cầu và mục tiêu của khách hàng
9
Trang 102 Nghiên cứu và thu thập thông tin: Bước này giúp bạn hiểu rõ hơn về đối tượng người dùng và cách họ tương tác với sản phẩm
3 Tạo wireframe và mockup: Đây là bước thiết kế sơ bộ và chi tiết giao diện, giúp hình dung rõ ràng về sản phẩm cuối cùng
4 Xây dựng prototype: Prototype là phiên bản đầu tiên có thể tương tác được, giúp kiểm tra và đánh giá tính khả thi của thiết kế
5 Thiết kế giao diện người dùng: Bao gồm việc chọn bố cục, màu sắc, kiểu chữ, và đồ họa phù hợp với thương hiệu và mục tiêu của sản phẩm
6 Phát triển front-end: Sử dụng các ngôn ngữ lập trình như HTML, CSS, và JavaScript để biến thiết kế thành một trang web hoặc ứng dụng thực tế
7 Kiểm tra và đánh giá: Thực hiện UI Test và Unit Tests để kiểm tra trục trặc và đảm bảo sản phẩm hoạt động mượt mà
8 Tối ưu hóa và triển khai: Sau khi kiểm tra, tối ưu hóa hiệu suất và triển khai sản phẩm lên môi trường sản xuất
Các kỹ thuật lập trình front-end cần thiết bao gồm:
- HTML/CSS: Là nền tảng cơ bản để tạo ra giao diện người dùng
- JavaScript/jQuery: Để thêm chức năng và tương tác cho trang web
- Framework của JavaScript: Như AngularJS, ReactJS giúp cung cấp cấu trúc cho mã JavaScript
- Frontend frameworks: Hỗ trợ CSS như Bootstrap giúp tạo ra giao diện đẹp mắt và nhất quán
- CSS Preprocessing: Giúp tăng tốc độ coding cho CSS
- Responsive và Mobile Design: Đảm bảo trang web hoạt động tốt trên mọi thiết bị và kích thước màn hình
- Testing/Debugging: Kiểm tra và sửa lỗi để cải thiện chất lượng sản phẩm
4.2 Lập trình back-end và API:
Lập trình back-end và API là hai khía cạnh quan trọng trong việc phát triển ứng dụng web hoặc di động Dưới đây là một số thông tin chi tiết về chúng:
Lập trình back-end là quá trình xây dựng và duy trì phần lõi của ứng dụng, nơi xử
lý logic nghiệp vụ, quản lý cơ sở dữ liệu, và giao tiếp với front-end thông qua API Công việc này thường đòi hỏi kiến thức về các ngôn ngữ lập trình như Java, Python, Ruby, hoặc Node.js và kỹ năng làm việc với cơ sở dữ liệu và máy chủ
API (Application Programming Interface) là một tập hợp các quy tắc và định nghĩa cho phép các ứng dụng khác nhau giao tiếp với nhau Trong bối cảnh web,