ĐẠ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
NHẬN XÉT (Của giảng viên)
Trang 22
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
Trang 3tin, Đạ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
3
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
Trang 4phầ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
Trang 5DXC 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
5 6
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
Trang 6hạ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 Số điện thoại: 028 3923 8520
II Một số sản phẩm của công ty
1 DXC Assure
Hệ thống giải pháp phần mềm, BPaaS, BPO cho các nhà cung cấp Bảo Hiểm ở mọi quốc gia, lĩnh vực và tầm cỡ cung cấp một hệ sinh thái cloud, microservice, REST… cho các doanh nghiệp thực hiện cung cấp bảo hiểm trong việc xây dựng các hệ thống mới và duy trì các hệ thống cũ
DXC Assure hiện tại là nhà cung cấp số 1 toàn cầu cho các hệ thống bảo hiểm Với hơn 1900 khách hàng và hơn 11 triệu người tiêu dùng bảo hiểm được quản lý
7
2 DXC Platform X™
DXC Platform X™ là hệ thống tự động hóa thông minh cung cấp giải pháp
dự đoán, giảm thiểu các bất thường trong hệ thống sử dụng trí tuệ nhân tạo
Trang 7Trong 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 10ngườ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ợptá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
• 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
Trang 8CHƯƠ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) chonhữ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
9
Trang 9• 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,…
10
Trang 10II 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ácEnterprise 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:
11
Trang 11Cách tạo ra các bean được khai báo cho Spring container bằng xml:
Trang 12@Bean
public InventoryService inventoryService() {
return new InventoryService();
}
@Bean
public ProductService productService() {
return new ProductService(inventoryService());
- Bao gồm Core, Beans, Context, và Expression Language
- Các module Spring Core và Spring Bean Inversion of Control và DependencyInjection, đảm bảo tách được các phần specification và configuration khỏi logicphần mềm
Trang 13- 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
độ phức tạp của code JDBC
- Spring ORM: cung cấp khả năng tích hợp các API ánh xạ đối tượng quan hệ
phổ biến như JPA, JDO, Hibernate, iBatis…
- Spring OXM: cung cấp layer trên đóng gói hỗ trợ ánh xạ đối tượng – XML choAXB, Castor, XMLBeans, JiBX và XStream
2.3 Web
-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ạomột Application Context hướng Web
- Spring Web-Servlet: Chứa implementation của mô hình Model-View Controllercủ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
14
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ó
Trang 14thể 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 setthà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
15
IV Tìm hiểu mô hình Model-View-Controller và Spring MVC
Trang 151 Model-View Controller
MVC là một mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính MVC chia thành ba phần được kết nối với nhau Chúng bao gồm Model (dữliệu), View (giao diện) và Controller (bộ điều khiển)
- 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ỗinhâ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
16
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)
Trang 16Xem 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
- 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
Trang 17• Framework: Spring MVC, Hibernate (Bonus if: Spring Security, Applying
Spring boot)
• Client side: AngularJS, Bootstrap, HTML5/CSS3, Responsive web •
Database system: MySQL or MongoDB
• All CRUD operation should have JUnit tests
• Sample data should be prepared before presentation
• Pagination on returned result in search function
• Source control: GitHub / SVN
18
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 205.2 Cài đặt các configuration chính của một web app bằng xml
22
5.3 Các Controller
Trang 21CHƯƠ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
1 Tìm hiểu về Apache Maven, Java Compiler
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%
2 Tìm hiểu về Spring Framework, các Module
Spring Core và Spring Bean
Tìm hiểu các khái niệm Dependency Injection, Inversion of Control
100%
3 Tìm hiểu về kiến trúc MVC, Module Spring
Web và Spring Web MVC của Spring Framework
Tìm hiểu về Apache Tomcat Webserver, khái niệm Dispatcher Servlet
100%
23
Trang 224 Tìm hiểu về Java Persistence API (JPA)
và Hibernate Tìm hiểu và nắm rõ khái niệm Persistence, vòng đời Persistence, Object Relational Mapping
100%
5 Tìm hiểu về Logging, Log level, các công cụ
Log4J và SLF4J Tìm hiểu về Spring Security, Authentication, Authorization
100%
8 Chuỗi traning bổ sung về NoSQL và Mongodb 100%
9 Nhận yêu cầu dự án thực tập: Chương trình quản
lý nhân sự bằng Spring MVC Phân tích yêu cầu và lên kế hoạch dự án
100%
CHƯƠNG IV KẾT LUẬN
Qua quá trình thực tập tại công ty DXC Technology đã cho em nhiều kiến thức mới
về Spring Framework và ngôn ngữ lập trình Java, cũng như được làm quen với một môi trường công nghiệp Công Nghệ Phần Mềm chuyên nghiệp, năng động với tư cách là một Software Developer
Ngoài ra, em cũng đã được tạo điều kiện để có thể trở thành nhân viên chính thứccủa DXC Technology, một lần nữa xin cảm ơn công ty và Trường đã tạo điều kiện
và cung cấp những kiến thức và kỹ năng để em có thể đạt được kết quả ngày hômnay