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 WEB FULL STACK VỚI ANGULAR VÀ ASP NET Công ty thực tập Công ty ROSEN Group Người phụ trách Lê Tuấn Khải, Lê Anh Du[.]
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 22
LỜI MỞ ĐẦU
Hiện nay, ngành công nghệ thông tin đang ngày một phát triển vô cùng mạnh mẽ, tác động lớn đến đời sống xã hội con người, và đặc biệt là lĩnh vực kinh tế của hầu hết các quốc gia trên thế giới khi được xem là một trong những ngành kinh tế mũi nhọn góp phần thúc đẩy sự phát triển, thịnh vượng của mỗi quốc gia Thực tế, lĩnh vực công nghệ thông tin hiện nay được ứng dụng vô cùng đa dạng trong nhiều khía cạnh khác nhau, không chỉ dừng lại ở việc phục vụ cho khoa học kĩ thuật Hơn hết, công nghệ thông tin dần trở nên gần gũi, thân thiện hơn khi đi sâu vào từ đời sống con người cho đến các lĩnh vực khác như kinh tế, chính trị, y tế, vv…
Sự bùng nổ của các cuộc cách mạng công nghệ cũng như sự xuất hiện của mạng internet
kĩ thuật số (4G, 5G, vv…) góp phần đưa những sản phẩm công nghệ dễ dàng đến tay người dùng, đặc biệt là các trang website với vô vàn những tiện ích và chức năng phục vụ con người ở nhiều lĩnh vực Hệ thống website đã có từ rất sớm, mặc dù thế, nó vẫn không trở nên lạc hậu mà thay vào đó đang ngày càng cải tiến để đáp ứng được với nhu cầu luôn cập nhật, thay đổi của con người, dần trở thành một mặt không thể thiếu trong xã hội ngày nay Có thể dễ dàng nhận thấy khi tại Việt Nam nói riêng và các quốc gia công nghệ nói chung, các công ty công nghệ phát triển ứng dụng liên quan đến mảng website vẫn chiếm đa số bởi tính phổ biến và thông dụng của nó đối với con người ngày nay
Hiểu được sự quan trọng của lĩnh vực lập trình website này, cùng với sự đam mê, hứng thú của bản thân trong việc phát triển ứng dụng web, sau khoảng thời gian trau dồi các kiến thức
cơ bản lẫn chuyên sâu, và các kỹ năng cần thiết trên ghế nhà trường, bản thân em đã quyết định trong học kì này sẽ đi thực tập tại một công ty hoặc doanh nghiệp thực tế để trước tiên là thử sức mình với lĩnh vực mình đang theo đuổi, đặc biệt hơn là nhu cầu tích lũy kinh nghiệm, trải nghiệm tại môi trường làm việc thực tế
Sau những lần rớt các buổi phỏng vấn vì kĩ năng bản thân không đám ứng được điều kiện của các công ty, em không lấy đó làm chán nản mà xem như là kinh nghiệm để từ đó dành thời gian hơn để trau dồi khả năng của bản thân Cuối cùng, em đã đậu phỏng vấn và được tham gia vào chương trình thực tập tại Công ty ROSEN Group có phòng nghiên cứu ROSEN UIT Research Center tại trường UIT Đến tận bây giờ, em vẫn cảm thấy rất vui, tự hào khi bản thân
có thể tham gia được chương trình thực tập này bởi vì đây là một môi trường lý tưởng, hiện đại, chuyên nghiệp và tràn ngập những tiếng cười của các thành viên trong khoảng thời gian em trải qua những tháng thực tập lập trình web full stack tại ROSEN
Trang 3Đặc biệt, em xin gửi lời cảm ơn đến anh Lê Tuấn Khải, đã training về Angular
Framework; cảm ơn anh Lê Anh Duy, đã training về ASP.NET Framework cho em; cảm ơn anh
Nguyễn Tuấn Anh đã dành thời gian giới thiệu về công ty cho em, hỗ trợ em trong cách hòa
nhập vào môi trường làm việc và văn hóa chung của ngôi nhà mới – công ty ROSEN; bên cạnh
đó em còn muốn gửi lời cảm ơn tới các anh chị hướng dẫn khác đã dành thời gian chia sẻ, hướng dẫn về các chủ đề hay, các công nghệ hay đang được áp dụng tại công ty ROSEN để em
có thể thuận lợi trong việc tìm hiểu, nghiên cứu và học tập để cuối cùng có thể hoàn thiện được ứng dụng đáp ứng được yêu cầu đặt ra của chương trình thực tập này Em rất biết ơn và cảm
kích với tất cả các anh chị hướng dẫn, đặc biệt là anh Lê Tuấn Khải và anh Lê Anh Duy đã
nhiệt tình hướng dẫn, tận tình giúp đỡ cho em 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, chỉ dẫn 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ũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã luôn nhiệt tình truyền đạt các kiến thức, kinh nghiệm thực tế, tư vấn nghề nghiệp, nhiệt tình hỗ trợ, tạo điều kiện giúp em hoàn thành việc thực tập và làm bài báo cáo thực tập này
Võ Trung Tín
Tp Hồ Chí Minh, ngày 01 tháng 10 năm 2022
Trang 44
NHẬN XÉT CỦA KHOA
Trang 5
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 về công ty Gameloft 6
2 Sản phẩm của công ty 6
Chương 2: Nội dung thực tập 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Chương trình thực tập 8
2.1 Giai đoạn 1: Tự học, nghiên cứu về công nghệ, kĩ thuật (cá nhân) 9
2.1.1 Tự học, nghiên cứu về lập trình frontend bằng Angular 10
2.1.2 Tự học, nghiên cứu về lập trình frontend bằng Angular 11
2.1.3 Tự học, nghiên cứu về lập trình backend bằng ASP.NET 12
2.1.4 Tạo API và tích hợp backend vào phần ứng dụng frontend đã làm ở giai đoạn trước 13
2.2 Làm project thực tế của công ty sau khi đã được tinh chỉnh, lược bớt chức năng khó (nhóm) 14
3 Thực hiện project 15
4 Lịch làm việc 16
Chương 3: Chi tiết về project 19
1 Giới thiệu về project 19
2 Giao diện và các chức năng của website 20
2.1 Trang đăng nhập 20
2.2 Trang Launcher 20
2.3 Trang Quản lý User 21
2.4 Trang Quản lý Permission 23
2.5 Trang Quản lý Role 24
2.6 Authorization 26
3 Thực hiện 27
4 Kế hoạch 27
TÀI LIỆU THAM KHẢO 29
TỔNG KẾT 30
Trang 66
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu công ty ROSEN Group
Công ty ROSEN Group được thành lập vào năm 1981 bởi ông Hermann Rosen tại Đức, công ty ROSEN phát triển các giải pháp phần mềm và phần cứng để kiểm tra
và bảo trì nhiều loại tài sản công nghiệp, chẳng hạn như đường ống, đảm bảo an toàn cho các hệ thống này Nằm trong Tập đoàn ROSEN hoạt động quốc tế với hơn 3.300 nhân viên, các Trung tâm Nghiên cứu và Phát triển của chúng tôi tại nhiều địa điểm khác nhau đồng nghĩa với sức mạnh đổi mới cao và khả năng sáng tạo phi thường
Công ty ROSEN Group hiện đang có một phòng nghiên cứu và phát triển phần mềm tại trường Đại học Công nghệ Thông tin Thành phố Hồ Chí Minh nơi tập trung một nhóm đội ngũ lập trình đầy nhiệt huyết của công ty ROSEN phát triển các phần mềm hiện đại cho Nhóm ROSEN cho công ty Các thành viên của đội ngũ kĩ sư lập trình ROSEN Group tại UIT hợp tác chặt chẽ, chia sẻ kiến thức và hỗ trợ lẫn nhau
Họ đưa những ý tưởng mới vào thực tế, vươn lên thách thức và thúc đẩy các công nghệ tiên phong Các phương pháp phát triển phần mềm Agile là một phần không thể thiếu trong cách các kĩ sư lập trình ROSEN Group làm việc
2 Sản phẩm của công ty
ROSEN Group là đối tác công nghệ đáng tin cậy và phát triển các sản phẩm và dịch vụ sáng tạo - bao gồm một loạt các giải pháp phần mềm - hỗ trợ hơn 25 chi nhánh trên toàn thế giới Các phần mềm, sản phẩm do ROSEN Group phát triển được sử dụng cho các công cụ kiểm tra hoạt động, đánh giá dữ liệu, báo cáo cũng như bảo trì nhiều loại tài sản công nghiệp, chẳng hạn như đường ống, đảm bảo an toàn cho các hệ thống này Để đạt được mục tiêu này, các kĩ sư lập trình tại ROSEN Group đã sử dụng nhiều công nghệ, các stacks phần mềm khác nhau và quan tâm đến việc sử dụng các công nghệ hiện đại như blockchain, AR / VR và Machine Learning
Trang 77
Một số mảng sản phẩm chính mà công ty đang thực hiện:
+ Automated Inspection Systems – Hệ thống kiểm tra tự động
+ Flowmeter – Lưu lượng kế
+ Software – Phần mềm
+ Instruments, tools tracking and locating systems – Hệ thống cung cấp thiết bị, công cụ theo dõi, định vị
+ …
Trang 88
CHƯƠNG 2: NỘI DUNG THỰC TẬP
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, quá 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
- Được tạo tài khoản công ty ứng với thông tin cá nhân cung cấp
- 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 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…
Kết quả: Hiểu thêm về công ty ROSEN Group, quá trình thành lập và phát triển các sản phẩm của công ty Hiểu được lý do tại sao công ty ROSEN lại đặt văn phòng tại khuân viên
trường UIT Ngoài ra, hiểu biết thêm về môi trường làm việc, 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, có cái nhìn cơ bản về quy trình phát triển sản phẩm thực tế
2 Chương trình thực tập
Mỗi tuần làm 20 tiếng, lên công ty 3 ngày/tuần
Trang 99
2.1 Giai đoạn 1: Tự học, nghiên cứu về công nghệ, kĩ thuật (cá nhân)
Trang 1010
2.1.1 Tự học, nghiên cứu về lập trình frontend bằng Angular
Thời gian: 2 tuần
Nội dung:
- Học HTML, CSS, TypeScript và các khái niệm liên quan đến kĩ thuật lập trình frontend với Angular Framework
- Có các buổi seminar hướng dẫn về công nghệ liên quan
- Trong thời gian này, anh Lê Tuấn Khải đã hướng dẫn em tìm hiểu về lập trình
frontend với Angular Framework và cung cấp roadmap trong việc tiếp cận Angular để
em có thể dễ dàng học tập hơn
Thực hiện: Tự tìm hiểu và thực hiện theo các nội dung do anh Lê Tuấn Khải hướng
dẫn cũng như dựa trên lộ trình đã nêu ở roadmap
Trang 1111
Kết quả: Có kiến thức cơ bản và cái nhìn chung về việc lập trình website phần frontend bằng Angular, sử dụng linh hoạt những cú pháp lập trình dựa trên kiến thức đã tìm hiểu được
2.1.2 Lập trình frontend bằng Angular với ứng dụng mẫu đơn giản
Thời gian: 2 tuần
Nội dung:
- Thực hiện việc xây dựng website theo project mẫu đã được cung cấp
- Tìm hiểu về việc viết unit test và E2E test trong Angular sau khi đã hoàn thiện phần giao diện và chức năng của project mẫu được cung cấp
- Thực hiện buổi trình bày về những gì đã làm trong hôm đánh giá về giai đoạn tìm hiểu Angular
Thực hiện: Lập trình theo project mẫu được cung cấp dựa trên việc ứng dụng các kiến thức đã học ở giai đoạn trước
Kết quả: Hiểu thêm về luồng hoạt động của các component trong Angular, có kinh nghiệm lập trình thực tế thay vì lí thuyết như ở giai đoạn trước, biết thêm về các cách xử
lý, lập trình ngắn gọn, ứng dụng clean code, vv… Kĩ năng được nâng cao hơn rất nhiều
so với giai đoạn trước
2.1.3 Tự học, nghiên cứu về lập trình backend bằng ASP.NET
Thời gian: 2 tuần
Trang 1212
Thực hiện: Tự tìm hiểu và thực hiện theo các nội dung do anh Lê Anh Duy hướng dẫn
cũng như dựa trên lộ trình đã nêu ở roadmap
Kết quả: Có kiến thức cơ bản và cái nhìn chung về việc lập trình website phần backend bằng ASP.NET, sử dụng linh hoạt những cú pháp lập trình dựa trên kiến thức đã tìm hiểu được và cách giao tiếp giữa các module, các tầng ứng dụng với nhau
2.1.4 Tạo API và tích hợp backend vào phần ứng dụng frontend đã làm ở giai đoạn trước
Thời gian: 2 tuần
Nội dung:
- Thực hiện việc tạo và xây dựng các api, endpoint cung cấp các tác vụ, thao tác với
dữ liệu trên ASP.NET – backend
Trang 13Thực hiện: Hoàn thiện project mẫu được cung cấp dựa trên việc ứng dụng các kiến thức
đã học ở giai đoạn trước (Backend và Frontend)
Kết quả: Kĩ năng được nâng cao hơn rất nhiều so với giai đoạn trước, biết cách chia các tầng của ứng dụng, biết tích hợp và giải quyết các vấn đề liên quan việc giao tiếp giữa frontend và backend Học hỏi những vấn đề mới gặp phải và được tư vấn cách giải quyết
bởi anh Lê Anh Duy và anh Lê Tuấn Khải
2.2 Giai đoạn 2: Làm project thực tế của công ty sau khi đã được tinh chỉnh, lược bớt
chức năng khó (nhóm)
Trang 14- Học về trau dồi các kĩ năng mềm trong quá trình làm việc nhóm
- Phân hóa nhóm thành hai đội ngũ lập trình chuyên hóa là frontend và backend để đẩy nhanh tiến độ công việc
- Học về cách phân chia công việc, đảm nhận công việc, ước tính thời gian hoàn thành
và cập nhật tiến độ công việc trên Azure – văn hóa Scrum
- Thực hiện việc xây dựng website quản lý User, Permission, Role kết hợp Authentication và Authorization trên Auth0
- Thực hiện buổi trình bày vào hôm cuối cùng của giai đoạn về project đã làm, báo cáo tiến độ hoàn thành và đánh giá, rút kinh nghiệm
Thực hiện: Xây dựng project COLLA theo yêu cầu được giao với vai trò là thành viên của đội Backend
Kết quả:
- Biết cách áp dụng kĩ thuật lập trình liên quan tới IAM
- Hoàn thiện được project được giao, đáp ứng các chức năng được yêu cầu
- Biết cách đưa lên vấn đề chung mà đội hoặc cả nhóm đang mắc phải và cùng nhau đưa ra cách giải quyết
- Nắm được quy trình làm việc với mô hình Scrum trong thực tế
3 Thực hiện project
Sau gần năm tháng được training và thực hành, em đã nắm được cách lập trình web full stack với Angular và ASP.NET thông qua các project mẫu do các anh hướng dẫn đưa ra cũng như hoàn thiện final project COLLA
Chi tiết đồ án sẽ được nói ở phần sau
Trang 15Nhận xét của người hướng dẫn
1
- 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
Anh Nguyễn Tuấn Anh
- Tìm hiểu về Observable
và các cách xử lý data stream trong Angular
- Tìm hiểu về NGRX
- Xem các ứng dụng demo có áp dụng những kiến thức đã tìm hiểu trên Youtube
Anh Lê Tuấn Khải
- Báo cáo kết quả
Anh Lê Tuấn Khải
Hoàn thành - Hoàn thiện các chức
năng
- Đạt yêu cầu 90% (có những chổ code chưa được gọn gàng, tối ưu)
Trang 16cơ sở dữ liệu và tích hợp vào project User Management ở giai đoạn trước
Anh Lê Anh Duy
Hoàn thành
8
- Tiếp tục hoàn thiện việc
xây dựng API, endpoint
và tích hợp vào project User Management
- Viết unit test và
integration test cho backend
- Báo cáo kết quả
Anh Lê Anh Duy
Hoàn thành - Hoàn thiện các chức
năng
- Đạt yêu cầu 80% (có những chổ cú pháp truy xuất dữ liệu chưa hợp lý, tối
ưu, chưa tích hợp kịp phần integration test)
9
- Phân chia công việc theo
hai nhóm riêng biệt:
- Xây dựng cơ sở dữ liệu
sau khi phân tích yêu cầu
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,
đúng deadline
10
- Liệt kê và mô tả các
endpoint cần có cho phần User Management
- Xây dựng phần
Authentication cho chức đăng nhập, thêm người dùng và xác thực tài khoản
Trang 1717
endpoint của phần User Management
11
- Tiếp tục hoàn thiện các
endpoint còn lại của phần User Management
- Viết unit test, integration
test cho các endpoint User Management
- Liệt kê và mô tả các
endpoint cần có cho phần Permission Management
- Xây dựng một vài
endpoint của phần Permission Management
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,
đúng deadline
12
- Tiếp tục hoàn thiện các
endpoint còn lại của Permission Management
- Viết unit test, integration
test cho các endpoint Permission Management
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,
đúng deadline
13
- Liệt kê và mô tả các
endpoint cần có cho phần Role Management
- Tiếp tục hoàn thiện các
endpoint còn lại của Role Management
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,
đúng deadline
15
- Tiếp tục hoàn thiện các
endpoint còn lại của Role Management
- Viết unit test, integration
test cho các endpoint Role Management
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,
đúng deadline
16
- Xây dựng authorization
cho các endpoint cần thiết
Anh Lê Anh Duy
Hoàn thành Hoàn thành đầy đủ,