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 DI ĐỘNG VỚI FLUTTER Công ty thực tập Công ty TNHH Giải Pháp WATA Người phụ trách Ngô Vũ Quyền Thực tập si[.]
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 Giải Pháp WATA
Người phụ trách : Ngô Vũ Quyền
Thực tập sinh : Lưu Ngọc Sáng - 19520898
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2LỜI MỞ ĐẦU
Trong thời điểm mà ngành công nghệ thông tin nói chung và phát triển phần mềm nói riêngđang phát triển với tốc độ chưa từng có tiền lệ Nhu cầu cho các sản phẩm phần mềm thuộc nhiều lĩnhvực càng ngày càng tăng
Để đáp ứng được với những nhu cầu ngày càng dồn dập này Ngành phát triển phần mềm đãphải dần dần áp dụng những quy trình làm việc cho năng suất cao hơn Đã từ lâu mô hình thác nướcđược cho là lỗi thời Sự phát triển của các mô hình theo hướng lặp, tập trung vào việc giao cho kháchhàng một sản phẩm trong thời gian nhanh nhất, sau đó cải thiện dần sản phẩm đó đã tạo điều kiện chocác quy trình phát triển phần mềm theo nguyên tắc Agile Trong đó Scrum là một trong những quy trìnhphổ biến và hiệu quả nhất
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ư mongmuốn được học về những quá trình phát triển phần mềm trong môi trường chuyên nghiệp của một công
ty Vì vậy em quyết định chọn Watasolutions, một trong những công ty nhiều truyền thống về sản phẩmphần mềm và đang tiếp tục phát triển, để làm nơi thực tập
Trang 3Đặc biệt cảm ơn anh Ngô Vũ Quyền, đã tập huấn cho em về quy trình phát triển phần mềm Scrum, cũng như các kỹ thuật và công nghệ kiểm thử, cũng như những khó khăn việc làm quen với môi trường mới Cảm ơn anh Tiến Đỗ, đã nhiệt tình giúp đỡ khi em gặp một số vấn đề về quy trình làm việc
từ xa để 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 emlàm bài báo cáo này
<Lưu Ngọc Sáng>
<TPHCM, ngày 15 tháng 12 năm 2022>
Trang 4NHẬN XÉT CỦA KHOA
Trang 5MỤC LỤC
Chương 1: Giới thiệu công ty thực tập 2
Chương 2: Nội dung thực tập 3
Chương 3: Chi tiết về dự án 9
Trang 6Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty Watasolutions
WATA Solutions là một trong những công ty hàng đầu về Dịch vụ Giải pháp Phần mềm có trụ sở tại Thành phố Hồ Chí Minh Đến với công ty wata, khách hàng sẽ có
cơ hội làm việc với những thành viên trẻ trung, năng động, tài năng Khách hàng/Đối tác của chúng tôi đến từ Bắc Mỹ, Úc, Châu Âu, Nhật Bản, Singapore và Hàn Quốc Chúng tôi đang tìm kiếm ứng viên Kỹ Sư Cầu Nối (BrSE) cho các dự án mới của công ty, ngườisẽ chịu trách nhiệm thực hiện các công việc liên quan Được thành lập vào năm 2016, WATA Solutions đã phát triển nhanh chóng và trở thành công ty tiên phong cung cấp các giải pháp phần mềm chất lượng cao trong nhiều lĩnh vực và phục vụ nhiều khách hàng trong và ngoài nước như Bắc Mỹ, Singapore, Hàn Quốc và Nhật Bản
Sứ mệnh của công ty là cung cấp các dịch vụ quản lý và tư vấn đám mây chất lượng cao với giá cả phải chăng để giúp các công ty khởi nghiệp và công ty thuộc mọi quy mô hoàn thành các dự án ở mọi quy mô Công ty giúp các doanh nghiệp tận dụng các thế mạnh của họ và hỗ trợ họ cung cấp các sản phẩm và dịch vụ tuyệt vời để đảm bảotrải nghiệm tích cực cho người dùng cuối
2 Lĩnh vực liên quan
● Phát triển và xuất khẩu phần mềm
● Cung cấp giải pháp phần mềm
Trang 7Chương 2: Nội dung thực tậ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 Thực tập viên được biết vềcác chức vụ chính trong công ty, các con đường mà lập trình viên có thể lựa chọn đểthăng tiến tại công ty Cũng như các thông tin khác được người hướng dẫn cung cấp khi
thực tập viên có thắc mắc
- Kết quả: Kết thúc thời gian tìm hiểu, em đã có hiểu biết sơ bộ về tổ chức nhân sự củaCông ty Giúp cho bản thân tự vạch ra được hướng đi để có thể thăng tiến trong ngành kỹthuật phần mềm
2 Nghiên cứu kĩ thuật
2.1 Công cụ sử dụng
- Thời gian: 1 ngày
- Nội dụng: Giới thiệu về một số công cụ được sử dụng trong công ty thông qua gặp mặt trênGoogle Meet Các công cụ nội bộ bao gồm: Trình gửi Email, trình quản lý công việc, dịch
vụ hỗ trợ về công nghệ, hệ thống làm việc từ xa, hệ thống nhắn tin thời gian thực nội bộ:
- Jira: là công cụ để quản lý dự án, kiểm soát và theo dõi các vấn đề xảy ra
trong dự án, quản lý các phản hồi từ phía người sử dụng
- Slack: là một ứng dụng làm việc nhóm giúp team làm việc cùng nhau hiệu
quả hơn với sự tương tác, trao đổi qua khung chat linh hoạt Slack lại tập
trung phát triển các tính năng giúp việc tương tác nhóm mạnh mẽ, gắn kết
hơn Không giống email, các hội thoại trên phần mềm dễ tìm kiếm và theo
dõi tại mỗi nhóm/dự án, các thành viên có thể gọi, trao đổi, chia sẻ dữ liệu,
các tệp và kết nối với các ứng dụng khác do có mở cổng API trên phần
mềm
- Skype: là công cụ quản lí tin nhắn giữa cá nhân và các tổ chức, tích hợp cả chức năngcall nhóm, tiện lợi để quản lí tình hình của các thành viên trong team
- Google meeting: phục vụ cho việc làm việc online
- Kết quả: Kết thúc thời gian tìm hiểu, em đã có hiểu biết sơ bộ cũng như cách thức sử dụngcác phần mềm và hệ thống được dùng trong nội bộ công ty Tạo điều kiện cho thực tập viên
có thể giao tiếp hiệu quả hơn với người hướng dẫn
Trang 82.2 Framework
- Thời gian: 2 tuần
- Nội dung: Được giới thiệu về ngôn ngữ lập trình Dart và Flutter framework, những kiến thức quan trọng cho việc tối ưu hoá hiệu năng cho các ứng dụng di động
- Các cú pháp, câu lệnh cơ bản của Dart
- So sánh Dart và Java
- Làm quen với lập trình Flutter
- Xây dựng ứng dụng Flutter cơ bản
2.3 Clean Architecture
- Th i gianờ : 1 tuần
- N i dung ộ : Tìm hiểu về kiến trúc Clean Architecture
- Định nghĩa về Clean Architecture: Clean Architecture được xây dựng dựa trên tưtưởng "độc lập" kết hợp với các nguyên lý thiết kế hướng đối tượng(đại diện tiêu biểu là Dependency Inversion) Độc lập ở đây nghĩa là việc project không bị phụ thuộc vào framework và các công cụ sử dụng trong quá trình kiểm thử
- Kiến trúc của Clean Architecture chia thành 4 layer với một quy tắc phụ thuộc Các layer bên trong không nên biết bất kỳ điều gì về các layer bên ngoài Điều này có nghĩa là nó có quan hệ phụ thuộc nên "hướng" vào bên trong
Trang 9- Th c hi nự ệ :
- Tham gia đầy đủ các buổi training
- Tạo ra những ứng dụng cơ bản, có áp dụng kiến trúc Clean Architecture và mô hình
MVP
- K t quế ả: Cơ bản nắm được kiến thức về Clean Architecture, mô hình MVP trong lập trình Flutter
Trang 102.5 Dependency Injection & th vi n Get it ư ệ
- Th i gianờ : 1 tuần
- N i dungộ : Tìm hiểu khái niệm Dependency Injection và thư viện Get it
- Khái niệm Dependency Injection: Dependency Injection được xây dựng dựa trên khái niệm Inversion of Control Nghĩa là các phụ thuộc của 1 class chỉ nên được cung cấp từ bên ngoài Dependency injection là một kĩ thuật trong đó một object (hoặc một static method) cung cấp các dependencies của một object khác Một dependency là một object mà có thể sử dụng trong ứng dụng
- Thư viện Get it: Get it là một dependency injection framework thuộc dạng compile-time và fully static Tách biệt khởi tạo/sử dụng, dễ dàng test hơn (unit test và function), khả năng mở rộng tốt hơn - đây chỉ là một vài lợi ích từ việc sử dụng depedency injection framework như Get it
- Th c hi nự ệ :
- Tham gia đầy đủ các buổi training
- Tạo ra ứng dụng demo cơ bản, có áp dụng Dependency Injection và thư viện Get it
- K t quế ả: Cơ bản nắm được kiến thức về Dependency Injection, Get it và một số thư viện liên quan
2.4 Tìm hiểu về Scrum
- Thời gian: 2 ngày
Nội dung: Thực tập viên tự tìm hiểu về quy trình phát triển phần mềm Scrum cũng như cácnguyên tắc phát triển phần mềm Agile Một số khái niệm điển hình có thể kể đến như sau
- Scrum: là một quy trình phát triển phần mềm theo phương pháp Agile, vì thế nó tuân thủ cácnguyên tắc của Agile Scrum dựa trên 3 chân lý: Minh bạch, thanh tra và thích nghi
- Sprint: Quy trình phát triển được thực hiện thông qua các phân đoạn nối tiếp nhau được gọi
là các Sprint Kết thúc mỗi Sprint nhóm phát triển sẽ đưa ra 1 phần tăng trưởng của sảnphẩm Mỗi Sprint diễn ra trong vòng không quá 4 tuần được diễn ra liên tiếp mà không bịgián đoạn 1 Sprint này bắt đầu ngay sau khi 1 Sprint khác kết thúc
- Scrum master: là người có hiểu biết sâu sắc về Scrum, đảm bảo nhóm làm việc hiệu quả vớiscrum Là người tháo gỡ các thắc mắc cho PO, DEV, kiểm thử
- Product Owner: chủ sản phẩm: là người chịu trách nhiệm về sự thành công của dự án Làngười biết rõ về tầm nhìn của sản phẩm Là người chịu trách nhiệm quản lý và đảm bảo sựminh bạch của Product Backlog
Trang 11- Development team: Một nhóm liên chức năng tự quản lý để tiến hành chuyển đổi các yêucầu được tổ chức trong Product Backlog thành chức năng của hệ thống Đặc điểm của nhómphát triển là: tự tổ chức và liên chức năng
Các tạo tác từ Scrum bao gồm
- Product backlog: là nơi lưu trữ các danh sách mong muốn của sản phẩm, danh sách nàyđược sắp xếp dựa theo độ ưu tiên của từng hạng mục Độ ưu tiên cao sẽ được đặt lên đầudanh sách
- Sprint backlog: là bảng công việc được nhóm phát triển để quản lý quá trình sản xuất trong
1 sprint
Các hoạt động được thực hiện trong quy trình Scrum là:
- Sprint Planning (Lập kế hoạch Sprint)
- Daily Scrum (Họp Scrum hàng ngày)
- Sprint Review (Rà soát Sprint)
- Sprint Retrospective (Cải tiến Sprint)
Kết quả: Kết thúc thời gian tìm hiểu, thực tập viên có hiểu biết về quy trình phát triển Scrum Tạo điều kiện để lên kế hoạch phát triển hệ thống trong kỳ thực tập này
3 Thực hiện dự án
Thời gian: 1 ngày
Nội dung: Hướng dẫn viên lập kế hoạch thực hiện dự án theo kiến thức đã tìm hiểu được về Scrum
và phổ biến plan cho các thành viên trong team Thực hành: Thực tập viên soạn Product Backlog vàSprint Backlog và người hướng dẫn đánh giá các tạo tác này Đưa ra các gợi ý để thực tập viên cóthể cải thiện và chỉnh sửa nếu cần thiết
Kết quả: Kết thúc thời gian tìm hiểu, em đã có hiểu biết sơ bộ về tổ chức nhân sự của Công ty Giúpcho bản thân tự vạch ra được hướng đi để có thể thăng tiến trong ngành kỹ thuật phần mềm
Trang 124 Lịch làm việc
Tuần Công việc Người hướng
dẫn Nhận xét của người hướng dẫn
Trang 131 - Tìm hiểu về công
ty, cách tổ chức của công ty
- Làm quen với các công cụ làm việc trong công ty
- Học cách trao đổi, làm việc qua email
Anh Ngô Vũ
Quyền
Architecture và các thư viện liên quan
- Các chức năng chính:
● Xác thực người dùng: Người dùng có thể đăng nhập vào hệ thống và sử dụng cácchức năng trong phạm vi quyền hạn của tài khoản
Trang 14● Quản lí nhân viên: Người quản trị có thể quản lí danh sách các nhân viên hiện cótrong hệ thống, bao gồm việc xem/thêm/xoá/sửa các thông tin của nhân viên đó:
họ tên, ngày sinh, quê quán, địa chỉ, các thông tin liên lạc,… và các thông tin liênquan đến các dự án hiện tại của nhân viên đó
Trang 16● Quản lí dự án: Người quản trị có thể quản lí danh sách các dự án hiện có trong hệthống, bao gồm việc xem/thêm/xoá/sửa các thông tin của dự án đó: tên dự án, thờigian, kinh phí, thông tin của stakeholders, danh sách cách nhân viên của dự án vàcác thông tin liên quan.
Trang 17● Quản lí thời gian làm việc: Người quản trị có thể quản lí thời gian làm việc trongcác dự án của từng nhân viên theo ngày, tuần, tháng.
Trang 19● Quản lí thông tin cá nhân: Người dung có thể quản lí các thông tin cá nhân củamình thông qua chức năng Profile.
2 Ki n trúc ng d ng và t ch c cây th m c: ế ứ ụ ổ ứ ư ụ
Ứng dụng được viết dựa trên kiến trúc Clean Architecture và mô hình MVP Ứng dụng được chia thành 3 module chính(3 tầng): App, Data, Domain
1.4.1 T ng Domain: ầ
Trang 20Tầng domain chứa các business logic của toàn bộ project Định nghĩa các object chứa cácthông tin liên quan đến ứng dụng Ngoài ra còn chứa các interface của các repositories và các usecase liên quan
3 Th c hi n: ự ệ
Sau thời gian trau dồi kiến thức từ các buổi training và tự nghiên cứu tài liệu Cộng với sự giúp đỡ của các anh mentor và các thành viên trong team, sinh viên đã hoàn thành xong dự án
Trang 22TỔNG KẾT
Như vậy sau 24 tuần làm việc với những anh chị trainer Em đã về cơ bản hoàn thànhđược một trang web học tiếng Anh theo quy trình phát triển Trong quá trình thực hiện, em đãthu lại nhiều bài học quý giá về quá trình phát triển phần mềm, cũng như những kỹ năng làmviệc trong môi trường doanh nghiệp Trong một hoàn cảnh đặc biệt đó là thực tập viên phải làmviệc từ xa do ảnh hưởng của dịch COVID-19 Mặc dù có một số khó khăn trong việc giao tiếp,
em cũng như các anh chị trainer đã làm việc cùng nhau để quá trình thực tập diễn ra suôn sẻ
Chân thành cảm ơn sự giúp đỡ của các anh chị nhóm trainer Watasolutions , sự nỗ lựccủa nhóm để có thể hoàn thành dự án này Cảm ơn thầy Nguyễn Hữu Thương đã giúp em hoànthành bài báo cáo này