TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG DI ĐỘNG VỚI FLUTTER Công ty thực tập: CÔNG TY TNHH CADENA VIỆT NAM Người phụ trách: Nguyễn T
Trang 1TRƯỜ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 DI ĐỘNG VỚI FLUTTER
Công ty thực tập: CÔNG TY TNHH CADENA VIỆT NAM
Người phụ trách: Nguyễn Trung Hiếu
Thực tập sinh: Nguyễn Huy Đức
TP Hồ Chí Minh, tháng 12 năm 2023
Trang 2LỜI MỞ ĐẦU
Trong thời đại công nghệ di động bùng nổ, điện thoại di động đã trở thành một công
cụ không thể thiếu trong cuộc sống Với hàng tỷ ứng dụng đa dạng trên các nền tảng
di động, nó mang lại sức mạnh và tiềm năng vô hạn trong việc thay đổi, kết nối và tạo
ra sự tiện ích cho thế giới xung quanh
Sau khoảng thời gian học tập tại trường, khi đã có những kiến thức và nền tảng nhất định, sinh viên được khoa CNPM tạo điều kiện và khuyến khích thực hiện học phần Thực Tập Doanh Nghiệp Đây là cơ hội tốt để sinh viên có thể áp dụng những kiến thức, kỹ năng mà bản thân đã đạt được vào sử dụng thực tế Đồng thời cũng là bước chuyển mình, chuẩn bị cần thiết cho sinh viên sớm tiếp cận với môi trường làm việc, giúp sinh viên có được cái nhìn về thị trường lao động, có được mạng lưới quan hệ cần thiết, giúp sinh viên phát triển sự nghiệp trong tương lai
Với những mong muốn trên, em đã quyết định đăng ký thực tập tại Công ty TNHH Cadena Việt Nam để giúp bản thân học hỏi cũng như trau dồi thêm kiến thức cho bản thân về nhiều mặt
2
Trang 3LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn Công Ty TNHH Cadena Việt Nam đã tạo điều kiện cho em
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 các anh chị trong team đã giúp em làm quen môi trường mới cũng như trong việc tiếp cận kiến thức công nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thực hiện tốt dự án cá nhân và dự án thực tế trong thời gian qua
Đặc biệt cảm ơn mentor Hiếu đã hướng dẫn, chia sẻ, giúp đỡ để em hòa nhập, học hỏi kinh nghiệm và hoàn thành tốt khóa thực tập này
Em 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áo cáo này
TP HCM, ngày 25 tháng 12 năm 2023
Nguyễn Huy Đức
Trang 4NHẬN XÉT CỦA KHOA
4
Trang 5
MỤC LỤC LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA KHOA 4
MỤC LỤC 5
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 Giới thiệu công ty 6
1.2 Sản phẩm công ty 6
1.3 Lịch làm việc khi thực tập tại công ty 8
CHƯƠNG 2: NỘI DUNG THỰC TẬP 9
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
2.2 Nghiên cứu kỹ thuật 9
2.2.1 Tuần 1 9
2.2.2 Tuần 2&3 10
2.2.3 Tuần 4 10
2.3 Thực hiện dự án cá nhân 11
2.3.1 Công nghệ 11
2.3.2 Mô tả dự án 11
2.3.3 Kết quả 12
CHƯƠNG 3: TỔNG KẾT 13
3.1 Điểm mạnh 13
3.2 Điểm yếu 13
3.3 Chuẩn đạt được 13
TÀI LIỆU THAM KHẢO 15
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu công ty
- Tên công ty: Công ty TNHH Cadena Việt Nam
- Lịch sử: Có nguồn gốc từ Hà Lan, có trụ sở chính tại Singapore, Cadena kết hợp niềm đam mê hướng tới sự hài lòng của khách hàng, đổi mới công nghệ và kiến thức chuyên môn sâu về ngành cũng như quy trình kinh doanh Với gần 15 năm kinh nghiệm, công ty đã phát triển trở thành một trong những nhà cung cấp Hệ thống Thông tin Nhân sự hàng đầu tại Đông Nam Á
- Website: https://www.cadena-hrmseries.com
- Lĩnh vực hoạt động: Giải pháp dịch vụ phần mềm, thiết kế và phát triển phần mềm 1.2 Sản phẩm công ty
- HRM Series 5 (https://cadena-hrmseries.com)
+ Cadena HRM Series 5 cung cấp giải pháp nhân sự hoàn chỉnh để quản lý toàn bộ vòng đời của nhân viên từ đầu đến cuối
Trang 8+ Quản lý nguồn nhân lực chiến lược - Thu hút, phát triển, khen thưởng và giữ chân nhân viên vì lợi ích của cả nhân viên cũng như toàn bộ tổ chức bằng cách sử dụng các mô-đun nhân sự chiến lược; năng lực, đánh giá hiệu quả công việc, tuyển dụng và đào tạo
+ Sự gắn kết của nhân viên - Thu hút nhân viên thông qua nhiều hoạt động chức năng tự phục vụ của nhân viên
- Paytime (https://paytime.com.sg)
+ PayTime là phần mềm chấm công được tiêu chuẩn hóa, 'nhẹ nhàng' nhưng đầy đủ dành cho các tập đoàn nhỏ hơn
+ Áp dụng các chính sách HRM của bạn trong toàn nhóm thông qua khả năng thuê nhiều người và tinh chỉnh ở cấp công ty
+ Giải pháp chấm công tất cả trong một có thể cấu hình theo nhu cầu kinh doanh riêng của bạn
+ Trao quyền cho nhân viên trong toàn nhóm bằng dịch vụ tự phục vụ của nhân viên + Thu thập thông tin chuyên sâu về hiệu suất của nhân viên để giữ chân, khen thưởng và phát triển nhân viên của bạn
- Tembo Pay (https://tembo-pay.com)
8
Trang 9+ Tembo Pay là một ứng dụng tính lương SaaS được thiết kế cho các doanh nghiệp vừa và nhỏ Ứng dụng sẵn sàng sử dụng sau khi người dùng đăng ký
+ Đơn giản hóa cách bạn thực hiện các nhiệm vụ nhân sự và tính lương hàng ngày với Tembo Pay
+ Tembo Pay giải quyết các mối lo ngại về tiền lương của bạn vì nó dễ dàng, tuân thủ, an toàn, dễ tiếp cận và tiết kiệm chi phí
1.3 Lịch làm việc khi thực tập tại công ty
● Thời gian làm việc: bắt đầu từ ngày 20/09/2023 và kết thúc vào ngày 20/12/2023
● Thời gian thực tập trong tuần (làm việc part-time): thứ hai đến thứ sáu
● Giờ làm việc: bắt đầu từ 8h30 cho đến 17h30
● Thời gian nghỉ trưa: khoảng 1 tiếng 30 phút (từ 12h – 1h30)
Trang 10CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.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: Được nghe người phụ trách giới thiệu tổng quan về công ty, bao gồm cả quá trình thành lập và phát triển của công ty, giới thiệu về sứ mệnh và mục tiêu chính của công ty, cũng như vai trò quan trọng mà nó đóng góp trong ngành công nghiệp
Bên cạnh đó, thực tập sinh cũng đã được hướng dẫn về quy trình làm việc từ cao xuống thấp trong công ty, hiểu rõ về cấu trúc tổ chức của công ty và sự phân chia nhiệm vụ giữa các bộ phận Điều này giúp em có cái nhìn tổng quan về cách thức tổ chức và phối hợp công việc
Kết quả: hiểu thêm về công ty, quá trình thành lập và phát triển, các hoạt động trong việc xây dựng phần mềm Có thêm các kỹ năng về lập trình và tư duy 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.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung: Làm quen với workflow và các công cụ sẽ được sử dụng trong quá trình làm việc
Trong quá trình thực tập, tôi đã tìm hiểu và sử dụng một số công cụ quan trọng để xây dựng ứng dụng Dưới đây là những công cụ chính mà em đã nghiên cứu và áp dụng Sử dụng phần mềm thử để kiểm tra các chức năng trong các tài liệu
● Flutter: Flutter là một framework phát triển ứng dụng di động đa nền tảng, cho phép xây dựng giao diện người dùng đẹp và tương tác trên cả iOS và Android Em đã tìm hiểu và áp dụng Flutter để phát triển giao diện và tích hợp các tính năng vào ứng dụng
● Visual Studio Code: Visual Studio Code là một trình biên tập mã nguồn mở và mạnh mẽ, hỗ trợ nhiều ngôn ngữ lập trình và tích hợp các công cụ hữu ích Em
đã sử dụng VS Code để viết và kiểm tra mã nguồn, quản lý phiên bản và thực hiện gỡ lỗi trong quá trình phát triển ứng dụng
● Git và GitHub: Em đã sử dụng Git và GitHub để theo dõi, quản lý và chia sẻ mã nguồn trong quá trình làm việc nhóm và phát triển
10
Trang 11● Figma: Figma là một công cụ thiết kế giao diện người dùng dựa trên trình duyệt, cho phép tạo và cộng tác trực tuyến trong quá trình thiết kế Em đã sử dụng Figma để tạo và xem trước các giao diện người dùng, làm việc cùng nhau
và đảm bảo sự nhất quán trong quá trình phát triển ứng dụng
● Postman: Thông thường tool này được sử dụng bởi Developers trong giai đoạn phát triển sản phẩm, cụ thể là ở bước unit test Có thể sử dụng postman hoàn toàn kiểm tra chất lượng của sản phẩm thông qua các kết quả trả về mà không cần quan tâm tới giao diện của sản phẩm
Kết quả: Việc áp dụng các công cụ này đã giúp em làm việc hiệu quả, tăng cường khả năng cộng tác và đạt được kết quả tốt trong quá trình thực tập
2.2.2 Tuần 2&3
Nội dung: Tìm hiểu Widget, API và State Management
● Flutter là thế giới của những Widget Từ một Container đơn giản cho đến một Button hay bất kỳ thành phần nào bạn tạo ra đều là Widget Widget là những khối cơ bản dùng để xây dựng và tái sử dụng Có hai loại Widget là Stateless và Stateful Widget Stateless Widget không mang trạng thái, nghĩa là một khi đã được khởi tạo, nó sẽ không thể bị thay đổi cho đến khi nó được khởi tạo lại Mặt khác, Stateful Widget động và có mang trạng thái, nghĩa là chúng có thể thay đổi trong suốt vòng đời mà không cần phải khởi tạo lại
● API (Application Programming Interface) : Hiểu đơn giản là một cách thức để một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác …Kiểu dữ liệu mà API trả về có thể là file JSON hoặc XML
● BLoC là 1 hệ thống quản lý state cho Flutter được đề nghị bởi Google developers Nó giúp lập trình viên quản lý state và luồng dữ liệu trong ứng dụng, dữ liệu được chuyển từ BLOC đến UI hoặc ngược lại từ UI xuống BLOC dưới dạng STREAMS
Kết quả: Nâng cao kỹ năng lập trình, giao diện dễ sử dụng cho người dùng, tối ưu hóa
bố trí đơn giản và hiệu quả Hiểu và áp dụng API và BloC State Management
2.2.3 Tuần 4
Nội dung: Nghiên cứu và tương tác với Backend sử dụng Flutter
Trong tuần này, em tìm hiểu cơ bản về tương tác backend để giao tiếp và trao đổi dữ liệu giữa ứng dụng di động và server backend Tìm hiểu cách gửi yêu cầu HTTP (GET, POST, PUT, DELETE) đến server backend qua RESTful API, ứng dụng di động nhận kết
Trang 12Sử dụng giao thức HTTP và thư viện HTTP: Trong quá trình tương tác với backend, Flutter hỗ trợ giao thức HTTP để gửi yêu cầu và nhận phản hồi từ server Có nhiều thư viện HTTP được sử dụng trong Flutter như http, dio, hoặc chính phương thức fetch được tích hợp sẵn trong Dart
Xử lý dữ liệu nhận được: Sau khi nhận được dữ liệu từ backend, ứng dụng di động cần xử lý và hiển thị thông tin đó cho người dùng Em cần phải phân tích dữ liệu từ định dạng JSON, chuyển đổi và lưu trữ dữ liệu vào các cấu trúc dữ liệu phù hợp trong ứng dụng
Kết quả: Em đã thành thạo các vấn đề cơ bản việc tương tác với backend và xử lý dữ liệu trong ứng dụng
2.3 Thực hiện dự án cá nhân
2.3.1 Công nghệ
● Flutter
● Dart
● Firebase
● Figma
2.3.2 Mô tả dự án
Vì lý do bảo mật và chính sách được quy định trong hợp đồng lao động, em xin không được tiết lộ các thông tin chi tiết về dự án, nhưng em vẫn sẽ có thể giới thiệu sơ lược
về các công việc em đã làm
Dự án này sử dụng Flutter để phát triển một ứng dụng di động đa nền tảng nhằm quản lý nhiệt độ và ánh sáng trong các ngôi nhà thông minh Ứng dụng này cung cấp một giao diện người dùng hiện đại và dễ sử dụng để điều khiển các thiết bị thông minh, đồng thời giúp người dùng tối ưu hóa tiện ích và tiết kiệm năng lượng
Các giai đoạn đã thực hiện:
- Nghiên cứu và phân tích:
● Phân tích các tính năng và chức năng cần thiết cho ứng dụng
● Nghiên cứu về các app có cùng tính năng trên thị trường để tham khảo
và xem xét xác định yêu cầu cụ thể
- Thiết kế bản mẫu và giao diện:
12
Trang 13● Thiết kế bản mẫu bằng công cụ Figma Bản thiết kế này sẽ cần chỉ rõ các tương tác về nút bấm, các luồng chuyển qua lại giữa các màn hình và tính năng chính của chúng
● Tạo wireframes và mockups để mô phỏng giao diện, nhận phản hồi từ mentor và điều chỉnh thiết kế
- Xây dựng và phát triển các tính năng cơ bản:
Trong giai đoạn xây dựng này, em chia nhỏ thành các công việc khác nhau và hoàn thành chúng trong thời gian đã dự tính:
● Dựng UI theo bản mẫu
● Tính năng Điều Khiển Đèn Và Nhiệt Độ
● Tính năng Lên Lịch Điều Khiển Tự Động
● Tính năng Thống Kê Tiêu Thụ Năng Lượng
● Tính năng Thông Báo Và Cảnh Báo
● Tính năng Tích Hợp Với Các Thiết Bị Thông Minh Khác
- Kiểm thử và sửa lỗi:
● Đảm bảo ứng dụng hoạt động ổn định và không có lỗi đáng kể
● Tiến hành kiểm thử chức năng và kiểm thử hiệu suất
● Sửa lỗi và điều chỉnh dựa trên kết quả kiểm thử
2.3.3 Kết quả
● Đã hoàn thiện các task được giao theo đúng tiến độ và thời gian yêu cầu
● Ứng dụng có giao diện trực quan, dễ dàng thực hiện các thao tác
● Được trao cơ hội để tiếp xúc và học thêm nhiều công nghệ mới, các kiến thức trong lĩnh vực phát triển phần mềm
● Được học hỏi nhiều kiến thức thực tiễn thông qua việc tự lập kế hoạch và xây dựng một dự án hoàn chỉnh
Trang 14CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại công ty TNHH Cadena đã giúp em cải thiện bản thân rất nhiều trong quy trình làm việc thực tế, có cơ hội phát triển và cải thiện bản thân trong vai trò một kỹ sư phần mềm Tại đây, em đã áp dụng kiến thức và kỹ năng của mình vào quá trình phát triển dự án phần mềm Thông qua dự án thực tế do công ty
đề ra, em đã học thêm được những kỹ năng mềm hữu ích và khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các tác vụ đúng hạn và đạt chất lượng tốt
3.1 Điểm mạnh
● Áp dụng kiến thức và kỹ năng: Em đã có cơ hội áp dụng kiến thức và kỹ năng của mình vào việc phát triển dự án phần mềm thực tế Điều này cho phép em trải nghiệm và rèn luyện những khả năng lập trình, thiết kế giao diện, và tương tác với backend
● Rèn luyện tác phong làm việc: Thực tập đã tôi rèn luyện tác phong làm việc của một kỹ sư phần mềm trong môi trường thực tế Có cơ hội làm việc nhóm, giao tiếp với đồng nghiệp và đồng đội, và hiểu rõ hơn về quy trình làm việc trong một công ty
● Hoàn thành tốt và đúng hạn các tasks được phân công và luôn tìm tòi, học hỏi các công nghệ mới
3.2 Điểm yếu
● Khả năng thuyết trình có phần không lưu loát và khó khăn trong việc trình bày
ý kiến, lắng nghe và trao đổi thông tin với đồng nghiệp
● Khó khăn trong những ngày đầu làm quen với quy trình làm việc do sinh viên chưa được trải nghiệm môi trường thực tế trước đây
3.3 Chuẩn đạt được
G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh
nghiệp
9/10 G2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ 9/10
14
Trang 15thống trong dự án
G3 Nắm được quy trình, phương pháp và công nghệ phát triển sản phẩm
phần mềm tại doanh nghiệp
9/10
G4 Có khả năng tìm hiểu vấn đề, mô hình hóa vấn đề và tham gia giải quyết
vấn đề
10/10 G5 Phát triển kỹ năng tư duy, kỹ năng làm việc nhóm và kỹ năng trình bày 8/10 G6 Đọc, hiểu các tài liệu và giao tiếp bằng tiếng Anh 9/10
Trang 16TÀI LIỆU THAM KHẢO
Flutter là gì? Ưu điểm vượt trội ra sao để làm một ứng dụng mobile (2023, March 01)
Retrieved from TopDev: https://topdev.vn/blog/flutter-la-gi/
Flutter, B (2021, August 5) Rest Api Trong Lập Trình flutter - Hướng dẫn Chi Tiết Retrieved
from Báo Flutter: https://baoflutter.com/rest-api-trong-lap-trinh-flutter-huong-dan-chi-tiet/
Hamilton, T (2023, December 21) Postman tutorial – how to use for API testing? Retrieved
from Guru99: https://www.guru99.com/postman-tutorial.html?fbclid=IwAR0pUr-6AGa0xA1f4Hj1tZv2Fyf3nVcR_SgkXXLCrLGWUWRxozJrh4Nhrow
Martinekuan (2023, March 28) Web api design best practices - azure architecture center
Retrieved from Web API design best practices - Azure Architecture Center |
Microsoft Learn:
https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design
Quyet, N H (2020, October 21) Bloc pattern trong flutter Retrieved from Viblo:
https://viblo.asia/p/bloc-pattern-trong-flutter-Qbq5QQ7R5D8
16