ĐẠ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 PHÁT TRIỂN PHẦN MỀM QUẢN LÝ NHÂN SỰ BẰNG SPRING FRAMEWORK Công ty th
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 PHÁT TRIỂN PHẦN MỀM QUẢN LÝ NHÂN SỰ BẰNG SPRING
FRAMEWORK Công ty thực tập: DXC Technology Vietnam Sinh viên thực hiện: Dương Thành Vương – 18521677 Người phụ trách hướng dẫn: Mai Chí Thành
Thành phố Hồ Chí Minh, Ngày 12 Tháng 12 năm 2021
Trang 22
NHẬN XÉT (Của giảng viên)
Trang 3
3
LỜI NÓI ĐẦU
Tài liệu này được tạo ra bởi yêu cầu của học phần Thực tập tốt nghiệp -
SE501.M11, học kì I năm học 2021-2022 của Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Hệ sinh thái Java đã và đang là một trong những tech stack quan trọng nhất trong các giải pháp phần mềm, với sự thay đổi chóng mặt của khoa học công nghệ trong thời đại cách mạng công nghiệp 4.0 cũng như đại dịch Covid-19, chứng minh mạnh
mẽ hơn tầm quan trọng của việc làm chủ và vận dụng nền tảng công nghệ này trong việc phát triển các giải pháp phần mềm
Sau 3 năm học tập và rèn luyện tại trường Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh Em đã chọn công ty DXC Technology
để làm nơi tiếp tục học hỏi, làm quen với môi trường công nghiệp phần mềm
chuyên nghiệp với công cụ chính là ngôn ngữ lập trình Java và Spring Framework Báo cáo này bao gồm các thông tin về: Giới thiệu công ty DXC Technology
Vietnam, các nội dung đào tạo và công việc trong quá trình thực tập tại công ty, nhật ký chi tiết quá trình thực tập và kết luận
Cách đọc tài liệu: Nội dung của tài liệu được đưa vào các mục, được đánh số bắt đầu từ Chương I, chi tiết xem thêm tại mục lục
Trang 44
LỜI CẢM ƠN
Cảm ơn công ty DXC Technology đã tạo điều kiện cho phép em thực tập tại công
ty, hơn nữa là được thực tập từ xa tại nhà do ảnh hưởng của dịch bệnh, hệ sinh thái phần mềm hỗ trợ của công ty về các mặt đào tạo, liên lạc, thông tin… cũng góp phần không nhỏ trong kết quả thực tập của em
Trong ba tháng thực tập, ngoài việc tìm hiểu và cài đặt thành công một hệ thống phần mềm Web bằng ngôn ngữ Java và Spring Framework, em còn được tham gia các buổi training về các công nghệ như NodeJS, MongoDB, được tham gia các khóa đào tạo về kỹ năng mềm, ngoại ngữ, quy trình phát triển phần mềm… Kết quả đạt được là nhờ vào công sức chỉ dạy và tạo điều kiện của các anh chị Senior
Developer, Manager, Human Resource…
Lời cảm ơn đặc biệt tới anh Mai Chí Thành và anh Trần Quang Mẫn đã sắp sếp các buổi training, review, giải đáp các thắc mắc của một developer chưa có kinh
nghiệm là em trong suốt quá trình thực tập
Dương Thành Vương,
21/12/2021
Trang 55
Mục lục
CHƯƠNG I GIỚI THIỆU CHUNG VỀ CÔNG TY DXC
TECHNOLOGY VIETNAM 7
I Giới thiệu chung về công ty 7
II Một số sản phẩm của công ty 7
1 DXC Assure 7
2 DXC Platform X™ 8
3 DXC Cyber Defense 8
III Văn hóa công ty 8
1 Cơ cấu tổ chức 8
2 Sứ mệnh và giá trị 8
Chương II Nội dung thực tập 9
I Tìm hiểu công cụ quản lý software project Apache Maven 9
1 Giới thiệu về Apache Maven 9
2 Mô hình Dự Án Đối Tượng (Project Object Model -POM) 9
3 Maven Repository 10
II Tìm hiểu về Spring Framework 11
1 Giới thiệu về Spring Framework 11
2 Các module chính của Spring Framework 14
III Tỉm hiểu công cụ Ánh Xạ Đối Tượng Quan Hệ Hibernate 15
1 Ánh xạ đối tượng quan hệ (Object Relational Mapping) 15
2 Hibernate Object Relational Mapper 15
IV Tìm hiểu mô hình Model-View-Controller và Spring MVC 16
1 Model-View Controller 16
2 Spring MVC 16
V Dự án thực tập: Chương trình quản lý nhân sự bằng Spring MVC 16
1 Mô tả 16
2 Yêu cầu chức năng 17
3 Yêu cầu kỹ thuật 18
4 Thực hiện dự án 19
Chương III Quá trình thực tập 23
Chương IV Kết luận 24
Trang 66
Trang 77
CHƯƠNG I GIỚI THIỆU CHUNG VỀ CÔNG TY DXC
TECHNOLOGY VIETNAM
I Giới thiệu chung về công ty
DXC Technology là một công ty dịch vụ IT hàng đầu thế giới, nằm trong bảng xếp hạng Fortune 500 Có mặt tại trên 70 quốc gia với hơn 130000 nhân viên DXC Technology Vietnam là một công ty con của DXC tại thị trường Châu Á – Thái Bình Dương, hiện tại là một trong những công ty công nghệ tốp đầu tại Việt Nam DXC Technology cung cấp dịch vụ trên toàn bộ Technology Stack dành cho các cơ quan, doanh nghiệp bao gồm:
• Dịch vụ Analytics and Engineering
• Dịch vụ văn phòng thông minh
• Dịch vụ an ninh thông tin
Địa chỉ: E Town, 364 Cộng Hòa, Phường 13, Tân Bình, Thành phố Hồ Chí Minh
Trang 8Trong các phòng ban với mỗi dự án sẽ có tổ chức là các đội ngũ nhỏ từ 5 đến 10 người phụ trách một khía cạnh của dự án, ví dụ Application Development Team, Database Administration Team, Application Support and Maintenance Team… Mỗi Team sẽ bao gồm một Team Leader, một đến hai Senior Member và các
Associate
Các Team của các chi nhánh DXC Technology trên toàn thế giới thường xuyên hợp tác, trao đổi và làm việc trên các dự án tạo nên một môi trường làm việc đa dạng, phong phú và năng động
2 Sứ mệnh và giá trị
DXC mang sứ mệnh cung cấp dịch vụ IT để hiện đại hóa và thúc đẩy sáng tạo trên toàn bộ các lĩnh vực, ở mọi nơi trên thế giới
Giá trị của DXC:
Trang 99
• Deliver: Sẽ làm những gì đã nói
• Collaborate: Làm việc như một đội ngũ, toàn cầu cũng như sở tại
• Community: Tin vào việc dẫn dắt và xây dựng một công ty thúc đẩy cộng đồng
• Care: Chăm sóc lẫn nhau và tạo một văn hóa bao quát và thân thuộc
• Do: Làm việc ngay thẳng, chính đáng
CHƯƠNG II NỘI DUNG THỰC TẬP
I Tìm hiểu công cụ quản lý software project Apache Maven
1 Giới thiệu về Apache Maven
Apache Maven là công cụ quản lý và định nghĩa dự án phần mềm tự động thường dùng cho các dự án phần mềm Java Maven hỗ trợ việc quản lý các build, report, document… từ một nguồn thông tin duy nhất
Maven cung cấp giải pháp cho hai khía cạnh lớn của việc build một phần mềm: build như thế nào và cần các dependency là gì
2 Mô hình Dự Án Đối Tượng (Project Object Model -POM)
Một POM sẽ cung cấp tất cả các cấu hình cho một dự án phần mềm: các thông tin
về tác giả, dependency, các bước build, các plugin…
Các POM cũng có thể được liên kết với nhau bởi một POM gốc (root POM) cho những dự án có nhiều Module
Với Maven, những cấu hình này được lưu trong một file XML có cấu trúc như hình
Trang 1010
• Tag “project” thể hiện dự án phần mềm
• Các tag “groupId”, “artifactId” thể hiện thông tin dự án
• Tag “packaging” thể hiện hướng dẫn package project
• Tag “build” thể hiện các cấu hình build
• Các tag “plugins”, “dependencies” thể hiện các plugin và dependency
3 Maven Repository
Maven Repository là một repository lưu trữ các build artifact và dependency
Có hai loại repository: local và remote
- Local Repository chạy trên máy tính cài đặt maven , nó lưu trữ các download
từ remote và các bản build chưa release
- Remote: Do một bên thứ ba thiết lập để cung cấp nguồn download cho các artifact của họ Maven Central Repository là Repository mặc định khi cài đặt Maven, ngoài ra còn có các repository của google,…
Trang 1111
II Tìm hiểu về Spring Framework
1 Giới thiệu về Spring Framework
Spring Framework là một nền tảng mã nguồn mở cung cấp khả năng xây dựng các
Enterprise Application
Về bản chất Spring là một container, hay thường gọi là “Spring application
context”, container này sẽ tạo và quản lý các thành phần ứng dụng hay còn gọi là
“component” hoặc “spring bean”, những thành phần này được kết nối với nhau để
tạo nên một ứng dụng hoàn chỉnh
Quá trình các bean được kết nối với nhau được thực hiện dựa trên một pattern gọi
là “dependency injection”, thay vì để cho các thành phần ứng dụng tạo ra và quản
lý vòng đời của các đối tượng mà chúng cần, thì ứng dụng dependency injection sẽ
dựa vào container để tạo và quản lý những đối tượng này rồi “inject” chúng vào
những bean cần thiết Quá trình này có thể sử dụng constructor (constructor-based
dependency injection) hay method (setter-based dependency injection)
Ví dụ một mô hình Dependency Injection đơn giản:
Trang 1313
@Configuration
public class ServiceConfiguration {
@Bean
public InventoryService inventoryService() {
return new InventoryService();
}
@Bean
public ProductService productService() {
return new ProductService(inventoryService());
Trang 1414
2 Các module chính của Spring Framework
2.1 Core Container:
- Bao gồm Core, Beans, Context, và Expression Language
- Các module Spring Core và Spring Bean Inversion of Control và Dependency Injection, đảm bảo tách được các phần specification và configuration khỏi logic phần mềm
- Spring Context: hỗ trợ việc truy cập các object như một framework
- Spring Expression Language: hỗ trợ một loại ngôn ngữ expression để query
object graph trong run time của chương trình
2.2 Data Access/Integration
- Bao gồm JDBC, ORM, OXM, JMS và Transaction
- Spring JDBC: Cung cấp một layer trên đóng gói JDBC truyền thống, giảm mức
-Bao gồm Web, Web-Servlet, Web-Struts, và Web-Portlet
- Spring Web: cung cấp các tính năng tích hợp web cũng như khả năng khởi tạo một Application Context hướng Web
- Spring Web-Servlet: Chứa implementation của mô hình Model-View Controller của Spring Framework (Spring MVC)
2.4 AOP và Instrumentation
- Spring AOP: cung cấp một implementation của Aspect Oriented Programming và tích hợp với AspectJ
Trang 1515
III Tỉm hiểu công cụ Ánh Xạ Đối Tượng Quan Hệ Hibernate
1 Ánh xạ đối tượng quan hệ (Object Relational Mapping)
Ánh xạ đối tượng quan hệ hay Object Relational Mapping là một kỹ thuật lập trình
để chuyển đổi dữ liệu giữa các hệ thống không tương thích, cụ thể là các đối tượng trong bộ nhớ của các ngôn ngữ lập trình hướng đối tượng và các dòng trong các bảng của cở sở dữ liệu quan hệ
Việc sử dụng các công cụ ánh xạ đối tượng quan hệ (Object Relational Mapper) có thể giúp người phát triển giảm thiểu thời gian và công sức trong quá trình phát triển
do không phải tập trung vào các câu lệnh và Logic SQL, ngoài ra các vấn đề như việc tuân thủ các quy tắc của từng nhà cung cấp SQL cũng được đóng gói, trừu tượng hóa để sử dụng dễ dàng hơn
2 Hibernate Object Relational Mapper
Hibernate ORM là một công cụ ánh xạ quan hệ-đối tượng mã nguồn mở cho ngôn ngữ lập trình Java
Hibernate cung cấp một framework để ánh xạ một domain model hướng đối tượng thành các bảng dữ liệu trong một cơ sở dữ liệu quan hệ cũng như việc query data từ
cơ sở dữ liệu, Hibernate sẽ tự tạo các câu truy vấn SQL và chuyển đổi các result set thành những đối tượng Java tương ứng
3 Hibernate Query Language
Hibernate cung cấp cho người dùng một ngôn ngữ dựa trên SQL để thực hiện các câu truy vấn, điều này khiến cho người phát triển không phải học hết các syntax của các hệ cơ sở dữ liệu khác nhau cũng như không phải viết lại chương trình nếu
có thay đổi cơ sở dữ liệu
Ví dụ: HQL đơn giản
Trang 16- Model: Quản lý dữ liệu và business logic
- View: Quản lý giao diện người dùng
- Controller: Quản lý liêc lạc giữa Model và View Lấy dữ liệu từ Model và render view tương ứng
2 Spring MVC
Spring MVC là cách implement kiến trúc MVC của Spring Framework, được thiết
kế xoay quanh một Java Servlet chính gọi là Dispatcher Servlet
Spring MVC hỗ trợ cấu hình các request handler, request mapping, view resolution, file upload…
V Dự án thực tập: Chương trình quản lý nhân sự bằng Spring
MVC
1 Mô tả
công cụ quản lý để theo dõi việc phân công nhiệm vụ trong dự án Nói chung, mỗi nhân viên sẽ phải đăng ký tài khoản của mình để nhận được mô tả công việc - kế hoạch khi tham gia dự án Nhân viên quản lý tác vụ sẽ quản lý tất cả các nhiệm vụ
sẽ giao cho nhân viên để hoàn thành
Trang 1717
2 Yêu cầu chức năng
2.1 Chức năng nhân viên:
2.1.1 Nhân viên quản lý – Manager
- CRUD các Project
- CRUD các Task trong Project
- Thêm và Xóa Nhân viên trong dự án
- Giao Task cho nhân viên
- Xem/Tìm các Task trong project mà bản thân đang tham gia hoặc giám sát
- Xem báo cáo về nhân viên (số giờ làm việc, số Task)
- Xem báo cáo về thời gian của các Task
2.1.2 Nhân viên bình thường
- Xem/Tìm các Task trong project mà bản thân đang tham gia
- Tạo Task mới
2.1.3 Cả hai
- Cập nhật Status của Task
- Sắp xếp Task theo người được giao, Priority (Ưu tiên), ngày hết hạn
- Xem ma trận quản lý thời gian:
2.2 Chức năng Admin
- Thêm nhân viên
- Cập nhật, xóa nhân viên
Trang 18- Xác nhận ID và Email của nhân viên là duy nhất
- Xác nhận ID của Task là duy nhất
- Validate Input của số giờ làm việc
3 Yêu cầu kỹ thuật
Spring boot)
Trang 1919
4 Thực hiện dự án
4.1 Khảo sát yêu cầu
4.1.1 Mô hình hóa Usecase:
Trang 2121
Trang 2222
5 Cài đặt
5.1 Cài đặt các Hibernate Entities
5.2 Cài đặt các configuration chính của một web app bằng xml
Trang 2323
5.3 Các Controller
CHƯƠNG III QUÁ TRÌNH THỰC TẬP
Quá trình thực tập tại công ty được ghi chép theo tuần trong bảng sau
Cài đặt môi trường phát triển Java 8 với Eclipse IDE
Cài đặt các phần mềm khác của công ty: Outlook, Teams, Okta Verify,…
100%
Core và Spring Bean
Tìm hiểu các khái niệm Dependency Injection, Inversion of Control
100%
và Spring Web MVC của Spring Framework Tìm hiểu về Apache Tomcat Webserver, khái niệm Dispatcher Servlet
100%