Tải bản đầy đủ (.doc) (16 trang)

Báo cáo thực tập ứng dụng đăng ký lịch nghỉ phép

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.33 MB, 16 trang )

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

ỨNG DỤNG ĐĂNG KÍ LỊCH NGHỈ PHÉP

Cơng ty thực tập: Công ty TNHH Giải pháp Phần mềm Tường Minh
Người phụ trách : Nguyễn Hà Phi Hùng
Thực tập sinh: Đinh Hồng Nhi

TP. Hồ Chí Minh, tháng 1 năm 2021


2

LỜI MỞ ĐẦU
Ngày nay, ứng dụng web là một bộ phận không thể thiếu của ngành công nghiệp phần
mềm. Với nhiều cơng nghệ liên tục thay đổi và hồn thiện cho việc phát triển web từ giao diện
(frontend), server (backend), hệ thống (system), bảo mật (security),… lập trình ứng dụng web
đã trở thành nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, đặc biệt là trong
lĩnh vực về phần mềm.
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ. Ngành phát
triển và bảo trì các dự án ứng dụng web đang ngày càng phổ biến và rộng mở cơ hội việc làm
cho rất nhiều lập trình viên trong nước. Đặc biệt hơn việc lập trình web tại Việt Nam đã có thể
cùng phối hợp với các đối tác nước ngồi (lập trình viên, khách hàng…), kích thích tiềm năng
thương mại và đóng góp rất lớn cho nền kinh tế nước nhà.
Lập trình web sinh ra nhằm đơn giản hóa nhiều tác vụ mơi trường từ phía người dùng,
khách hàng, khi chỉ cần sử dụng phần mềm bằng việc truy cập vào đường dẫn cụ thể qua
internet thay vì phải cài đặt, tương thích cấu hình so với các sản phẩm phần mềm khác. Từ đó
nhu cầu về lĩnh vực phát triển ứng dụng web trở nên phổ biến rất nhiều trong những năm gần


đây và cũng sẽ là xu thế trong nhiều năm kế tiếp.
Sau gần ba năm học tập tại trường, với khao khát tìm hiểu về quy trình làm ứng dụng
web trong mơi trường thực tế và chuyên nghiệp, đồng thời nâng cao kĩ năng lập trình, em đã dự
định thực tập bán thời gian (3 ngày/tuần) trong giai đoạn chuyển giao giữa thi cuối kì 5 và đầu
học kì 6 để có nhiều thời gian trải nghiệm và học tập. Vì vậy em đã quyết định chọn Công ty
TNHH Giải pháp phần mềm Tường Minh (TMA) để thực hiện dự định này.

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


3

LỜI CẢM ƠN
Trâ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.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của của người hướng dẫn
(mentor), em đã học hỏi được rất nhiều về các công nghệ trong việc phát triển ứng dụng web
hiện đại, giúp em rất nhiều trong việc lập trình web trong các học kì kế tiếp. Đồng thời, quy
trình làm việc trong cơng ty cũng đã giúp em hiểu hơn nhiều về tính chuyên nghiệp và kỉ luật
trong quá trình phát triển, vận hành và bảo trì phần mềm nói chung và ứng dụng web nói riêng.
Đặc biệt cảm ơn anh Nguyễn Hà Phi Hùng đã training, cung cấp nhiều kiến thức chuyên
môn về cơng nghệ, ngơn ngữ cũng như về quy trình phát triển ứng dụng web; cảm ơn anh
Nguyễn Văn Toàn đã lên kế hoạch thực tập, đánh giá và gợi ý hướng dẫn phát triển tính năng
cho ứng dụng của em; và cũng rất trân trọng tất cả các anh, chị cùng dự án đã hỗ trợ em rất
nhiều trong quá trình thực tập tại cơng ty.
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.
Đinh Hồng Nhi
Thành phố Hồ Chí Minh, ngày 13 tháng 01 năm 2021


Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


4

NHẬN XÉT CỦA KHOA
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi



5

Mục lục
Chương 1: Giới thiêu công ty thực tập........................................................................................................6
1.

Giới thiệu công ty TNHH Giải pháp Phần mềm Tường Minh.........................................................6

2.

Mô tả về cơng ty...............................................................................................................................6

