Chân thành cảm ơn anh Âu Mậu Dương và các anh chị trong team FA đã bỏ ra nhiều thời gian, công sức để hướng dẫn, hướng dẫn, giúp đỡ em tậntình trong khi làm quen môi trường mới cũng như
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 JAVA WEB DEVELOPER
Công ty thực tập: FPT Software Người phụ trách: Âu Mậu Dương Thực tập sinh: Nguyễn Âu Duy
Trang 2TP Hồ Chí Minh, tháng 12 năm 2023
LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp 4.0, công nghệ thông tin nói chung vàngành Công nghệ phần mềm nói riêng luôn là nhân tố đóng vai trò quantrọng trong quá trình phát triển của xã hội
Công nghệ Web, hay công nghệ sản xuất các trang web đã phục vụ hầuhết các nhu cầu của con người từ bán hàng, cung cấp kiến thức đến thôngtin liên lạc, Hiện nay đã có đến hơn 1.5 tỷ trang web, nhưng nhu cầutạo ra những trang web mới vẫn chưa có dấu hiệu giảm
Do đó, một trang web muốn được nhiều người sử dụng phải đáp ứng đượcyếu tố hình thức và nội dung Làm thế nào để sản phẩm tạo ra đạt chấtlượng cao ở hai yếu tố trên luôn làm bất kì một đội ngũ phát triển websitenào cũng cần phải suy nghĩ đau đầu Để thử thách bản thân trong ngànhcông nghiệp web, em đã lựa chọn backend web developer là định hướngcho việc học cũng như nghề nghiệp trong tương lai
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụngnhững kiến thức đã học và có được trải nghiệm trong môi trường thực tế,
em đã quyết định tham gia vào FPT Software– một môi trường lý tưởng vàchuyên nghiệp để thực hiện dự định
Trang 3LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn đến trainer của em, anh Âu Mậu Dương
đã tạo điều kiện cho em cơ hội được thực tập tại công ty Dù trong thờigian ngắn nhưng nhờ sự chỉ dẫn nhiệt tình của anh, em đã tiếp thu nhữngkiến thức quan trọng để có thể tham gia một dự án thực tế
Chân thành cảm ơn anh Âu Mậu Dương và các anh chị trong team FA đã
bỏ ra nhiều thời gian, công sức để hướng dẫn, hướng dẫn, giúp đỡ em tậntình trong khi làm quen môi trường mới cũng như trong việc tiếp cận kiếnthức công nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thực hiệntốt dự án cá nhân và dự án thực tế trong thời gian qua
Em cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệttình hỗ trợ, tạo điều kiện em làm báo cáo này
TP HCM, ngày 31 tháng 12
năm 2023
Trang 4NHẬN XÉT CỦA KHOA
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 […] 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 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 7
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 7
2.2 Nghiên cứu kỹ thuật 7
2.2.1 Tuần 1 7
2.2.2 Tuần 2 7
2.3 Thực hiện dự án cá nhân 7
[Mô tả quá trình thực hiện, kết quả] 7
2.3.1 Công nghệ 7
2.3.2 Mô tả dự án 7
Trang 62.3.3 Kết quả 7
2.4 Tham gia dự án thực tế 7
CHƯƠNG 3: TỔNG KẾT 8
3.1 Điểm mạnh 8
3.2 Điểm yếu 8
3.3 Chuẩn đạt được 8
TÀI LIỆU THAM KHẢO 9
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu
Hình Logo
FPT Software là một công ty công nghệ toàn cầu có trụ sở tại ViệtNam, là một phần của Tập đoàn FPT - một trong những tập đoàn côngnghệ và viễn thông lớn nhất tại Việt Nam Dưới đây là một số thông tingiới thiệu về FPT Software:
Quy mô và Địa điểm:
FPT Software có quy mô lớn với hàng ngàn nhân viên và nhiều văn phòng trên khắp thế giới Các văn phòng của FSoft hiện đang có và hoạt động tại Việt Nam:
Trụ sở chính FPT Software: FPT Tower - Số 10 Phạm Văn Bạch, Cầu Giấy, Hà Nội
FPT Software Hà Nội: FPT Building - 17 Duy Tân, Cầu Giấy, Hà Nội
FPT Software Hòa Lạc: Hola Park - Khu công nghệ cao Láng Hòa Lạc, Km29 Đại lộ Thăng Long, Thạch Thất, Hà Nội
FPT Software Hồ Chí Minh:
Trang 8o F-Town 1 & 2 - Khu T2, Đường D1 khu công nghệ cao, phường Tân Phú, TP.Thủ Đức, TP Hồ Chí Minh
o F-Town 3 Đường Võ Chí Công, Long Thạnh Mỹ, Quận 9, TP.HCM
FPT Software Đà Nẵng: FPT Complex - Nam Kỳ Khởi Nghĩa, Khu đô thị FPT City, Ngũ Hành Sơn, Đà Nẵng
FPT Software Quy Nhơn: 12 Đại lộ Khoa học, Khu phố 2, Phường Ghềnh Ráng, Quy Nhơn, Bình Định
FPT Software Cần Thơ: 600 Nguyễn Văn Cừ, Phường An Khánh, Quận Ninh Kiều, Cần Thơ
1.2 Sản phẩm công ty
Một số sản phẩm và giải pháp công nghệ tiêu biểu do FPT Software nghiên cứu và phát triền có thể kể đến như:
Nền tảng trí tuệ nhân tạo FPT.AI
FPT.AI là nền tảng trí tuệ nhân tạo toàn diện, sản phẩm chiến lượccủa Ban công nghệ tập đoàn FPT FPT.AI được phát triển và ứng dụngnhững kỹ thuật học máy, học sâu tiên tiến nhất hiện nay với 4 mô-đun,gồm: FPT.AI Conversation (Nền tảng hội thoại FPT.AI) cho phép xây dựngchatbot có khả năng xử lý ngôn ngữ tự nhiên để tương tác với khách hàng,
có thể tích hợp trên nhiều ứng dụng trò chuyện như: Facebook Messenger,Zalo, Viber…; FPT.AI Speech hỗ trợ tự động nhận dạng giọng nói tiếng Việt
và chuyển đổi văn bản thành tương tác âm thanh với người dùng
FPT.AI Vision là nền tảng giúp xác định, phân tích chính xác nộidung trong hình ảnh; tập trung vào việc tự động hoá các quy trình xử lý(Cognitive RPA) cho doanh nghiệp, nhận dạng hình ảnh, nhận dạng biểumẫu và OCR (Nhận dạng ký tự quang học); FPT.AI Knowledge cung cấpnền tảng giúp máy móc có thể học, trích xuất, khám phá kiến thức bêntrong doanh nghiệp với kho dữ liệu riêng (thông tin sản phẩm, hướng dẫn
sử dụng…) và kiến thức ngành riêng biệt để tạo nên một mạng lưới cáckhái niệm, mối liên hệ có thể được tích hợp vào ứng dụng, dịch vụ
Công nghệ xe tự lái
Tháng 10/2017, dựa trên những đầu tư nghiên cứu và năng lực công nghệ chuyên sâu trong mảng công nghệ trí tuệ nhân tạo, phân tích dữ liệu lớn,giao tiếp giữa các phương tiện, điện toán đám mây, nhận diện hình ảnh , FPT Software đã tuyên bố ra mắt công nghệ xe tự lái, trở thành công ty đầu tiên tại Việt Nam ra mắt công nghệ xe tự lái và là một trong số ít các công ty tiên phong trong lĩnh vực xe tự lái tại khu vực Đông Nam Á
Trang 9Theo FPT Software, công nghệ xe tự lái của đơn vị này đang ở cấp độ 3 dựa trên thang đo 5 cấp độ của xe tự lái của Hiệp hội Kỹ sư xe hơi (SAE) Cụ thể, cấp độ 3 là cấp độ
xe tự lái trong một số điều kiện nhất định; người lái không cần chủ động kiểm soát việc điều khiển phương tiện trong toàn bộ thời gian di chuyển và chỉ phải kiểm soát khi có cảnh báo
Công nghệ xe tự hành do FPT Software nghiên cứu, phát triển đã được tích hợp thànhcông trên xe ô tô thương mại 4 chỗ và xe điện cho sân golf FPT cũng đã được Bộ Giao thôngVận tải đồng ý cho thử nghiệm công nghệ xe tự lái trong khuôn viên khu công nghệ cao Hiện FPT Software đang nghiên cứu bổ sung thêm một số tính năng mới, gia tăng độ chính xác về khả năng di chuyển trên một nền tảng xe mới
1.3 Lịch làm việc khi thực tập tại công ty
Em tham gia làm việc tại công ty bắt đầu từ ngày 23/8/2023 tới3/11/2023, các ngày làm việc trong tuần là thứ 2 thứ 4 và thứ 6 là cácngày phải có mặt trên công ti, thứ 3 và thứ 5 có thể lên hoặc không nhưngvẫn phải hoàn thành task nếu được giao Công việc hằng ngày bắt đầu từlúc 8 giờ 15 sáng đến 5 giờ chiều Thời gian nghỉ trưa khoảng 1 tiếng Saumỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câuhỏi và nhận chia sẻ, giải đáp từ anh hướng dẫn, đặt mục tiêu cho ngàylàm việc tiếp theo Mỗi tuần sẽ họp tiến độ tuần 1 lần vào sáng thứ 6, mọingười sẽ cùng họp và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bàihọc, giải pháp và mục tiêu cho tuần tiếp theo Mỗi tháng sẽ tổ chức họcthêm một số kiến thức khác ngoài như quy tắc vận hành của team, quyđịnh bảo mật, quy trình quản lí và xây dựng phần mềm… để trau dồi thêmkiến thức cũng như hiểu thêm về quy trình làm việc thực t61 trong một tổchức lớn chứ không đơn thuần là chỉ code
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: giới thiệu về công ty, cách tổ chức của công ty, được nghe ngườiphụ trách giới thiệu về công ty, quá trình thành lập và phát triển, quy trìnhlàm việc từ cao xuống thấp, cách thức tổ chức của công ty, các phòng ban
về IT, HR, … Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làmviệc trong công ty như thời gian đi làm, các quy định, cách sử dụng emailtrong công việc và được cấp phát thẻ ra vào các phòng Ngoài ra, thực tậpsinh phải đọc và hoàn thành một bài kiểm tra về vấn đề bảo mật dữ liệucủa công ti Sau khi hoàn thành và vược qua bài kiếm tra, thực tập sinh sẽđược cấp quyền và hướng dẫn sử dụng mạng nội bộ cho máy tính cá nhân
2.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung: Trong tuần đầu tiên, em được trainer giao các bài tập nhỏ liênquan đến việc lập trình web sử dụng Spring Framework với database tùychọn Team thống nhất sẽ sử dụng MySql làm hệ quản trị cơ sở dữ liệuchính cho việc thực hiên bài tập cũng như làm dự án sau này
Trang 11Logo của MySQL
Các bài tập này có thời hạn từ 1 – 2 ngày dung để kiểm tra kiến thức củathực tập sinh đối với java cũng như kiến thức về Spring framework Đâycũng là thời gian để em chào hỏi và làm quen với các thành viên trongteam cũng như biết được điểm mạnh và điểm yếu của nhau
Kết quả bài tập sẽ được review vào cuối tuần cụ thể là chiều thứ 6 đểtrainer nắm được tình hình của thực tập sinh
Kết quả: bản thân được nhìn lại xem mình đang có gì và thiếu gì để có kếhoạch học tập và cải thiện bản thân
2.2.2 Tuần 1 - 2
Nội dung: Trong hai tuần này, em được trainer giao tài liệu và tìm hiểu sâu
về Spring framework Vào mỗi 1 giờ chiều sẽ có một cuộc họp để chia sẻkiến thức
Kết quả: Hiểu sâu hơn về Spring framework, về cốt lỗi và cách vận hànhcủa Spring và các thành phần chính của framework Được hiểu về cách tổchức file trong Spring và cách Spring thực hiện hóa dependency injectionthông qua các Bean, đặc biệt là biết thêm kiến thức về Spring Data JPAmột dependency quan trọng của Spring framework giúp cho việc giao tiếpvới database và giúp việc triễn khai Java Persistence API đơn giản hơn
2.2.3 Tuần 3
Nội dung: Trong tuần này, em dành 2 ngày là thứ 2 và thứ 4 để học vềAgile và Scum và thực hiện bài kiểm tra về 2 nỗi dung trên vào cuối buổi
Trang 12học của ngày thứ 4, kết quả bài kiểm tra được đưa vào đánh giá tổng củaquá trình thực tập Vào ngày thứ 6, team em được bàn giao cho một dự ánmẫu nhỏ về quản lý khóa học do FPT đề ra.
2.3.2 Công nghệ
Sử dụng Spring Boot framework với Spring Data JPA để mapping và lấy dữ liệu dễ dàng từ tầng database
Trang 13Spring boot logo
2.3.3 Set up
Tuần đầu tiên là tuần team sẽ set up và thảo luận các chức năng lớn cần làm dựa vào SRS được giao, vì team sẽ thực hiện dự án theo mô hình SRUM nên team sẽ chia mỗi một chức năng lớn sẽ là một sprint Nếu trong quá trình làm mà chức năng đó quá lớn thì sẽ chia nhỏ ra thành nhiều sprint tùy vào số lượng công việc còn lại Sau khi đã hoàn thành việc phântích và chia task thì sẽ bắt đầu vào sprint đầu tiên Vì thời gian thực tập có hạn nên team chỉ được giao làm 3 module chính của hệ thống này là User Management, Syllabus Management
và Training Program Management
Ở sprint đầu tiên, team sẽ thực hiện việc tạo và tổ chức file cho dự án Vì sử dụng Spring framework nên tổ chức các file sẽ như sau:
Trang 14Tổ chức file của dự án
Trong đó:
Folder config sẽ chứa các file config cho dự án bao gồm swagger config dung
để them swagger UI cho việc test API, security config dung để config security của dự án, model mapper config dung cho việc map các entity với các dto và ngược lại
config folder
Các class này sẽ được đánh annotation @Configuration để khi build dự án
Trang 15Class SercurityConfig được đánh dấu là Bean Configuration
Folder controller sẽ chứa các API và endpoint cho từng module lớn, các class này sẽ được đánh annotation @RestController Khi đó ta có thể tạo ra các API với các dạng request như GET, POST, PUT, PATCH, DELETE tùy vào các yêu cầu của từ phía người dung
Trang 16Class SyllabusController được đánh annotation RestController
Trang 17API Get syllabus được đánh annotation GetMapping tương ứng với Get request
Folder dto chứa các Data Transfer Object, các object này sẽ được phân chia làm 2 loại là request object và response object Các request object sẽ được sử dụng để hứng các request dưới dạng json từ phía client và map thành một object, các object này sẽ được đưa vào các service để xữ lí Các response object là các object được trả về từ phía service và được controller gửi đến client dưới dạng json
Trang 18Folder dto của dự án
Trang 19Dto request để tại learning objective
Các dto này có thể là class hoặc interface tùy vào mục đích sử dụng Đối với các dto request sẽ có them các annotation như @NotBlank, @NotNull dung cho việc validate dữ liệu khi các dto hứng các request từ phía client
Folder entities chứa các class entity của dự án
Folder entities
Trang 20 Folder exceptions chứa các xữ lí exception và controller advisor Class
controller advisor sẽ đảm nhận nhiệm vụ bắt exception từ mọi nơi
Folder services chứa các class được đánh dấu annotation @Service để được xem là service của dự án
Folder repository chứa các interface là repository dung để giao tiếp với tầng database
Sau khi set up folder thì sẽ tạo database dựa trên các entities và thiết lập quan hệ giữa các entities
Database model của dự án
2.3.4 Thực hiện:
Sau khi set up xong thì bắt đầu sprint đầu tiên là tạo các entites dựa trên database có sẵn, các entities như RefreshToken được tạo sau dung để phục vụ cho service authen và author Sprint này cũng sẽ tạo ra một số các util là các class hữu ích được sử dụng nhiều trong các service như util chuyển kiểu dữ liểu String sang LocalDatetime, util EmailSender, util PasswordGenerator…
Các sprint tiếp theo sẽ lần lượt thực hiện các API của các Module lớn như User Management, Syllabus Management, Training Program Management
Đối với Syllabus Management, vì việc quản lí syllabus khá phức tạp vì syllabus có quá nhiều thông tin và các thông tin này liên quan tới nhau và lồng vào nhau nên cần phải tách service tạo, update syllabus thành nhiều service nhỏ để dễ dàng quản lí
Sau khi đã gần như xong Module Syllabus thì có một số thay đổi với requirement và team phải tạo thêm các enities draft dùng để quản lí việc tạo các bản draft, các bản draft này
có thể chứa thông tin sai lệch, không đúng với các validation được đặt ra hoặc các object chưa hoàn thiện
Một số tính năng quan trọng của dự án như tạo được syllabus, training program bằng file csv, có các API liên quan đến việc tạo các object phức tạp, có thể tìm kiếm bằng nhiều trường khác nhau Tối ưu hóa được việc lấy dữ liệu thông qua spring data jpa
Trang 212.3.5 Kết quả
Vì chỉ làm ¾ phần của dự án nên team đã hoàn thành toàn bộ các yêu cầu được giao
và buổi báo cáo diễn ra xuông sẻ Các thành viên trong team đã hoàn thành tốt nhiệm vụ của mình và cũng nhờ sự giúp đỡ tận tình của trainer nên công việc diễn ra khá suôn sẻ
CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại FPTSoftware đã giúp em cải thiện bản thânrất nhiều trong quy trình làm việc thực tế, tác phong của người kỹ sư phầnmềm Được làm việc tại đây, em đã học thêm được kỹ năng mềm sử dụngmail, quản lý ticket, làm việc nhóm, giao tiếp với cấp trên, …
Chỉ trong thời gian hạn chế, em đã hoàn thành dự án cá nhân trong quátrình training với các tính năng, yêu cầu đặt ra ban đầu
Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các tác vụ đúnghạn và đạt chất lượng tốt
3.3 Chuẩn đạt được
Goal Mục tiêu môn họ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
G2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ thống trong dự