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 FLUTTER Công ty thực tập Tập đoàn công nghê Unicloud Người phụ trách Đặng Quang Trung Thực tập sinh Cao Nguyễn Min[.]
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 FLUTTER
Trang 2LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp phát triển ứng dụng di động 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ành di động
đã 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
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp di động ở Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng đầu về phát triển phần mềm trên thế giới
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 làm ứng dụng di động trong một môi trường chuyên nghiệp, em có dự định
là sẽ thực tập trong học kì này Vì vậy, em quyết định chọn Unicloud - một tập đoàn công nghệ
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
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Tập đoàn Công nghệ Unicloud đã 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 một ứng dụng di động 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 Đặng Quang Trung, trưởng nhóm Front-end, đã hướng dẫn, giúp đỡ
cho chúng 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 Trần Nhật Tân, trưởng nhóm dự án, hỗ trợ chúng em rất nhiều về
các kiến thức liên quan tới lập trình di động đặc biệt là về Flutter, để có thể làm ra một sản phẩm trong thời gian qua
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
Cao Nguyễn Minh Quân TpHCM, 18/12/2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
Mục lục
Chương 1: Giới thiêu công ty thực tập 6
1 Giới thiệu công ty Unicloud 6
2 Sản phẩm của công ty 6
Chương 2: Nội dung thực tập 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Nghiên cứu kỹ thuật 8
2.1 Các công cụ làm việc 8
2.2 Tìm hiểu ngôn ngữ Dart và Git 9
2.3 Tìm hiểu về Framework Flutter 9
2.4 Thực hiện project 10
2.5 Lịch làm việc 10
Chương 3: Chi tiết về project 13
1 Giới thiệu dự án 13
2 Thực hiện 13
3 Kế hoạch 13
3.1 Giai đoạn 1 13
3.2 Giai đoạn 2 13
Tài liệu tham khảo 14
Tổng kết 15
Trang 6Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty Unicloud
Unicloud Group Tiền thân là Công ty CP Đầu tư Thương mại Sunshine Tech thuộc Tập đoàn Sunshine (Sunshine Group) được thành lập ngày 12/06/2016, Công ty CP Tập đoàn Công nghệ Unicloud hiện có hơn 300 thành viên tại trụ sở Hà Nội và chi nhánh TP HCM, cùng 2 công ty con là Unicloud Investment và Nanochip
Unicloud Group nghiên cứu, phát triển, và cung cấp các sản phẩm, giải pháp công nghệ quan trọng cho hầu hết các lĩnh vực “xương sống” của nền kinh tế Nhằm mục tiêu tăng cường năng lực và thúc đẩy sự phát triển của các ngành nghề, nâng cao chất lượng cuộc sống
Unicloud có sứ mệnh là tiên phong trong chuyển đổi số của Việt Nam và thế giới, giúp nâng tầm giá trị chất xám của người Việt phục vụ cho cộng đồng văn minh giúp nâng cao chất lượng sống không chỉ của người Việt mà trên toàn thế giới
2 Sản phẩm của công ty
SMART TELLER MACHINE - Giải Pháp Về Phần Cứng Giao Dịch 24/7
Thay thế giao dịch viên thực hiện các giao dịch ngân hàng truyền thống, giải phóng thao tác nhân viên và cho phép giao dịch viên tập trung vào tư vấn, bán hàng các sản phẩm cao cấp Tùy chọn cấu hình thay đổi theo nhiệm vụ triển khai và theo yêu cầu triển khai thực tế
GIẢI PHÁP PHẦN MỀM NGÂN HÀNG SỐ
Trang 7Gói giải pháp giao dịch ngân hàng trực tuyến, tận dụng sức mạnh của thiết bị di động và các giải pháp tiên tiến của các nhà sản xuất lớn Hỗ trợ API và Microservice, cho phép tổ chức tài chính triển khai sản phẩm mới linh hoạt, nhanh chóng đến tay người dùng, đồng thời tuân thủ tuyệt đối quy định của Ngân hàng Nhà nước Việt Nam
UNI SERVICES - Dịch Vụ Bảo Trì Máy ATM/STM
Đội ngũ chuyên gia của Unicloud được trang bị đầy đủ kiến thức để đánh giá, phân tích, hiểu
rõ và chẩn đoán các sự cố về vận hành máy về phần cứng cũng như phần mềm liên quan tới các máy ATM/STM nhằm đưa ra các giải pháp thích hợp, nhanh chóng cho nhiều loại máy khác nhau tới từ các thương hiệu khác nhau như GRG, Cashway, NCR…
Trang 8Chương 2: Nội dung thực tập
Đợt thực tập vừa qua, em ứng tuyển vào công ty với vị trí là Thực tập sinh Mobile (Flutter) Trong khoảng thời gian đó, em đã được trải nghiệm tham gia vào một dự án thực tế về
‘E-KYC DEMO’, được tiếp xúc với môi trường làm việc năng động sáng tạo Đồng thời được tiếp xúc với quy trình phát triển dự án cũng như bảo trì và phát triển dự án trong công ty
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được tham quan công ty và được giới thiệu về các bộ phận trong công ty cũng như các thông tin liên quan tới quá trình hình thành và định hướng phát triển 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 tuân thủ, sử dụng Email và Skype để giao tiếp
Kết quả : Hiểu thêm về công ty Unicloud, 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
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc.
- JIRA: là công cụ được sử dụng để phân chia công việc và quản lý tiến độ làm việc
trong dự án
- Gitlab: là phần mềm dùng để quản lý mã nguồn được các công ty tổ chức ưa
chuộng
- Android Studio: là IDE phổ biến cho các lập trình viên Mobile cũng như Flutter
- Figma: là công cụ thiết kế UX/UI
- Swagger/HTTPie: là công cụ xây dựng OpenAPI giúp thiết kế, xây dựng tài liệu,
và sử dụng RestAPI
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Trang 9Kết quả : Đã tìm hiểu về các công cụ ở trên
2.2 Tìm hiểu ngôn ngữ Dart và Git
Nội dung : Được tìm hiểu về ngôn ngữ Dart, những kiến thức quan trọng cho việc tối
ưu trên Android Đồng thời được tìm hiểu về Git cũng như Gitlab
Thực hiện :
- Tự tìm hiểu về Dart và Git
- Tham gia bài Quiz nhỏ giữa các thành viên trong team
Kết quả :
- Nâng cao kỹ năng lập trình với ngôn ngữ Dart
- Hiểu được quy tắc lập trình trong công ty
- Ngoà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 về Framework Flutter
Nội dung: Tìm hiểu về các hoạt động của Flutter cũng như cách thức ứng dụng bằng
Flutter hoạt động
Thực hiện :
- Đọc tài liệu, tìm hiểu và làm demo về Flutter Bloc Clean Architechture
Kết quả :
- Hiểu được các vận hành của Flutter cũng như cách xây dựng một ứng dụng Flutter cũng như cấu trúc thư mục trên Flutter
Trang 10căn cước công dân, định danh hộ chiếu, xác thực khuôn mặt, so sánh trùng khớp khuôn mặt Dự án này em chia thành 2 giai đoạn do có những vấn đề đặc biệt:
- Giai đoạn 1: Xây dựng demo E-KYC trên bản Mobile và Web, có 2 người tham gia (2 thực tập sinh)
- Giai đoạn 2: Bảo trì và thay đổi hướng phát triển dự án do những vấn đề phát sinh
ở giai đoạn 1, có 3 người tham gia (2 thực tập sinh và 1 người hướng dẫn)
2.5 Lịch làm việc
Mức độ hoàn thành
Nhận xét của người hướng dẫn
1
Tìm hiểu về Flutter, Git,
đặc biệt là package
Camera của Flutter
Anh Đặng Quang Trung 100% Hoàn thành tốt
Từ tuần 2
– tuần 8
Giai đoạn 1:
Phân tích dự án, xây
dựng những chức năng
cơ bản để có bản demo
trên Mobile và Web
Anh Đặng Quang Trung 100% Hoàn thành tốt
Từ tuần 8
– tuần 11
Giai đoạn 2:
Bảo trì và sửa đổi những
vấn đề phát sinh trong
giai đoạn 1
Anh Đặng Quang Trung, Anh Trần Nhật Tân
100% Hoàn thành tốt
12
Demo sản phẩm version
hiện tại và chuẩn bị cho
version tiếp theo
Anh Đặng Quang Trung, Anh Trần Nhật Tân
100% Hoàn thành tốt
Trang 11Chương 3: Chi tiết về project
1 Giới thiệu dự án
Tên dự án: EKYC Demo
Giới thiệu: EKYC Demo là một ứng dụng nhằm mục đích demo các chức năng cơ bản liên quan tới EKYC bao gồm định danh các loại thẻ bao gồm căn cước công dân, hộ chiếu và xác thực khuôn mặt bao gồm xác thực khuôn mặt thông qua cử chị cả khuôn mặt và xác thực khuôn mặt thông qua cử chỉ mũi, xác thực khuôn mặt thông qua hình ảnh và so sánh trùng khớp hai khuôn mặt
2 Thực hiện
- Thực tập sinh: Cao Nguyễn Minh Quân
- Thực tập sinh: Nguyễn Doãn Thịnh
- Trưởng dự án: Đặng Quang Trung
Trang 121 OCR (Optical Character Recognition)
- OCR là quá trình nhận diện các ký tự trên giấy tờ, chức năng chính OCR là nhận diện các loại giấy tờ như Chứng minh nhân dân/ Căn cước công dân, Hộ Chiếu
2 Passive Liveness
- Passive Liveness là quá trình xác thực nhận diện khuôn mặt mà không cần hành động của con người, có thể nhận diện được các ảnh có khuôn mặt, hoặc khuôn mặt bị mờ
3 Face Matching
- Face Matching là quá trình so sánh khuôn mặt thông qua hình ảnh, mặt thật nhằm xác định khuôn mặt có giống nhau không
4 Profile Liveness
- Profile Liveness là quá trình nhận diện khuôn mặt qua cử chỉ của mũi
Các package chính đã nghiên cứu và sử dụng: Package Camera, Package Image Picker, Package Google ML Kit Face Detection (Dễ sử dụng, do Google phát triển và có tài liệu nhiều, nhược điểm là chỉnh có bản Mobile Only), Package FaceAPI (package này là packgage của NPM viết bằng JS – lấy ý tưởng từ TensorFlow Detect Face)
Đã làm: Đã nâng cao được hiệu suất của ứng dụng bằng một số phương pháp, thay đổi được cách quản lý State của ứng dụng từ Provider sang Bloc cũng như thiết kế hệ thống theo Clean Architecture để dễ bảo trì và phát triển
Trang 13Tổng kết
Như vậy, chỉ trong vòng ba tháng, nhóm đã hoàn thành một phần mềm chạy được trên cả Web và di động Phần mềm đã đáp ứng được những yêu cầu cơ bản của khách hàng và cũng đã được tối ưu hóa để có thể sẵn sàng đưa lên cửa hàng và bản Web cũng dần hoàn thiện được những lỗi để tối ưu tốt hơn Phần mềm cũng đã được chuẩn bị cho các phiên bản tốt hơn cho các lần tiếp theo
Chân thành cảm ơn sự giúp đỡ của các anh chị trong nhóm Front-end, sự chỉ bảo của anh Trần Nhật Tân và anh Đăng Quang Trung Cảm ơn các quý thầy cô của trường Đại học Công nghệ thông tin, đặc biệt là các thầy cô trong khoa Công nghệ phần mềm đã
hỗ trợ em trong quá trình tìm việc, thực tập và quá trình hoàn thiện báo cáo này
Trang 14Tài liệu tham khảo
Về Flutter
https://docs.flutter.dev/
Về Camera
https://pub.dev/packages/camera
Về Image Picker
https://pub.dev/packages/image_picker
Về Google Machine Learning Kit (nhận diện khuôn mặt) phiên bản Mobile
https://pub.dev/packages/google_mlkit_face_detection
Về Face Detection (nhận diện khuôn mặt) phiên bản Web
https://github.com/vladmandic/face-api