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 JAVA DEVELOPER Công ty thực tập TMA Solutions Người phụ trách Nguyễn Văn Mẫn Thực tập sinh Tống Đức Dũng TP Hồ Chí Minh, thá[.]
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
JAVA DEVELOPER
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
JAVA DEVELOPER
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 3Ngày nay, ngành công nghiệp phần mềm đã và đang là một trong những ngành
nghề có sức phát triển hết sức mạnh mẽ, chiếm tỉ trọng lớn trong nền kinh tế toàn cầu và
vẫn còn tiềm năng phát triển rất lớn Cùng với những vấn đề nhằm nâng cao chất lượng
cuộc sống con người, nâng cao hiệu suất làm việc, thúc đẩy phát triển cho các ngành
nghề khác, nhu cầu về phát triển phần mềm hiện là cao hơn bao giờ hết Đứng trước nhu
cầu này, cùng với đà phát triển không hề có dấu hiệu chững lại, đã có vô số công ty ra đời
nhằm đáp ứng nhu cầu thị trường
Một trong những công ty hàng đầu Việt Nam, có hơn 25 năm kinh nghiệp trong
lĩnh vực gia công phần mềm, đó chính là TMA Solutions – Công ty TNHH giải pháp
phần mềm Tường Minh Là một cây đại thụ trong lĩnh vực công nghệ phần mềm, TMA
Solutions luôn mang trong mình ba phương châm: Respect, Honesty, Commitment
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ư muốn được tham gia hoạt động trong một môi trường chuyên nghiệp, đồng thời
nhận thấy các giá trị, môi trường, mục tiêu mà TMA Solutions mang lại đáp ứng rất đúng
với nhu cầu của bản thân, em đã quyết định chọn TMA Solutions là nơi bắt đầu cho sự
nghiệp, là nơi đầu tiên áp dụng những kiến thức tích lũy được từ môi trường giảng
đường
Trang 4Trân trọng gửi lời cảm ơn Công ty TNHH giải pháp phần mềm Tường Minh đã
tạo điều kiện cho em có cơ hội được thực tập tại công ty
Tuy thời gian thực tập kéo dài không lâu, nhưng nhờ sự nhiệt tình hỗ trợ của
mentor và team member, bản thân em đã tiếp thu được những kiến thức thực tiễn quý
báu, được tham gia vào dự án thực tế, được làm việc trong một môi trường năng động,
nhờ đó em có thể hiểu thêm hiểu biết về lĩnh vực gia công phần mềm Chân thành cảm ơn
các anh chị trong nhóm, đã bỏ ra nhiều thời gian, công sức để hướng dẫn em hoàn thành
tốt đợt thực tập này
Đặc biệt cảm ơn anh Nguyễn Hữu Đạt, đã training Java, Spring và các công cụ
liên quan, hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong công việc,
trong dự án, đến những khó khăn việc làm quen với môi trường mới Cảm ơn anh Võ
Văn Quân, team leader đã giúp em hòa đông với các thành viên trong nhóm, đã giúp em
trong các quy trình thủ tục của công ty, tạo điều kiện môi trường tốt nhất cho em học hỏi
và làm việc Cảm ơn anh Nguyễn Văn Mẫn, manager đã tạo điều kiện cho em được học
tập và làm việc trong một đại gia đình hòa đồng, chuyên nghiệp và rất vui vẻ, luôn kịp
thời thăm hỏi, động viên và định hướng cho em trong suốt quá trình thực tập
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
TP HCM, ngày 18 tháng 12 năm 2022
Tống Đức Dũng
Trang 5
Trang 6
MỤC LỤC
MỤC LỤC 1
CHƯƠNG I: GIỚI THIỆU CÔNG TY THỰC TẬP 2
1 Giới thiệu công ty TMA Solutions 2
2 Sản phẩm của công ty 2
CHƯƠNG II: NỘI DUNG THỰC TẬP 4
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 4
2 Nghiên cứu kỹ thuật 4
2.1 Các công cụ làm việc 4
2.2 Tìm hiểu ngôn ngữ Java nâng cao 5
2.3 Lập trình Java với Spring framework 6
2.4 Lập trình Front-end với TailwindCSS 8
CHƯƠNG III: CHI TIẾT VỀ PROJECT 13
1 Giới thiệu về project 13
1.1 Yêu cầu 13
1.2 Các chức năng chính 13
2 Thực hiện 14
3 Kế hoạch 14
CHƯƠNG IV: KẾT QUẢ 16
TỔNG KẾT 18
TÀI LIỆU THAM KHẢO 19
Trang 7CHƯƠNG I: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu công ty TMA Solutions
TMA Solutions được thành lập năm 1997 tại Việt Nam, hiện là công ty hàngđầu Việt Nam về phát triển và gia công phần mềm Với sự phát triển vững mạnhsuốt 25 năm qua, TMA Solutions 16 năm qua liên tiếp lọt top 10 công tyFinTech, AI và IoT Được nhiều tờ trong cả trong và ngoài nước thường xuyênđưa tin
TMA Solutions hiện có 7 chi nhánh tại Việt Nam (6 tại thành phố Hồ ChíMinh và 1 tại thành phố Quy Nhơn) cùng với 6 văn phòng ở nước ngoài (Mỹ,Canada, Pháp, Nhật, Úc, Singapore) với đội ngũ hơn 3800 kỹ sư tài năng, nhiệthuyết
TMA đã có gần 10 năm làm việc với các tập đoàn công nghệ hàng đầu thế giới
và các trường đại học lớn về công nghệ 4.0 với hơn 300 kỹ sư kinh nghiệm trongcác lĩnh vực Trí tuệ nhân tạo, Khoa học dữ liệu, IoT, 4G/5G,…
2 Sản phẩm của công ty
TMA Solutions chuyên cung cấp các dịch vụ và giải pháp liên quan nhiều lĩnhvực trong đời sống như tài chính – ngân hàng, thương mại điện tử, bất động sản,bảo hiểm, viễn thông, giáo dục,
Trang 8TMA Solutions hiện là đối tác tin cậy có nhiều năm kinh nghiệm thực hiệnnhững dự án lớn và phức tạp với những công nghệ mới nhất với hơn 100 kháchhàng đến từ 30 quốc gia trên thế giới như các thị trường Bắc Mỹ, Châu Âu, NhậtBản, Hàn Quốc, Ấn Độ,… Có thể kể đến một số khách hàng truyền thống từ nhiềunăm qua của TMA Solution như Avaya, Nokia, Mitel, Atacel-Lucent,…
Ngoài là đối tác gia công cho các công ty nước ngoài, TMA còn tự mình pháttriển nhiều bản phẩm thông qua công ty thành viên TMA Innovation đã được ứngdụng rộng rãi và thu được phản hồi tích cực cũng như đem lại lợi nhuận cao
Trang 9CHƯƠNG II: NỘI DUNG THỰC TẬP
Nội dung chính của thời gian thực tập là nghiên cứu ngôn ngữ lập trình Java và xâydựng ứng dụng trên nền tảng Java với Spring framwork Giúp thực tập sinh được đào tạo vềngôn ngữ lập trình Java, đồng thời rèn luyện các kỹ năng mềm như làm việc nhóm, thuyếttrình, giao tiếp, được làm việc trong một môi trường chuyên nghiệp, có quy trình rõ ràng,được tham gia các buổi training, và hơn hết được tham gia vào dự án chính thức của công ty
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 5 ngày (1 tuần)
Nội dung: Giới thiệu về công ty, cách tổ chức, giá trị cốt lõi, quy trình làm việc và xử
lý công việc, cải thiện các kỹ năng mềm
Được nghe trainer giới thiệu về công ty, quá trình thành lập và phát triển, quytrình làm việc từ cao xuống thấp, cách thức tổ chức của công ty Cách thức xử lý cácvấn đề phát sinh trong lúc làm việc từ các vấn đề về nhân sự, pháp lý đến máy móc,…
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công tynhư 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ôngviệc, các kỹ năng mềm
Kết quả: Hiểu thêm về công ty, quá trình thành lập và phát triển, giá trị cốt lõi Có
thêm các kỹ năng mềm giúp ích trong công việc, làm việc có kế hoạch, có kỷ luật, cótrách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công cụ làm việc
Thời gian: 4 ngày
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, supervisor đã hướng dẫn thực tập sinh tìm hiểu về cáccô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ư Jira sử dụng trong quản lý công việc; IntelliJ IDEA một IDE rất hữu ích vàphổ biến với lập trình viên, đặc biệt là đối với lập trình viên Java
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Trang 10Kết quả: 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
2.2 Tìm hiểu ngôn ngữ Java nâng cao
Thời gian: 5 ngày (1 tuần)
Nội dung: Tìm hiểu về kiến thức và các kỹ thuật Java nâng cao.
- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niêm, các đặc tínhnhư tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình
- Generics:
Thuật ngữ “generics” được hiểu là tham số hóa kiểu dữ liệu Việc tham số hóakiểu dữ liệu giúp cho lập trình viên có thể dễ bắt lỗi các kiểu dữ liệu khônghợp lệ, đồng thời giúp dễ dàng hơn cho việc tạo và sử dụng các class, interface,method với nhiều kiểu dữ liệu khác nhau
- JPA (Java Persistence API):
JPA cung cấp đầy đủ các công cụ cho phép chúng ta có thể thao tác với cơ sở
dữ liệu một cách đơn giản và nhanh chóng JPA có thể dùng để persist một đốitượng Java (POJO – Plain Old Java Object) vào trong cơ sở dữ liệu hoặc lấy
dữ liệu từ cơ sở dữ liệu và ánh xạ (mapping) ra các đối tượng Java một cáchđơn giản
- Design pattern: creational patterns (Signleton & Factory)
Tìm hiểu về các mẫu thiết kế khởi tạo: Signleton và Factory (Factory Method
& Abstract Factory) và ví dụ của các mẫu thiết kế trong ngôn ngữ lập trìnhJava
- Java Collection
Java collections là một khuôn khổ cung cấp một kiến trúc để lưu trữ và thao táctới nhóm các đối tượng Tất cả các hoạt động mà bạn thực hiện trên một dữliệu như tìm kiếm, phân loại, chèn, xóa, có thể được thực hiện bởi JavaCollections
Collection trong java là một root interface trong hệ thống cấp bậc Collection.Java Collection cung cấp nhiều interface (Set, List, Queue, Deque,… ) và các
Trang 11lớp (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet,TreeSet,…).
Thực hiện:
- Nghiên cứu tài liệu được cung cấp kết hợp với tài liệu tự tham khảo
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả:
- Nâng cao kỹ năng lập trình với ngôn ngữ lập trình Java
- Có được những kiến thức quan trọng cho việc lập trình Java
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúngchuẩn, dễ đọc, dễ hiểu
2.3 Lập trình Java với Spring framework
Thời gian: 10 ngày (2 tuần)
Nội dung: Tìm hiểu kiến thức cơ bản về Spring và các vấn đề liên quan để có thể
tạo ra một ứng dụng server side cơ bản
- Khái niệm cơ bản về Spring framework
Trang 12Spring framework bao gồm nhiều modules như core, bean, context, AOP,JDBC, ORM, Servlet, Struts,… Các module được gom nhóm thành các nhómnhư Test, Spring Core Containter, Data Access/ Integration,…
- IoC Containter (Spring Container)
IoC (Inversion of Control): Đảo ngược điều khiển, nó giúp làm thay đổi luồngđiều khiển của chương trình một cách linh hoạt Thường dùng vớiDenpendency Injection
Trong Spring, Spring Container (IoC Container) sẽ tạo các đối tượng, lắp rắpchúng lại với nhau, cấu hình các đối tượng và quản lý vòng đời của chúng từlúc tạo ra cho đến lúc bị hủy Spring container sử dụng DI (DependencyInjection) để quản lý các thành phần, đối tượng để tạo nên 1 ứng dụng Cácthành phần, đối tượng này gọi là Spring Bean Để tạo đối tượng, cấu hình, lắprắp chúng, Spring Container sẽ đọc thông tin từ các file xml và thực thi chúng
- Dependency Injection:
Dependency Injection là một mẫu thiết kế, là khía cạnh cơ bản của Springframework, qua đó Spring container “inject” các đối tượng vào các đối tượngkhác hoặc “dependencies” Điều này giúp chuyển trách nhiệm quản lý cácdenpendency cho Spring container
- AOP (Aspect Oriented Programming)
Lập trình hướng khía cạnh, là một kỹ thuật lập trình nhằm phân tác chươngtrình thành các module riêng rẽ, phân biệt, không phụ thuộc vào nhau
- Spring Autowired
Thông thường, chúng ta phải khai báo các bean hoặc component cần sử dụngtrong file XML để Spring container có thể tìm và quản lý Thực tế Spring cóthể tự động tìm dò và tạo các bean từ các package của ứng dụng bằng cách sửdụng các Annotation Một số annotation thường được sử dụng trong Spring
như @Component, @Repository, @Service, @Controller.
Trang 13- Spring Data JPA
Dựa trên JPA, Spring Data JPA tích hợp ứng dụng xây dựng bằng nền tảngSpring với JPA bằng việc cung cấp các JpaTemplates Việc sử dụng JPA giúprút ngắn thời gian viết code tương tác truy vấn tới cơ sở dữ liệu
- Spring Security
Spring Security cung cấp nhiều tính năng bảo mật như authentication,authorization cho ứng dụng Java Authorization giúp ứng dụng xác thực quyền
để có thể thực hiện các yêu cầu trong ứng dụng
Spring Security hỗ trợ nhiều loại xác thực như HTTP Basic authenticationheaders, Form-based authentication,… Trong đó HTTP Basic authenticationheader là loại xác thực được sử dụng rộng rãi với việc yêu cầu token mỗi lầnthực hiện request để thực hiện xác thực
- Spring Boot
Là một project được xây dựng trên nền tảng của Spring Framework Cung cấpcác các thức dễ dàng hơn, nhanh hơn để xây dựng ứng dụng nền tảng web Nóingắn gọn, Spring Boot là sự kết hợp của Spring framework và các EmbeddedServer
Thực hiện:
- Tham gia đầy đủ các buổi trainning
- Đọc hiểu các tài liệu được cung cấp cũng như tài liệu tự tìm hiểu của bản thân
- Thực hiện các bài tập để củng cố kiến thức
Kết quả:
- Hiểu được những khái niệm cơ bản trong lập trình Java với Spring
- Xây dựng được cấu trúc ứng dụng sử dụng Spring và Java
2.4 Lập trình Front-end với TailwindCSS
Trang 14Thời gian: 10 ngày (2 tuần)
Nội dung: Tìm hiểu kiến thức cơ bản về framework CSS TailwindCSS để xây
dựng giao diện client cho ứng dụng
- TailwindCSS: Là một ultility-first CSS framework, bao gồm các built-in class
chứa các thuộc tính CSS, chúng ta có thể sử dụng các CSS class này bằng cáchkết hợp chúng
- Built-in class: Các class được viết sẵn trong Tailwind bao gồm tất cả mọi thuộc
tính CSS cơ bản nhất và được đặt tên theo chính xác ý nghĩa của thuộc tính màclass đó được viết, bằng cách sử dụng built-in class, ta không cần phải viết bất
kỳ dòng CSS nào mà vẫn có thể thêm bớt thuộc tính CSS cho giao diện
- TailwindCSS cho phép mức độ tùy biến giao diện ở mức chuyên sâu, tuykhông có những component được xây dựng sẵn như Bootstrap, chúng ta vẫn cóthể tùy biến giao diện thông qua việc sử dụng built-in CSS
Thực hiện:
- Đọc hiểu các tài liệu cá nhân tự tìm kiếm và tài liệu chính thức của Tailwind
- Luyện tập sử dụng build-in class
- Áp dụng vào project thực tập
Kết quả:
- Hiểu, biết cách cấu hình và sử dụng thành thạo TailwindCSS
- Áp dụng TailwindCSS vào ứng dụng client side
Trang 154 Lịch làm việc
Tuần Công việc Người hướng dẫn
Mức độ hoàn thành
- Review lại kiến thức đã học,report tiến độ công việc hằngngày
Anh Nguyễn Hữu Đạt
3 - Tìm hiểu ngôn ngữ lập trình
JavaScript cùng với HTML
- Tìm hiểu và áp dụngTailwindCSS để xây dựng giaodiện
- Review lại kiến thức đã học,report tiến độ công việc hằngngày
Anh Nguyễn Hữu Đạt
Trang 16Anh Nguyễn Hữu Đạt
5
Giai đoạn hai
- Thiết kế giao diện cho client side
- Xây dựng giao diện hoàn thiệncho phía client side với HTML,JavasScript và TailwindCSS
- Review lại kiến thức đã học,report tiến độ công việc hằngngày
Anh Nguyễn Hữu Đạt
6
Giai đoạn ba
- Tích hợp API đã hoàn thành ởgiai đoạn một vào client side
- Hoàn hiện và sửa lỗi tồn đọng vàphát sinh khi tích hợp
- Phát triển thêm một số tính năngnâng cao
- Review lại kiến thức đã học,report tiến độ công việc hằngngày
Anh Nguyễn Hữu Đạt
Trang 17- Đọc hiểu source code dự án theodomain được phân công
- Luyện tập sử dụng các công cụphục vụ dự án
- Tìm hiểu quy trình, các thức làmviệc
- Nghiên cứu về vai trò BuildPolice với Jenkins
Anh Nguyễn Hữu Đạt
8
- Báo cáo cuối đợt thực tập
- Nộp báo cáo final
- Được cấp account để làm việctrong dự án chính thức
- Được nhận offer để trở thànhnhân viên chính thức
Anh Nguyễn Văn Mẫn
Trang 18CHƯƠNG III: CHI TIẾT VỀ PROJECT
1 Giới thiệu về project
Music Player Application là một trình nghe nhạc trực tuyến được xây dựngtrên nền tảng web Là ứng dụng cho phép truy cập danh sách bài hát thông qua thưviện, thao tác với các bài hát với các thao tác cơ bản như thêm, xóa, sửa (CRUD) Cóthể phát nhạc như một trình nghe nhạc thông thường với giao diện cơ bản
1.1 Yêu cầu
- Tất cả dữ liệu bài hát phải được lưu trữ ở server side thông qua một cơ cở dữliệu tự chọn (MongoDB lưu trữ thông tin bài hát, Cloudinary lưu trữ dữ liệuMP3/ hình ảnh)
- Client side là một web client được xây dựng trên HTML, JavaScript vàTailwindCSS
- Giao thức kết nối giữa client và server là REST Xây dựng các API để từ clientside thực hiện truy vấn tới server side
- Ứng dụng phía server side cần phải được deploy để có thể truy cập từ xa Sửdụng framework Spring để xây dựng và tương tác với cơ sở dữ liệu
1.2 Các chức năng chính
- Nghe nhạc: tương tự như một trình nghe nhạc cơ bản với các thao tác như tạm
dừng, tiếp tục, chuyển bài,… Giao diện hiển thị thông tin cơ bản của bài hátnhư tác giả, thể loại, tên bài hát
- Quản lý bài hát : hiện thị danh sách và thông các bài hát hiện có, có thể thực
hiện một số thao tác cơ bản như thêm, xóa, chỉnh sửa với phân quyền admin
Có filter và phân trang để lọc dữ liệu Tất cả các thao tác trên phải thông quanRESTful API và thao tác với cơ sở dữ liệu
- Nâng cao :
o Bảo mật khi gọi tới các API bằng Spring Security
o Hỗ trợ hai ngôn ngữ Tiếng Việt và English
o Responsive cho phía client side