Chương 2: Nội dung thực tập......................................................................................................................7
1.

Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty...................................................................7

2.

Nghiên cứu kỹ thuật.........................................................................................................................7
1.1.

Ngơn ngữ lập trình và một số cơng cụ......................................................................................7

1.2.

Tìm hiểu về mơ hình OSGI và Karaf........................................................................................8

1.3.


Tìm hiểu về ReactJS và Restful Web Service...........................................................................8

1.4.

Tìm hiểu về các thư viện Java và third-party hỗ trợ Java API..................................................9

3.

Thực hiện project...........................................................................................................................10

4.

Lịch làm việc..................................................................................................................................10

Chương 3: Chi tiết về project.....................................................................................................................12
1.

Giới thiệu về project.......................................................................................................................12
1.1.

Mô tả project...........................................................................................................................12

1.2.

Danh sách màn hình................................................................................................................12

2.

Kế hoạch........................................................................................................................................14


3.

Kết quả...........................................................................................................................................14

TÀI LIỆU THAM KHẢO......................................................................................................................15

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


6

Chương 1: Giới thiêu công ty thực tập

1. Giới thiệu công ty TNHH Giải pháp Phần mềm Tường Minh
 Công ty TNHH Giải pháp Phần mềm Tường Minh (TMA) được thành lập năm
1997 tại Việt Nam, hiện nay TMA đã hơn 2400 nhân viên và là một trong những
công ty gia cơng phần mềm (outsource) lớn nhất trong nước.
 Ngồi Việt Nam, TMA cịn có văn phịng tại Nhật Bản, Mĩ, châu Âu và Úc, các
ứng dụng phần mềm phục vụ cho khách hàng từ 27 quốc gia.

2. Mô tả về công ty
 TMA cung cấp nhiều dịch vụ về phần mềm như thiết kế, kiểm thử, IT Service,
