ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH 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 BACKEND VỚI JAVA Công ty thực tập: TMA Solutions Người phụ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH 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 BACKEND VỚI JAVA
Công ty thực tập: TMA Solutions
Người phụ trách: Đào Duy Khanh
Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa
TP HỒ CHÍ MINH, Tháng 7 năm 2020
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH 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 BACKEND VỚI SPRING FRAMEWORK
Công ty thực tập: TMA Solutions
Người phụ trách: Đào Duy Khanh
Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa
TP HỒ CHÍ MINH, Tháng 7 năm 2020
Trang 3LỜI CẢM ƠN
Lời đầu tiên, tôi xin trân trọng gửi lời cảm ơn đến công ty TMA Solutions đã tạo điều kiện, cơ hội để tôi có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn nhờ sự trợ giúp của nhóm trainer, tôi đã có thể nắm bắt được những kiến thức quan trọng để có thể cơ bản nắm bắt được quy trình làm việc của và các công nghệ được sử dụng trong công việc của nhóm Từ đó có thể ứng dụng các công nghệ đó để áp dựng vào công việc thực tế Xin chân thành cảm ơn các anh chị trong nhóm trainer đã giúp tôi hoàn thành kỳ thực tập này
Đặc biệt, tôi xin chân thành gửi lời cảm ơn đén anh Đào Duy Khanh đã giúp đỡ
cho tôi 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 anh Nguyễn Hoàng Quân, đã training Java, hỗ trợ chúng
em rất nhiều về các vấn đề kỹ thuật về Spring framework, coding convention trong quá
trình thực tập; cảm ơn anh Nguyễn Đỗ Thạnh, đã chỉ dẫn chúng em về cách làm báo
cáo, lên kế hoạch, những kỹ năng không thể thiếu; để 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 Hoàng Trọng Nghĩa
Tp.HCM, 29 Tháng 7 năm 2020
Trang 4Nhận xét của khoa
Trang 5
MỤC LỤC
Mục lục 1
Chương 1 Giới thiệu công ty thực tập 2
1.1 Giới thiệu công ty TMA Solutions 2
1.2 Sản phẩm, dịch vụ của công ty 2
Chương 2 Nội dung thực tập 3
2.1 Tìm hiểu công ty và các kỹ năng trong công ty 3
2.2 Nghiên cứu kĩ thuật 3
2.2.1 Các công cụ làm việc 3
2.2.2 Java nâng cao 3
2.2.3 Spring Framework Core 3
2.2.4 Spring MVC, Spring Data và Spring Security 3
2.2.5 NoSQL và MongoDB 4
2.2.6 RESTful API 4
2.3 Lịch làm việc 4
Tài liệu tham khảo 6
Trang 6Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa Người phụ trách: Đào Duy Khanh
Trang | 2
CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu công ty TMA Solutions
TMA Solutions được thành lập vào tháng 3 năm 1997, bà Bùi Ngọc Anh thành lập công ty TMA với 6 kỹ sư tại phòng khách nhà bà TMA Solutions tự hào là công ty phần mềm hàng đầu Việt Nam với 22 năm phát triển vững mạnh và đội ngũ hơn 2600
kỹ sư tài năng với khách hàng là các công ty công nghệ cao hàng đầu thế giới từ 27 nước Nhiều năm liền TMA vinh dự đạt huy chương vàng đơn vị xuất khẩu phần mềm
và Top 5 ICT Companies TMA đang trên con đường phát triển mạnh mẽ, tạo dựng hình ảnh một công ty phần mềm Việt năng động và chuyên nghiệp trên bản đồ phần mềm thế giới
1.2 Sản phẩm, dịch vụ của công ty
- Các dịch vụ chính của công ty:
o Dịch vụ giải pháp phần mềm
▪ Tư vấn lựa chọn giải pháp
▪ Tích hợp phần mềm
▪ Phần mềm mạng viễn thông
▪ Ứng dụng di động
▪ Ứng dụng quản lý kinh doanh
o Dịch vụ triển khai mạng viễn thông Lắp đặt, nâng cấp mạng và thiết bị viễn thông và kiểm tra toàn diện trước khi hệ thống vận hành
o Dịch vụ đánh giá an toàn thông tin Kiểm tra toàn diện sự an toàn thông tin và năng lực, bảo mật của doanh nghiệp, tìm ra những rủi ro, đề ra những giải pháp khắc phục
o Dịch vụ cơ sở hạ tầng thông tin Tư vấn, lựa chọn giải pháp cho hệ
thống thông tin và mạng máy tính Thiết kế và cài đặt hệ thống mạng máy tính, mạng WiFI, WAN, VPN và điện thoại nội bộ Tư vấn, triển khai và đào tạo về sử dụng phần mềm nguồn mở
Trang 7Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa Người phụ trách: Đào Duy Khanh
CHƯƠNG 2 NỘI DUNG THỰC TẬP
2.1 Tìm hiểu công ty và các kỹ năng trong công ty
Nội dung: HR giới thiệu về công ty, cơ cấu tổ chức, cách sử dụng thẻ từ và email được công ty cấp Giới thiệu về các quy trình bảo mật thông tin của công ty cũng như các phúc lợi dành cho nhân viên
Kết quả: Hiểu thêm về công ty TMA Solutions cũng như các quy trình làm việc tại công
ty
2.2 Nghiên cứu kĩ thuật
2.2.1 Các công cụ làm việc
Nội dung: Tìm hiểu về các công cụ đề làm việc trong dự án như: Eclipse IDE, SourceTree, RingCentral
Kết quả: Có thể sử dụng dễ dàng các công cụ làm việc trong dự án
2.2.2 Java nâng cao
Nội dung: Tìm hiểu về các kỹ thuật nâng cao trong Java đang được sử dụng trong dự
án như: Collection, Design Pattern, SOLID, CRUD, MVC design pattern và Java code convention
Kết quả: Hiểu biết cơ bản về các kiến thức nâng cao Từ đó khi áp dụng thực tế trong
dự án dễ dàng hơn hoặc có thể tự tìm hiểu thêm
2.2.3 Spring Framework Core
Nội dung: Tự tìm hiểu về các kỹ thuật cơ bản của Spring core bao gồm:
• Bean trong Spring và XML config
• Dependency injection và IoC containner trong Spring
• Spring AOP
• Maven
• Bean Scope
Kết quả: Hiểu biết cơ bản về framework Spring cũng như các thành phần cốt lõi được Spring cung cấp cho lập trình viên
2.2.4 Spring MVC, Spring Data và Spring Security
Nội dung: Tìm hiểu cấu trúc một dự án spring MVC, và các thành phần cấu thành như Xây dựng một ứng dụng demo về Spring MVC, sử dụng Spring Data kết nối cơ sở dữ liệu vè Spring security để bảo mật
Kết quả: Tìm hiểu cách sử dụng và áp dụng Spring MVC vào xây dựng một ứng dụng demo có tích hợp với Spring Data và Spring Security
Trang 8Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa Người phụ trách: Đào Duy Khanh
Trang | 4
2.2.5 NoSQL và MongoDB
Nội dung: Tìm hiểu về noSQL, biểu diễn noSQL dạng tài liệu JSON và cách sử dụng MongoDB để sử dụng và quản trị noSQL
Kết quả: Nắm được các tính chất của một noSQL được lưu trữ dưới dạng Json Có thể
áp dụng vào project sắp tới
2.2.6 RESTful API
Nội dung:
- Tìm hiểu RESTful API trong dịch vụ web
- HTTP status code với REST
- Các nguyên tắc thiết kế API: Đặt tên URL, middleware, …
- XML và JSPN binding bằng thư viện Jackson
Kết quả: Hiểu được cơ bản cách phát triển một RESTful API, cơ chết hoạt động, send
và get dữ liệu từ client – server Có thể tạo được các RESTful api đơn giản với Spring framework
2.3 Lịch làm việc
• Lịch làm việc: 3 buổi / tuần
1 - Tìm hiểu về công ty và các quy
định của công ty
- Tìm hiểu về dự án, sản phẩm của
dự án và dối tác
- Tìm hiểu về công nghệ và công
cụ được sử dụng trong dự án
- Làm quen với cách làm việc trong
team, giao tiếp bằng phần mềm,
viết mail báo cáo cho người phụ
trách mỗi buổi, giờ giấc làm việc
của team
HR
2 - Tìm hiểu Java nâng cao
+ Collection
+ CRUD
+ Java Convention
+ Logger
Nguyễn Hoàng Quân Đạt
3 - Tìm hiểu Spring core
+ Dependency Injection / IoC
containner
+ Bean Factory
Nguyễn Hoàng Quân Đạt
Trang 9Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa Người phụ trách: Đào Duy Khanh
+ Spring XML configuration /
Java-based Container
Configuration
+ Spring application work flow
4 - Tìm hiểu Spring MVC:
+ MVC trong Spring
+ Viết một số controller đơn giản
+ Cấu hình các file xml,
Dispatcher-servlet
+ JSP / JSTL để làm fornt-end
- Spring Data:
+ Kết nối cơ sở dữ liệu với
Spring
+ ORM
+ Object mapping
+ Các thư viện con như Spring
data JPA, Spring Data JDBC
- Spring Security
+ integration vào Spring MVC
+ Oauth bằng Spring Security
- xây dựng một ứng dụng web
demo
Nguyễn Hoàng Quân Đạt
5 Tìm hiểu về noSQL và MongoBD
Thực hiện project lớn bằng các
công nghệ đã tìm hiểu trong thời
gian thực tập
Nguyễn Hoàng Quân Đạt
6 Tìm hiểu về RESTful API,
Postman để test API
Chuyển đồi project thành Restful
API
Nguyễn Hoàng Quân, Nguyễn Đỗ Thạnh Đạt
7 Tìm hiểu về SOLID Hoàn thiện lại
đồ án theo nguyên tắc thiết kế
SOLID
Nguyễn Hoàng Quân Đạt
8 Tìm hiểu JMS API, Spring JMS và
ActiveMQ
Áp dụng các kiến thức đã tìm hiểu
và hoàn thiện:
+ Tách project thành nhiều
project nhỏ hơn Gửi tin nhắn với
nhau bằng Spring JMS
Nguyễn Hoàng Quân Đạt
Trang 10Thực tập sinh: Nguyễn Hoàng Trọng Nghĩa Người phụ trách: Đào Duy Khanh
Trang | 6
TÀI LIỆU THAM KHẢO
Tài liệu Tiếng Việt
[1] Slides môn Công Nghệ Phần mềm chuyên sâu, Ths Trần Anh Dũng
[2] Slides môn Phân tích Thiết kế Hệ thống thông tin, Trường Đại học Công nghệ thông tin
[3] Slides môn Nhập môn Công Nghệ phần mềm, TS Nguyễn Tấn Trần Minh Khang
Tài liệu Tiếng Anh
[4] Eric J Braude, Michael E Bernstein (2011) Software Engineering Modern
Approaches 2nd