1 Trần Hoàng Phúc / Trần Thị Thuỳ Dương Võ Tấn Việt 19522519 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 HỆ THỐNG QUẢN LÝ HỌC VIÊN Công ty thực tập Công ty TNHH Phần mề[.]
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 3LỜI MỞ ĐẦU
Trong những năm gần đây, công nghệ thông tin đang từng bước hội nhập với đời sống của con người Nhiều ngành nghề liên quan đến lĩnh vực này cũng theo đó mà phát triển để bắt kịp với xu hướng công nghệ của thế giới Với tốc độ phát triển vô cùng mạnh mẽ đó, lập trình web đang là lĩnh vực hot và nhận được sự quan tâm của đông đảo sinh viên công nghệ thông tin đang ngồi trên ghế nhà trường Nếu lập trình viên front-end có quyền lực kiến tạo nên vẻ đẹp của các trang web, thì lập trình viên back-end là người xử lý mọi logic nghiệp vụ phức tạp ở ẩn phía sau giúp cho hệ thống hoạt động trơn tru Vì lý do này, em quyết định chọn lập trình web làm định hướng cho việc học tập của mình
Sau ba năm mài mò, nghiên cứu, học tập trên trường, với mong muốn có thêm kinh nghiệm làm việc ở môi trường thực tế, em có dự định là sẽ thực tập trong hè Vì vậy, em quyết định chọn FPT Software - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em hiện thực được dự định này
Trang 4Đặc biệt cảm ơn anh Trần Hoàng Phúc đã dành thời gian quý báu hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong việc tiếp cận công nghệ mới là framework Spring Boot và kiến trúc Microservices và cả những , bên cạnh đó anh cũng chỉ dẫn chúng em cách viết báo cáo, lên kế hoạch, những kỹ năng lập trình cũng như những kỹ năng mềm khác không thể thiếu khi đi làm sau này; cảm ơn chị Trần Thị Thuỳ Dương, đã chỉ dẫn, hỗ trợ chúng
em rất nhiều về quy trình nghiệp vụ để hoàn thành dự án và cách hoà nhập với môi trường làm việc trong công ty cụ thể là FSoft
Cuối cùng 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 cho em làm bài báo cáo thực tập này
Võ Tấn Việt
TP HCM, ngày 20 tháng 08 năm 2022
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
MỤC LỤC
LỜI MỞ ĐẦU 3
LỜI CẢM ƠN 4
MỤC LỤC 6
Chương 1: Giới thiệu công ty thực tập 7
1.1 Giới thiệu công ty TNHH Phần mềm FPT 7
1.2 Sản phẩm của công ty 7
Chương 2: Nội dung thực tập 9
1.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
1.2 Nghiên cứu kỹ thuật 9
1.2.1 Các công cụ làm việc 9
1.2.2 Spring Boot 10
1.2.3 Microservices 13
1.3 Thực hiện project 14
1.4 Lịch làm việc 14
Chương 3: Chi tiết về project 19
1.1 Giới thiệu về dự án 19
1.2 Thực hiện 20
1.3 Kế hoạch 21
TÀI LIỆU THAM KHẢO 22
TỔNG KẾT 23
Trang 7Chương 1: Giới thiệu công ty thực tập
1.1 Giới thiệu công ty TNHH Phần mềm FPT
FPT Software là tên gọi khác của công ty TNHH Phần mềm FPT (gọi tắt là FSOFT), trực thuộc tập đoàn FPT với nhiệm vụ chính là gia công phần mềm tại Việt Nam và nước ngoài
Thành lập từ năm 1988 đến nay với 3 Trụ sở chính FPT Software đặt tại Việt Nam
và một số nước trên toàn thế giới như Hoa Kỳ, Nhật Bản, Malaysia, Đức, Úc, Singapore, Malaysia, Thái Lan và Philipines hiện FPT Software đáp ứng nhu cầu gia công phần mềm lớn cho hơn 150 công ty hàng đầu tại 20 quốc gia lớn nhất trên thế giới hiện nay với các hợp đồng lớn có khi đạt cả 1 triệu USD dành cho một số đối tác lớn như Hitachi, NEOPOST, Petronas, Deutsche Bank, và Unilever với hơn 4000 nhân viên trên toàn thế giới
FPT Software theo đuổi mục tiêu gia công phần mềm để đáp ứng cho nhu cầu phát triển CNTT của các hãng phần mềm trong nước, các công ty lớn trong nước và tham vọng hơn là xuất khẩu phần mềm trên toàn thế giới cho các công ty nước ngoài biết đến tập đoàn FPT, mục đích chính là vươn đến tầm cao mới thông qua công nghệ nhằm nâng cao năng suất lao động
FPT Software đã vinh dự nhận được các chứng chỉ thế giới về chất lượng và bảo mật như: CMMI 5 và ISO 27001: 2005, ISO 20000
1.2 Sản phẩm của công ty
FPT Software cung cấp các dịch vụ đạt tiêu chuẩn quốc tế ở các mảng:
• Dịch vụ phần mềm truyền thống (Application Services, Business Application Services, Legacy Migration, Testing & BPO)
Trang 8• Dịch vụ Digital Age Sercvices (Cloud, Mobility, Analytics & Internet of Things)
• Dịch vụ Product Engineering bao gồm Embedded System, CAD/CAM và IC Design
Kinh doanh của FPT Sofware xuất phát từ Công nghệ thông tin và Viễn Thông FPT là cốt lõi để đáp ứng cho khách hàng trên 63 tỉnh thành trên toàn lãnh thổ Việt Nam và mở rộng đến khách hàng toàn cầu Từ khi được thành lập cho đến nay, FPT Software đã là công ty phần mềm số 1 tại Việt Nam trong lĩnh vực tích hợp hệ thống, phân phối và bán lẻ, dịch vụ Công Nghệ Thông tin, xuất khẩu gia công phần mềm, bán lẻ sản phẩm CNTT
Ở lĩnh vực Viễn Thông FPT là một trong 3 nhà cung cấp dịch vụ internet cáp quang FPT hàng đầu tại Việt Nam, Về lĩnh vực quảng cáo, FPT là đơn vị quảng cáo trực tuyến số 1 tại Việt Nam với trang báo điện tử VNexpress với hơn 42 triệu lượt truy cập mỗi ngày
Trang 9Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Hệ thống quản lý học viên FSoft” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về kỹ năng lập trình web back-end, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, viết báo cáo, giao tiếp, trình bày báo cáo tiến độ công việc Tại công ty, sinh viên có cơ hội được học tập, khám phá văn hoá FSoft và làm việc trong một môi trường làm việc gần như giống với thực tế cũng như tham gia các hoạt động ngoài giờ với mọi người trong công ty
1.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 hoạt động của công ty Các quy định,
hướng dẫn khi làm việc
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty thông qua lời nói, slide, video, hình ảnh
Ngoài ra, thực tập sinh còn được phổ biến 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 phải tuân thủ, cách sử dụng email trong công việc, thông tin liên lạc của trainer, admin và mentor…
Kết quả: Hiểu thêm về FSoft, quá trình thành lập và phát triển, văn hoá của công ty Có
thêm các kỹ năng về việc sử dụng email trong công việc, kỹ năng trình bày báo cáo, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
1.2 Nghiên cứu kỹ thuật
1.2.1 Các công cụ làm việc
Thời gian : Xuyên suốt thời gian thực tập
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
Trong thời gian này, thực tập sinh có cơ hội tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như:
Trang 10- Draw.io: Phần mềm vẽ đồ thị đa nền tảng mã nguồn mở miễn phí được phát triển bằng HTML5 và JavaScript
- GitLab – Hệ thống self-hosted mã nguồn mở dựa trên hệ thống máy chủ Git dùng để quản lý mã nguồn
- PostgreSQL: Hệ quản trị cơ sở dữ liệu quan hệ - đối tượng
- Postman: Nền tảng API dành cho các nhà phát triển thiết kế, xây dựng, thử nghiệm và lặp lại các API
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Phân tích yêu cầu, thiết kế hệ thống, lập trình sử dụng các công cụ miễn
phí, giúp dễ dàng kết hợp các công cụ với nhau
1.2.2 Spring Boot
Nội dung : Tìm hiểu về Spring Boot – framework hỗ trợ lập trình Java back-end
- Luồng xử lý của Spring Boot:
Cấu trúc ứng dụng Spring Boot tuân theo 2 mô hình cơ bản: MVC và 3 lớp
o Repository layer: Service còn có thể tương tác với service khác, hoặc dùng Repository để gọi DB thông qua định nghĩa các DAO class thao tác với DB được triển khai thông qua 1 tầng abstraction ở JPA implement Repository
là trực tiếp tương tác, đọc ghi dữ liệu trong DB và trả cho service
o Service layer: Chứa các code tính toán, xử lý chính Khi Controller yêu cầu, thì Service tương ứng sẽ tiếp nhận và cho ra dữ liệu trả cho Controller,
là cầu nối giữa controller và repository
o Controller layer: Trả về View (có chứa data sẵn, dạng trang HTML), hoặc Model thể hiện dưới dạng API cho View, chỉ để endpoint cụ thể cho các API
➔ Controller nhận DTO Sau đó Service sẽ chuyển DTO thành Model/Entity, rồi xử lý business Cuối cùng Repository nhận Entity đưa vào DB Ngược lại, Repository lấy Entity từ DB Sau đó Service xử lý và chuyển thành DTO Controller trả về DTO
Trang 11Từ private và public có 3 dạng data chính:
o DTO (Data transfer object): Là các class đóng gói data để chuyển giữa client - server hoặc giữa các service trong microservice Mục đích tạo ra DTO là để giảm bớt lượng info không cần thiết phải chuyển đi, và cũng tăng cường độ bảo mật
o Domain model: Là các class đại diện cho các domain, hiểu là các đối tượng thuộc business như Client, Report, Department chẳng hạn Trong ứng dụng thực, các class đại diện cho kết quả tính toán, các class làm tham số đầu vào cho service tính toán được coi là domain model
o Entity: Cũng là domain model nhưng tương ứng với table trong DB, có thể map vào DB được Định nghĩa entity ánh xạ tới các column trong table tương ứng với DB
- Spring Boot xử lý request trong controller:
Controller trong ứng dụng Spring Boot là nơi tiếp nhận request và trả về response cho client Tuỳ vào dữ liệu nằm ở đâu có các cách lấy ra khác nhau: Request param (query string), Path variable, Request body, Header Các loại HTTP method: Create (POST), Read (GET), Update (PUT/PATCH), Delete (DELETE)
- Xử lý response trong Controller khi dùng:
Trang 12o @ResponseBody và @ResponseSatus: Với REST API, dữ liệu khi trả về sẽ nằm trong response body, dạng JSON Mặc định Spring Boot sẽ trả về một
số status code như 200, 401…
o Class ResponseEntity<T>: Có thể tùy chỉnh status code, body response tùy vào các điều kiện khác nhau, vừa có thể chỉnh các thông số response khác như header,
- Xử lý exception phát sinh:
Exception cơ bản là đối tượng đại diện cho một lỗi xảy ra khi chạy chương trình Lỗi này có thể do tác động bên ngoài hoặc chính trong code ném ra Nhiệm vụ của chúng ta là phải "bắt" và "xử lý" chúng một cách thích hợp (đưa ra thông báo lỗi ) Nếu exception không được xử lý, nó có thể làm chương trình bị dừng Giải pháp: Tạo các exception class tuỳ chỉnh
Thực hiện :
- Tự tìm hiểu các kiến thức và áp dụng vào dự án của công ty
Kết quả :
- Trau dồi kỹ năng lập trình back-end Java với framework Spring Boot
- Có được những kiến thức quan trọng cho việc lập trình web sau này
Trang 13- 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
1.2.3 Microservices
Nguồn:https://tigosoftware.com/vi/kien-truc-microservice-la-gi-cung-tim-hieu-trong-10-phut
Nội dung: Các kiến thức cơ bản về microservices
- Khái niệm cơ bản về microservices:
Là một kiếu kiến trúc phần mềm Các module trong phần mềm này được chia thành các service rất nhỏ (microservice) Mỗi service sẽ được đặt trên một server riêng nên dễ dàng
để nâng cấp và scale ứng dụng
- Eureka server:
Là máy chủ để quản lý, đặt tên cho các services, hay còn gọi là service registry
Nó dùng để hardcore địa chỉ IP của mỗi service Khi các service sử dụng IP động thì nó sẽ tự động cập nhật mà không cần thay đổi code bên trong
- OpenFeign:
Trang 14Dùng để call đến service khác thay cho RestTemplate
- API gateway:
Cho phép cấu hình để khi một request tới nó thì nó sẽ forward request đến service được chỉ định
- Load balancing (Cân bằng tải):
Là quá trình phân phối lưu lượng giữa các phiên bản khác nhau của cùng một ứng dụng, bất cứ khi nào một service cần giao tiếp với service khác, nó cần chọn một phiên bản cụ thể để gửi yêu cầu của nó
Thực hiện :
- Tìm hiểu về kiến trúc microservices, ưu điểm, nhược điểm
Kết quả :
- Hiểu được những khái niệm cơ bản về microservices
- Áp dụng vào dự án Spring Boot
1.3 Thực hiện project
Sau một tháng được tìm hiểu requirement và kiến thức liên quan đến Spring Boot, thực tập sinh đã nắm được những kiến thực cơ bản về Spring Boot Trong những tháng tiếp theo, mentor đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một dự án quản lý học viên theo mô hình kiến trúc microservices
Chi tiết đồ án sẽ được nói ở phần sau
1.4 Lịch làm việc
Tuần Công việc Người hướng dẫn
Mức
độ hoàn
Nhận xét của người hướng dẫn
Trang 15thành
1
- Tìm hiểu về công
ty, cách tổ chức, quy định của công
ty
- Học cách trao đổi, làm việc qua email
- Ôn lại Java core
- Tìm hiểu về cách hoạt động của Spring Boot, Authorization trong Spring Security và báo cáo với mentor
Anh Âu Mậu Dương (Trainer) Chị Trần Thị Thuỳ Dương (Admin) Anh Trần Hoàng Phúc (Mentor)
100%
2
- Họp, tìm hiểu, phân tích requirement của
hệ thống
- Viết danh sách chức năng
- Viết SRS
- Vẽ use-case diagram, đặc tả các user-case
Chị Trần Thị Thuỳ Dương
Anh Trung Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
100%
Trang 164
- Tạo dự án Spring Boot theo mô hình của chung giữa các nhóm
- Cấu hình kết nối Spring Boot với DB PostgreSQL,
MySQL
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
- Viết API get điểm của tất cả trainees
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
100%
6
Spring 1-2:
- Viết API cập nhật điểm thành phần quiz, assignment, final của học viên
- Xử lý exception handling class
- Tạo base response, request JSON
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
Chị Trần Thị Thuỳ Dương
100%
Trang 17academic, final module mark
- Viết API xoá module subject
8
Spring 2-2:
- Fix bug API lấy tất
cả điểm của học viên trong 1 module
- Fix bug tính điểm của học viên
- Review merge request của các services trên GitLab
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
100%
9
- Deploy code lên Heroku
- Test API trên server
- Fix bug khi đưa data từ DB lên front-end
- Hỗ trợ team test API và fix bug
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
- Viết hoàn chỉnh các tài liệu SRS, API
Anh Trần Hoàng Phúc
Chị Trần Thị Thuỳ Dương
Anh Trung
100%
Trang 18- Meeting tổng kết về điểm và đánh giá
Trang 19Chương 3: Chi tiết về project
1.1 Giới thiệu về dự án
Trước đây admin thường làm công việc quản lý học viên bao gồm nhập liệu file excel, xuất báo cáo theo tuần / tháng, điểm danh học viên mỗi ngày học cũng như lên lịch, gửi email một cách thủ công Giờ đây, website Fresher Management ra đời với mục đích là quản lý học viên của FSoft một cách tự động
Website có các tính năng:
- Quản lý người dùng và role
- Quản lý học viên theo lớp và năm
- Tính lương học viên theo năm, lớp và tháng
- Quản lý điểm thưởng, điểm phạt theo lớp và năm
- Quản lý feedback theo năm và khoá học
- Quản lý điểm của học viên theo tháng và lớp
- Quản lý topic và điểm của học viên theo lớp
- Quản lý kho câu hỏi audit (vấn đáp)
- Đặt lịch cho buổi audit
- Quản lý người audit
- Quản lý đánh giá học viên theo lớp
- Quản lý lớp học
- Quản lý khoá học
- Quản lý điểm danh theo tháng