chuyển đổi dữ liệu, và đặc biệt là phát triển, gia công phần mềm.
 Việc gia công phần mềm tại công ty đa dạng trên nhiều nền tảng (web, di dộng,
desktop app…), ngôn ngữ và công nghệ (Java, NodeJS, Go, Python cho nhiều lĩnh
vực như viễn thơng, tài chính, thương mại điển tử, y tế, giáo dục…
 Ngồi ra tại cơng ty cịn cung cấp các chương trình đào tạo thực tập, nhân viên
mới (fresher) và các khóa học (course) về kĩ thuật cũng như quy trình trong quá trình

làm việc tại cơng ty.

Nguyễn Hà Phi Hùng
Đinh Hồng Nhi


7

Chương 2: Nội dung thực tập
Đợt thực tập tại công ty, em đã được phân công thực hiện một ứng dụng web phục vụ
cho việc đăng kí lịch nghỉ phép cho các thành viên trong đội ngũ phát triển (team) mà em được
tham gia, ứng dụng các công nghệ mà dự án của team đang sử dụng và học hỏi thêm các công
nghệ mới. Đồng thời rèn luyện thêm kĩ năng phân tích yêu cầu, giao tiếp và một số quy trình
làm việc trong quá trình phát triển ứng dụng.

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 của công ty
 Được nghe người phụ trách giới thiệu về cơng ty, q trình thành lập và phát triên
(như đã nhắc đến ở trê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.
 Ngồ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 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, cài đặt môi trường, tài liệu về naming convention…
Kết quả: Hiểu thêm về cơng ty TMA, q trình thành lập và phát triển. Có thêm các
kỹ năng về việc sử dụng email 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
1.1. Ngơn ngữ lập trình và một số cơng cụ

Thời gian: 3 ngày (1 tuần)
Nội dung: Tìm hiểu thêm một số kiến thức về ngơn ngữ lập trình Java và các cơng cụ
sẽ được sử dụng trong quá trình làm việc.
 Mentor gửi các tài liệu liên quan về ngơn ngữ lập trình Java và một số phương
pháp lập trình (cú pháp, các loại câu lệnh, tính năng mới trong Java 8, các API trong
Java, JDBC, nguyên lí SOLID,…).
 Đồng thời thực tập sinh cũng được giới thiệu và cung cấp danh sách các công cụ,
thư viện và môi trường phát triển cần cài đặt như IntelliJ, Maven, Java SDK, Visual
Studio Code.
Thực hiện: Thực hành tìm hiểu, sử dụng các cơng cụ và lập trình một số ví dụ về
ngơn ngữ Java như đã nêu trên.

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


8

Kết quả: Sử dụng được các cơng cụ lập trình, cài đặt thành cơng mơi trường, tìm
hiểu được các kiến thức về ngơn ngữ Java và phương pháp lập trình.
1.2. Tìm hiểu về mơ hình OSGI và Karaf
Thời gian: 6 ngày (2 tuần).
Nội dung: Được hướng dẫn và cung cấp các tài liệu về Karaf.
 Mơ hình OSGI: Các kiến thức cơ bản về mơ hình OSGI như khái niệm, cách vận
hành theo cơ chế nanoservice (module hóa), tư tưởng khá giống với microservice
nhưng trong môi trường vận hành Java.
 Karaf: Cơ bản về cách mơ hình OSGI được tổ chức trong karaf, các Java API
được hỗ trợ để vận hành mơi trường Java backend theo hướng module hóa dưới dạng
các bundle và feature; mỗi bundle tương ứng với một module; mỗi feature định nghĩa
các bundle cần sử dụng.

 Bài tập ứng dụng: Được lập trình một số bài tốn đơn giản ứng dụng các Java
API trong môi trường Karaf cung cấp, cách khởi tạo, kiến thức về vòng đời và khởi
chạy một module trong Karaf. Từ đó nâng cao hơn là kết hợp và định nghĩa các phụ
thuộc module trong môi trường.
 Mentor sẽ thực hiện giải đáp thắc mắc và hỗ trợ sửa lỗi (bug) trong quá trình tìm
hiểu và thực hiện các bài tập.
Thực hiện:
 Tìm hiểu về mơ hình OSGI và Karaf theo các tài liệu đã cung cấp.
 Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả:
 Có kiến thức cơ bản về mơ hình OSGI và Karaf.
 Kiến thức về việc tổ chức dự án Java theo hướng module và vận hành các module
trong mơi trường Karaf.
 Ngồ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.3. Tìm hiểu về ReactJS và Restful Web Service
Thời gian: 6 ngày (2 tuần).
Nội dung: Tìm hiểu, thực hiện một số bài tập về kiến thức cơ bản về ReactJS và
Restful Web Service nhằm tạo giao diện đơn giản và phương thức giao tiếp giữa
Backend (Java) và Frontend (ReactJS) dưới sự hỗ trợ của mentor.
 Kiến thứ cơ bản về ReactJS: một bộ thư viện hỗ trợ tạo giao diện do Facebook
cung cấp, cơ chế Virtual DOM (so sánh cây DOM) trong HTML nhằm thay đổi

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


9

(rerender) giao diện mà không phải tải lại trang; cách tư duy các thành phần web

theo hướng thành phần (component) và cấu trúc (structure) một dự án ReactJS.
 Bài tập cơ bản về ReactJS: tạo một component, thay đổi trạng thái (state), điều
hướng (route) trong Single Web Page.
 Kiến thức cơ bản về Restful Web Service: 4 phương thức chính trong giao thức
HTTP (GET, POST, PUT, DELETE) trong việc giao tiếp giữa Client và Server và
JSON response.
 Bài tập cơ bản về Restful Web Service: Áp dụng các API Java như JDBC, JAXRS và Jackson nhằm tạo một Retsful Web Service có thể lấy dữ liệu từ database và
trả dữ liệu cho người dùng danh sách người dùng dưới dạng JSON và hiển thị trên
frontend (ReactJS).
Thực hiện:
 Tìm hiểu các kiến thức đa nêu, giao tiếp với mentor nếu có thắc mắc.
 Làm các bài tập thực hành dưới sự hỗ trợ của mentor.
-

Kết quả:
 Hiểu được những khái niệm và kiến thức trong ReactJS và Restful Web Serivce.
 Có khả năng xây dựng giao diện, Restful Web Service và cài đặt giao tiếp giữa
client với server thông qua các HTTP request.
 Hiểu hơn về công nghệ phát triển web hiện đại: có thể xây dựng phần frontend và
backend trên hai nền tảnh hồn tồn khác nhau, nhưng có thể giao tiếp với nhau
thơng qua các Restful API, thay vì phát triển trên ngơn ngữ lập trình.
1.4. Tìm hiểu về các thư viện Java và third-party hỗ trợ Java API
Thời gian: 6 ngày (2 tuần).
Nội dung: Tìm hiểu kiến thức về một số thư viện, framework mà Java cung cấp như
Hibernate, Jackson, JAX-RS. Đồng thời tìm hiểu về third-party hỗ trợ các API trong
Java như Keycloak.
 Sơ lược về Hibernate: ORM framework được phát triển trên các API do Java
cung cấp (cụ thể là JPA – Java Persistence API), hỗ trợ thuận tiện cho việc giao tiếp
với cơ sở dữ liệu thông qua các Entity, câu lệnh HQL, transaction… mang tính tường
minh, trong sáng và giảm thiểu boiler-plate code hơn so với việc sử dụng các câu

lệnh SQL thông thường.
 Sơ lược về JAX-RS và Jackson: JAX-RS nhằm hỗ trợ tạo các Restful Web
Service do Java cung cấp, bộ thư viện hỗ trợ mạnh mẽ gần như tất cả các nhu cầu và
tính năng cần thiết của một Restful Web Service; ngoài ra kết hợp với thư viện

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


10

Jackson là một thư viện hỗ trợ chuyển đổi các object sang JSON và ngược lại rất
thuận tiện trong giao tiếp của REST API.
 Sơ lược về Keycloak: Keycloak là một Java Open Source hỗ trợ rất tốt về bảo mật
Web, trong giới hạn tìm hiểu của em chỉ nghiên cứu về việc quản lí và xác thực
người dùng theo các phân quyền như tài nguyên (resource), vai trò (role), phân vùng
(scope), permission (quyền hạn); đồng thời ứng dụng các API do Keycloak cung cấp
để tạo các Json Web Token (JWT) nhằm xác thực người dùng. Keycloak cũng cung
cấp bộ giao diện (UI) trực quan nhằm quản lí người dùng và session rất thuận lợi,
giảm thiểu việc code xử lí về xác thực và người dùng.
Thực hiện:
 Tìm hiểu các kiến thức đa nêu, giao tiếp với mentor nếu có thắc mắc.
 Tạo được Restful API thông qua JAX-RS và Jackson, giao tiếp với database thơng
qua Hibernate thay vì JDBC.
Kết quả:
 Đã có thể ứng dụng các thư viện của Java để tạo được một Restful Web Service.
 Hiểu được khái niệm và cách sử dụng Keycloak trong việc quản lí người dùng.

3. Thực hiện project
 Sau 6 tuần tìm hiểu về ngôn ngữ và công nghệ, em đã được giao yêu cầu thực hiện

một project nhằm quản lí lịch nghỉ của các thành viên trong team nhằm kết hợp và
đánh giá khả năng hiểu biết, áp dụng các kiến thức, chi tiết project sẽ được mô tả tại
phần sau.
 Ngồi ra trong project, em cịn tìm hiểu thêm được về một số kiến thức mới như
git (source version control), integration (Third party và server), unit test (Junit,
Mockito), redux (ReactJS), bootstrap (CSS library), docker, tài liệu và mơ hình hóa...

4. Lịch làm việc
Tuần
1
(ngày 1)

1
2, 3

-

Cơng việc
Tìm hiểu về cơng ty, cách tổ chức của công ty.
Làm quen với các công cụ làm việc trong công ty.
Học cách trao đổi, làm việc qua email.
Tìm hiểu ngơn ngữ lập trình Java.
Thực hành Java.
Tìm hiểu và cài đặt một số cơng cụ và mơi trường
cho việc lập trình.
Tìm hiểu về mơ hình OSGI và Karaf.

Người hướng dẫn
Anh Đỗ Văn Toàn


Anh Nguyễn Hà
Phi Hùng

Anh Nguyễn Hà

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


11

4, 5

6, 7

8

9 - 12

-

13

-

Thực hiện bài tập về Karaf.
Tìm hiểu về React và Restful Web Service.
Thực hiện bài tập React và Restful Web Service
Tìm hiểu về các Java Library.
Tìm hiểu và sử dụng Keycloak.

Làm bài tập về Java Library.
Lên kế hoạch thực hiện project.
Thiết kế database, giao diện cho project.
Cài đặt và kết hợp Keycloak với backend.
Tìm hiểu thêm về git và Bitbucket.
Xây dựng database, định nghĩa các POJO.
Code một số trang màn hình giao diện.
Cài đặt các chức năng theo yêu cầu mà bài tập
đưa ra.
Trao đổi với mentor về các thắc mắc hoặc cần hỗ
trợ về kiến thức, giải pháp, tính năng.
Thực hiện viết unit test để kiểm thử, độ coverage
đạt khoảng 90%.
Báo cáo project với team để nhận được đánh giá
và đóng góp của tất cả các thành viên.
Ghi nhận đóng góp, tổng hợp tài liệu về API
document và Sequence diagram.

Phi Hùng
Anh Nguyễn Hà
Phi Hùng
Anh Nguyễn Hà
Phi Hùng
Anh Nguyễn Hà
Phi Hùng

Anh Đỗ Văn Toàn
Anh Nguyễn Hà
Phi Hùng


Anh Đỗ Văn Toàn
Anh Nguyễn Hà
Phi Hùng

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


12

Chương 3: Chi tiết về project

1. Giới thiệu về project
Project nhằm tạo cơng cụ quản lí lịch nghỉ của các thành viên trong team, dưới dạng
đăng kí và theo dõi lịch nghỉ.
1.5.

Mô tả project

 Tất cả thành viên trong team được cung cấp account truy cập nhằm đăng kí lịch
nghỉ khi có nhu cầu.
 Có ba vai trị chính của người dùng là quản lí (PM), nhóm trưởng (Team lead) và
thành viên (Member); thành viên chỉ có thể xem lịch nghỉ của mình; team lead có thể
xem lịch nghỉ của nhóm; quản lí có thể xem lịch nghỉ của tất cả thành viên.
 Có thể phân cơng các thành viên vào một team thơng qua giao diện.
Ngồi ra team lead và quản lí có thể export file excel về lịch nghỉ của các thành
viên và thông báo đến thành viên đăng kí lịch nghỉ trong một số dịp lễ tết.
1.6. Danh sách màn hình

Màn hình đăng nhập và xác thực người dùng.


Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


13

Màn hình menu điều hướng: section cần tập trung phát triển là Vacation

Màn hình phân cơng thành viên nhóm

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


14

Màn hình theo dõi lịch nghỉ của các team.

2. Kế hoạch








Hồn thành phân tích u cầu.
Thiết kế database, giao diện.

Thiết kế các RESTful API và các màn hình chưa có dữ liệu.
Giao tiếp giữa RESTful API và màn hình.
Viết unit test.
Tổng hợp báo cáo, biểu đồ.
Giao tiếp, tiếp thu ý kiến từ mentor và các thành viên.

3. Kết quả
 Hầu hết các tính năng theo mơ tả đã được thực hiện thành cơng.
 Cần cập nhật code frontend tương thích với cấu trúc mới.
 Tính năng xác thực bằng Keycloak cần được cải thiện với JWT.

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


15

TÀI LIỆU THAM KHẢO

For OSGI & Karaf
/> /> />For ReactJS
/> />For Keycloak
/>For Java & Java Framework
/>
Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi


16


TỔNG KẾT
Như vậy, sau 13 tuần (mỗi tuần 3 ngày) học tập và thực hiện dự án, em đã hoàn thiện
được một sản phẩm ứng dụng web có thể ứng dụng được trong team như đúng kì vọng thực tập
ban đầu. Do thời gian có hạn nên giao diện và cấu trúc cịn chưa hồn thiện.
Chân thành cảm ơn sự giúp đỡ của các anh chị trong TMA, đặc biệt là mentor Nguyễn
Hà Phi Hùng đã giúp đỡ em rất nhiều để hoàn thiện dự án cũng như cung cấp rất nhiều kiến
thức rất quan trọng trong việc phát triển ứng dụng web hiện đại.

Nguyễn Hà Phi Hùng
Đinh Hoàng Nhi



×