Vì vậy em quyết định chọn Fujinet, một trong những công ty nhiều truyền thống về sản phẩm phần mềm và đang tiếp tục phát triển, để làm nơi thực tập... Đặc biệt cảm ơn anh Nguyễn Vũ Bảo,
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
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ĩnh vự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ách hà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 cho cá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ình phổ 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ư mong muố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 Fujinet, một trong những công ty nhiều truyền thống
về sản phẩm phần mềm và đang tiếp tục phát triển, để làm nơi thực tập
Trang 3để 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 Nguyễn Vũ Bảo, đã 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 chị Thúy, đã 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
em làm bài báo cáo này
Nguyễn Ngọc Đăng
TP Hồ Chí Minh – Ngày 21 Tháng 12 Năm 2021
Trang 4NHẬN XÉT CỦA KHOA
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5MỤC LỤC
1 Giới thiệu về công ty 6
1.1 Giới thiệu về Fujinet Systems 6
1.2 Sản phẩm của công ty 6
2 Nội dung thực tập 8
2.1 Tìm hiểu cấu trúc và quy trình làm việc của công ty 8
2.2 Tập huấn về an toàn bảo mật thông tin trong nội bộ công ty 8
2.3 Nghiên cứu kỹ thuật 9
2.3.1 Các công cụ được sử dụng trong nội bộ công ty 9
2.3.2 Các công nghệ được sử dụng trong dự án 9
2.4 Tìm hiểu về quy trình phát triển phần mềm SCRUM 10
2.5 Lên kế hoạch thực hiện dự án 11
2.6 Thực hiện dự án 11
2.7 Lịch làm việc 11
3 Chi tiết dự án thực hiện 15
3.1 Giới thiệu về dự án 15
3.1.1 Ý tưởng 15
3.1.2 Các chức năng chính 15
3.1.3 Thực hiện 19
3.1.4 Kế hoạch 20
4 Tài liệu tham khảo 21
5 Tổng kết 22
5.1 Kết quả đạt được 22
5.2 Thuận lợi và khó khăn 22
5.3 Ưu điểm và nhược điểm 22
Trang 61 Giới thiệu về công ty
1.1 Giới thiệu về Fujinet Systems
Công ty Cổ phần Fujinet Systems (Fujinet Systems LLC.) được thành lập vào ngày 01/10/1996 tại Thành phố Hồ Chí Minh Ban đầu chủ yếu cung cấp máy tính cho các công ty Nhật ở Hồ Chí Minh Sau này Fujinet mở rộng hoạt động của mình sang các lĩnh vực phần mềm cho thị trường Nhật Bản Hiện tại công ty đã đạt đến quy mô 750 nhân sự Trải trên 3 trụ sở làm việc gồm 1 trụ sở chính tại Thành phố Hồ Chí Minh, 1 chi nhánh tại Quy Nhơn và 1 chi nhánh tại Tokyo, Nhật Bản Vốn điều lệ của công ty hiện đang là 4.1 triệu USD Lĩnh vực kinh doanh chính hiện tại của Fujinet bao gồm:
• Phát triển và xuất khẩu phần mềm: Lập trình, vận hành và bảo trì hệ thống nghiệp vụ, lập trình Web Application, lập trình Smart Phone Application
• Nghiên cứu phát triển và ứng dụng công nghệ mới: Cung cấp giải pháp công nghệ mới như AI, RPA, BigData
• Tích hợp hệ thống thông tin: Cung cấp thiết bị máy tính và software licensed Thiết kế / thi công / vận hành / bảo trì hệ thống mạng
• Cung cấp giải pháp phần mềm: Cung cấp phần mềm quản lí sản xuất, phần mềm bán hàng, phần mềm kế toán
• Đồ họa / nhập dữ liệu: Thiết kế bản vẽ kiến trúc bằng 3DSMAX, tạo phối cảnh 3D, AutoCad
Trang 7dành cho doanh nghiệp vừa và lớn là giải pháp tổng thể ứng dụng cho tất cả các phòng ban: điều hành,
• Tài chính kế toán: Các sản phẩm : Fuji Accounting dành cho doanh nghiệp vừa và lớn; Fuji Accounting cho doanh nghiệp vừa và nhỏ; Hóa đơn điện tử Phần mềm Fuji Accounting giúp thực hiện các chức năng quản lý tài chính kế toán, kiểm soát toàn diện tài chính
• Sản phẩm di động: Các sản phẩm App di động của Fujinet dành cho bán hàng, liên kết với hệ thống quản trị doanh nghiệp và tài chính-kế toán là những sản phẩm ưu việt dành cho kinh doanh
• Sản phẩm trí tuệ nhân tạo: Các sản phẩm sử dụng trí tuệ nhân tạo của Fujinet bao gồm Nhận diện thực thể; Rút trích nội dung từ văn bản; Nhận diện khuôn mặt
Trang 82 Nội dung thực tập
2.1 Tìm hiểu cấu trúc và quy trình làm việc của công ty
Thời gian: 4 giờ
Nội dung: Giới thiệu về thông tin sơ bộ cũng như tổ chức của Công ty Fujinet thông qua
Google Meet
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ủa Công ty
Fujinet 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.2 Tập huấn về an toàn bảo mật thông tin trong nội bộ công ty
Thời gian: 4 giờ
Nội dung: Tập huấn về an toàn bảo mật thông tin trong nội bộ công ty cùng các thực tập viên
khác thông qua một buổi gặp mặt trên Microsoft Teams
Thực tập sinh được biết về những vấn đề sau
• Quy tắc chung trong an toàn bảo mật thông tin Những tác hại có thể xảy ra nếu những quy tắc này không được tuân thủ
• An toàn bảo mật thông tin trong văn phòng công ty: Nếu đi làm tại văn phòng, nhân viên phải quét thẻ để báo danh, và khi về phải quét thẻ lần nữa
• An toàn bảo mật thông tin trong việc giao tiếp với khách hàng: Gửi mail một cách thận trọng, hạn chế dùng carbon copy, nên gửi mail để xác nhận lại, chia các nội dung quan trọng thành nhiều phần
• An toàn bảo mật thông tin trong làm việc từ xa: Sử dụng mail nội bộ, phần mềm chat nội bộ của công ty để giao tiếp
Kết quả: Kết thúc thời gian tìm hiểu, em đã có hiểu biết cách tiếp cận chung cũng như những
biện pháp cụ thể của công ty trong việc đảm bảo an toàn thông tin khi làm việc Giúp cho thực tập viên có cách làm việc chuyên nghiệp hơn
Trang 92.3 Nghiên cứu kỹ thuật
2.3.1 Các công cụ được sử dụng trong nội bộ công ty
Thời gian: 4 giờ
Nội dung: 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ên
Google 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ộ
Thực hành: Thực tập viên đã tiến hành sử dụng các phần mềm trên theo sự giám sát của 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ụng cá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
2.3.2 Các công nghệ được sử dụng trong dự án
Thời gian: 1 ngày
Nội dung: Người hướng dẫn và thực tập viên cùng nhau quyết định về công nghệ sẽ được sử
dụng trong đồ án Cuối cùng đã thực
• MongoDB: MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh
• Express: Expressjs là một framework được xây dựng trên nền tảng của Nodejs Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng
• React.js: React là thư viện JavaScript phổ biến nhất để xây dựng giao diện người dùng (UI) Nó cho tốc độ phản hồi tuyệt vời khi user nhập liệu bằng cách sử dụng phương pháp mới để render trang web Components của công cụ này được phát triển bởi Facebook Nó được ra mắt như một công cụ JavaScript mã nguồn mở vào năm 2013 Hiện tại, nó đã đi trước các đối thủ chính như Angular và Bootstrap, hai thư viện JavaScript bán chạy nhất thời bấy giờ
• Node.js: Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome (V8 Engine) mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng
Trang 10Kế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
Fujinet 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.4 Tìm hiểu về quy trình phát triển phần mềm SCRUM
Thời gian: 1 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ác
nguyê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ác nguyê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ản phẩ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ới scrum 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
• 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êu cầ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óm phá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 đầu danh 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)
Trang 11• 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
2.5 Lên kế hoạch thực hiện dự án
Thời gian: 4 giờ
Nội dung: Thực tập 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
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
Fujinet 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.6 Thực hiện dự án
Sau khi có được kiến thức tương đối vững về các công nghệ trong MERN stack Cũng như nắm được quy trình phát triển Scrum, cùng với các kiến thức cần để có thể làm việc trong môi trường doanh nghiệp Trong những tuần tiếp theo, thực tập viên được hướng dẫn để thực hiện một dự án sử dụng các kiến thức đã được học Nội dung cụ thể sẽ được nói tới trong phần sau
2.7 Lịch làm việc
hướng dẫn
Mức độ hoàn thành
Nhận xét người hướng dẫn
1
(21/9 –
24/9)
- Cài đặt môi trường phát triển
- Tìm hiểu quy trình Scrum và phương
pháp Agile
- Tạo các tài liệu phục vụ cho việc thực
hiện quy trình Scrum
Nguyễn Vũ Bảo
100%
Trang 122
(27/9 –
1/10)
- Bắt đầu Sprint 1
- Cài đặt landing page
- Tìm hiểu thêm về công cụ kiểm thử
Cypress
Nguyễn Vũ Bảo
100%
3
(4/10 –
8/10)
- Kiểm thử landing page
- Cài đặt và kiểm thử trang đăng nhập
- Cài đặt và kiểm thử trang đăng ký
- Soạn các tài liệu liên quan cho sprint
1
Nguyễn Vũ Bảo
- Kiểm thử bảng điều khiển
- Cài đặt màn hình tương tác với thông
tin tài khoản
Nguyễn Vũ Bảo
- Kiểm thử màn hình tương tác với
thông tin tài khoản
- Cập nhật tài liệu thiết kế hệ thống cho
sprint 2
Nguyễn Vũ Bảo
100%
Trang 13(25/10
–
29/10)
- Cài đặt chức năng học bài học
- Cài đặt chức năng làm bài tập
- Cài đặt chức năng xem kết quả bài học
7
(1/11 –
5/11)
- Kiểm thử chức năng học bài học
- Cài đặt và kiểm thử chức năng lưu ghi
chú cá nhân
Nguyễn Vũ Bảo
100%
8
(8/11 –
12/11)
- Kiểm thử chức năng làm bài tập
- Kiểm thử chức năng xem kết quả bài
học
- Cập nhật tài liệu thiết kế hệ thống cho
Sprint 3
Nguyễn Vũ Bảo
- Cài đặt chức năng chọn bài kiểm tra
- Cài đặt chức năng làm bài kiểm tra
Nguyễn Vũ Bảo
10
(22/11
–
26/11)
- Cài đặt và kiểm thử chức năng xem
kết quả bài kiểm tra
- Kiểm thử chức năng chọn bài kiểm tra
- Kiểm thử chức năng làm bài kiểm tra
Nguyễn Vũ Bảo
11
(29/11
– 3/12)
- Cài đặt và kiểm thử chức năng kiểm
tra năng lực ban đầu
- Cập nhật tài liệu thiết kế hệ thống cho
Sprint 4
Nguyễn Vũ Bảo
Trang 153 Chi tiết dự án thực hiện
3.1 Giới thiệu về dự án
3.1.1 Ý tưởng
Hiện tại, tiếng Anh đang trở thành một kỹ năng không thể thiếu trong xã hội hiện đại với xu hướng toàn cầu hóa Tuy nhiên với ảnh hưởng của dịch bệnh COVID-19, nhiều trung tâm tiếng Anh truyền thống không thể thực hiện hoạt động giảng dạy trực tiếp Ngoài ra, có một nhu cầu lớn về việc tự học ngoại ngữ, cũng như học với chi phí rẻ hoặc miễn phí tận dụng nền tảng số Với những lý do trên, em quyết định sẽ thực hiện tạo một trang web dạy tiếng Anh Trang web này sẽ có những tính năng giúp cho việc học trở nên dễ dàng hơn với người dùng Chủ yếu nhắm vào việc chia nhỏ những bài học thành những phần nhỏ và dễ tiếp thu, với giao diện thân thiện với người dùng
3.1.2 Các chức năng chính
Để sử dụng dịch vụ, người dùng cần đăng nhập vào hệ thống Thông tin cũng như các thiết lập
cá nhân của người dùng có thể được tùy chỉnh tại màn hình chỉnh sửa thông tin người dùng
Người dùng truy cập các chức năng chính của dịch vụ thông qua màn hình bảng điều khiển (Người dùng được tự động điều hướng đến màn hình này khi đăng nhập), bảng điều khiển được chia ra làm 5 phần riêng, phần đầu tiên người dùng sẽ thấy là màn hình hiển thị danh sách bài học
Trang 16Khi người dùng chọn thực hiện bài học, họ sẽ được chuyển đến màn hình học bài Mỗi bài học
sẽ có một số lượng “nút kiến thức” Mỗi nút kiến thức được thiết kế sao cho người dùng có thể tiếp thu trong một khoảng thời gian ngắn (3-10 phút) Các nút kiến thức được chia ra 3 loại:
Từ vựng, ngữ pháp, kiến thức bổ sung Sau mỗi nút kiến thức sẽ có một số bài tập củng cố kiến thức để người dùng có thể thực hiện và xác nhận là mình đã nắm được nút kiến thức này
Trong khi đang xem một nút kiến thức Người dùng có thể lưu lại một ghi chú cá nhân gắn liền với nút kiến thức đó Ghi chú cá nhân này sẽ được hiển thị tại màn hình riêng sẽ nói tại phần sau