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: - Nghe bộ phận HR giới thiệu về công ty, cách tổ chức của công ty, quá trình thành lập và phát triển,
Trang 1TRƯỜ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 INTERN BACK END SOFTWARE ENGINEERING
Công ty thực tập : STYL Solutions Pte Ltd
Người phụ trách : Nguyễn Trung Thái Thực tập sinh : Phạm Thị Nhật Khánh
TP Hồ Chí Minh, tháng 12 năm 2023
Trang 2LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp 4.0, công nghệ thông tin nói chung và ngành Công nghệ phần mềm nói riêng luôn là nhân tố đóng vai trò quan trọng trong quá trình phát triển của xã hội
Công nghệ Web, hay công nghệ sản xuất các trang web đã phục vụ hầu hết các nhu cầu của con người từ bán hàng, cung cấp kiến thức đến thông tin liên lạc, Hiện nay đã có đến hơn 1.5 tỷ trang web, nhưng nhu cầu tạo ra những trang web mới vẫn chưa có dấu hiệu giảm
Do đó, một trang web muốn được nhiều người sử dụng phải đáp ứng được yếu
tố hình thức và nội dung Làm thế nào để sản phẩm tạo ra đạt chất lượng cao ở hai yếu
tố trên luôn làm bất kì một đội ngũ phát triển website nào cũng cần phải suy nghĩ đau đầu Để thử thách bản thân trong ngành công nghiệp web, em đã lựa chọn Back end web developer là định hướng cho việc học cũng như nghề nghiệp trong tương lai
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng những kiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết định tham gia vào STYL Solutions – một môi trường lý tưởng và chuyên nghiệp để thực hiện
dự định
Trang 3LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn công ty STYL Solutions Pte Ltd đã tạo điều kiện cho em cơ hội được thực tập tại công ty
Trong khoảng thời gian 3 tháng vừa qua, nhờ sự chỉ dẫn nhiệt tình của nhóm Server Internship, em đã tiếp thu những kiến thức quan trọng để có thể tham gia vào một dự án thực tế Em chân thành cảm ơn các anh chị đã dành nhiều thời gian, công sức giúp em hoàn thành đợt thực tập này Đặc biệt, em chân thành cảm ơn anh Nguyễn Trung Thái đã hướng dẫn em những kiến thức mới, giải thích rõ ràng hơn về dự án Bên cạnh đó, anh cũng giúp đỡ em tận tình trong khi làm quen môi trường mới và đưa
ra lời khuyên bổ ích giúp em vượt qua khó khăn trong quá trình thực tập
Em 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áo cáo này
TP HCM, ngày 15 tháng 12 năm 2023
Khánh
Phạm Thị Nhật Khánh
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA KHOA 4
MỤC LỤC 5
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 Giới thiệu STYL Solutions 6
1.2 Sản phẩm công ty 6
1.3 Lịch làm việc khi thực tập tại công ty 7
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2.2 Nghiên cứu kỹ thuật 8
2.2.1 Tuần 1 8
2.2.2 Tuần 2 9
2.2.3 Tuần 3 9
2.2.4 Tuần 4 9
2.3 Tham gia dự án thực tế 10
2.3.1 Giới thiệu dự án 10
2.3.2 Quá trình tham gia dự án thực tế 13
2.3.4 Thuận lợi 14
2.3.5 Khó khăn 15
CHƯƠNG 3: TỔNG KẾT 16
3.1 Điểm mạnh 18
3.2 Điểm yếu 18
3.3 Chuẩn đạt được 18
TÀI LIỆU THAM KHẢO 19
Trang 6CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu STYL Solutions
Hình 1.1 Logo
STYL Solutions Pte Ltd (STYL) được thành lập vào năm 2008 bởi một nhóm doanh nhân công nghệ giàu kinh nghiệm với nền tảng kiến thức đa dạng từ các công ty điện tử đa quốc gia Nhóm bao gồm những người có kỹ năng khác nhau về R&D, tiếp thị và sản xuất, đã cùng nhau phát triển STYL thành như ngày nay
Mục đích của công ty là đưa FINTECH IoT vào các ứng dụng hàng ngày, tạo ra môi trường thông minh và hiệu quả nhằm nâng cao chất lượng cuộc sống cho tất cả mọi người
1.2 Sản phẩm công ty
Là một công ty FINTECH IoT, STYL Solutions kết hợp các hoạt động thanh toán với các yếu tố của IoT, cung cấp nền tảng trên các phân khúc thị trường như Bán hàng tự động, Tự phục vụ, Vận chuyển, Bán lẻ, F&B cũng như Quản lý Dữ liệu IoT Một số dự án nổi bật của công ty gồm có:
- Transit Solutions: là một giải pháp vận chuyển, một đầu đọc không tiếp xúc được thiết kế linh hoạt, nhỏ gọn với màn hình tích hợp phù hợp cho việc thu phí vận chuyển cũng như thanh toán tự phục vụ bán lẻ mà không cần sự giám sát như cổng thu tiền vé, máy bán hàng tự động, máy trò chơi,…
Trang 7- Intelligent school: đây là dự án thanh toán không tiếp xúc được xây dựng cho các trường học, tạo điều kiện thuận lợi cho việc dạy học sinh nhỏ tuổi cách tiết kiệm
và chi tiêu khôn ngoan bằng cách giúp các em theo dõi thói quen chi tiêu và tiết kiệm của mình Thiết bị thanh toán gồm có một đồng hồ thông minh Học sinh có thể thực hiện thanh toán không tiếp xúc tại thiết bị đầu cuối Smart Buddy được lắp đặt trong các trường học và hơn 100.000 điểm thanh toán trên khắp Singapore Bên cạnh đó thì cha mẹ có thể quản lý và giám sát việc chi tiêu của con mình trên ứng dụng
- FarmBox: là một giải pháp canh tác trong nhà thông minh, tích hợp công nghệ canh tác trong nhà và IoT có khả năng trồng trọt thủy canh Người dùng có thể điều khiển và giám sát toàn bộ quá trình canh tác từ xa thông qua trang web hoặc thiết
bị di động có kết nối wifi Đèn, quạt, nước có thể được lên lịch hoạt động; máy ảnh có thể được lên lịch để chụp ảnh vào nhiều thời điểm khác nhau; dữ liệu thời gian thực liên tục được gửi tới nền tảng đám mây để phân tích dữ liệu,…
1.3 Lịch làm việc khi thực tập tại công ty
Em tham gia làm việc tại công ty bắt đầu từ ngày 18/09/2023 tới 17/12/2023, các ngày làm việc trong tuần là thứ hai, thứ tư, thứ năm và thứ sáu Công việc hằng ngày bắt đầu từ lúc 8h30 đến 5h30 Thời gian nghỉ trưa khoảng 1 tiếng Sau mỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câu hỏi và nhận chia sẻ, giải đáp
từ người hướng dẫn Mỗi tuần sẽ họp tiến độ tuần 1 lần vào sáng thứ 2, mọi người sẽ cùng họp và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bài học, giải pháp và mục tiêu cho tuần tiếp theo
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP 2.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:
- Nghe bộ phận HR giới thiệu về công ty, cách tổ chức của công ty, quá trình thành lập và phát triể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ác phòng ban về IT, HR, …
- Gặp IT Helpdesk để nhận thiết bị, cài đặt các phần mềm liên quan và được thêm vào phòng chat của công ty
- Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làm việc trong công ty như thời gian đi làm, các quy định, cách sử dụng email trong công việc, …
Kết quả: Em đã hiểu thêm về quy trình, phong cách và văn hóa làm việc của STYL
Solutions, Có thêm các kỹ năng về việc sử dụng email, báo cáo tiến độ, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung: Cài đặt các công cụ lập trình và nghiên cứu về ngôn ngữ lập trình Java
- Em được tìm hiểu và cài đặt các công cụ lập trình như Eclipse, MySQL workbench,…
- Gặp gỡ người hướng dẫn để thảo luận về các kiến thức cần học và nhiệm vụ trong quá trình thực tập
- Ôn tập các kiến thức cơ bản về java như OOP, Packages, Data Types, Conditional, Loop, Exception Handling, Memory Management & Garbage Collection,…
- Ôn tập các kiến thức nâng cao về java như Generics, Threading, Race condition, Collection, Antonation và Reflection,…
Trang 9Kết quả: Sau tuần đầu tiên thực tập tại công ty, em có thể nắm được những mốc thời
gian và nhiệm vụ cần hoàn thành Bên cạnh đó, việc ôn tập lại ngôn ngữ java giúp em
bổ sung những kiến thức chưa biết về java
2.2.2 Tuần 2
Nội dung: Nghiên cứu về Java EE
- Gặp gỡ người hướng dẫn để báo cáo những kiến thức đã học được trong tuần trước và đặt mục tiêu cho tuần này
- Tạo ứng dụng JSP Servlet cơ bản, sử dụng JDBC để kết nối cơ sở dữ liệu trong MySQL workbench
- Nghiên cứu cách xây dựng và hoạt động của ứng dụng Spring MVC
- Tạo ứng dụng Spring MVC cơ bản giống với ứng dụng JSP Servlet trước đó
Kết quả: Sau tuần thứ hai, em đã học được cách lên kế hoạch, mục tiêu hằng tuần Bằng
việc tạo những ứng dụng đơn giản, em có thể có cái nhìn tổng quan về các ứng dụng java web, so sánh được sự giống và khác nhau giữa chúng, đồng thời làm quen với IDE lập trình mới
2.2.3 Tuần 3
Nội dung: Nghiên cứu về unit test cơ bản và unit test trong Spring framework
- Gặp người hướng dẫn để báo cáo những kiến thức đã học được trong tuần trước
và đặt mục tiêu cho tuần này
- Tìm hiểu các khái niệm, vòng đời và vai trò của unit test
- Tìm hiểu về unit test trong java và Spring framework
- Viết unit-test cơ bản cho ứng dụng web đơn giản được tạo từ hai tuần trước
Kết quả: Sau tuần thứ ba, em đã có thêm nhiều kiến thức hơn về unit test, hiểu được
vai trò của unit test trong phát triển và bảo trì phần mềm
2.2.4 Tuần 4
Nội dung: Nghiên cứu unit test trong Spring framework và thuyết trình những kết quả
đã tìm hiểu được với người hướng dẫn và team thực tập
Trang 10- Đọc tài liệu và tìm hiểu về Spring test context framework
- Tìm hiểu cơ sở dữ liệu H2 dùng trong kiểm thử
- Tìm hiểu các bước để viết unit test cho dự án Spring MVC
- Chuẩn bị những nội dung cho bài thuyết trình
- Thuyết trình cho người hướng dẫn và team thực tập
Kết quả: Sau tuần thứ tư, em hiểu sâu hơn về unit test trong Spring framework Qua
việc thuyết trình, em có thể củng cố kiến thức thêm một lần nữa cũng như nhận được những góp ý chân thực của người hướng dẫn
2.3 Tham gia dự án thực tế
2.3.1 Giới thiệu dự án
Caribbean (https://www.styl.com.sg/caribbean.html) là dự án trong lĩnh vực giáo dục đã được phát triển từ nhiều năm về trước của STYL Solutions Hiện tại, công
ty đang tham gia vào giai đoạn bảo trì Là thực tập sinh, em được giao nhiệm vụ viết unit test cho dự án này, mục tiêu là duy trì các tiêu chuẩn và chất lượng khi bảo trì và cập nhật trong tương lai
Dự án Caribbean CMS là một ứng dụng Java Spring Framework, MySQL workbench cho cơ sở dữ liệu Dự án giúp các điểm bán trong các trường học có thể quản lý việc bán đồ ăn, học sinh thể mua đồ ăn, thanh toán bằng thẻ và mã QR thông qua tích hợp thiết bị đầu cuối thanh toán Ngoài ra thì ứng dụng hỗ trợ ba mẹ có thể nạp tiền vào ví điện tử gia đình và đặt hàng trước cho con của mình Caribbean cũng theo dõi tình trạng dị ứng của người dùng, ngăn chặn việc bán các thực phẩm có khả năng gây nguy hiểm cho các cá nhân
Một số hình ảnh của Caribbean:
Trang 11Hình 2.3.1.1 Màn hình quản lý các đồ ăn vặt
Hình 2.3.1.2 Màn hình quản lý hệ thống các máy POS đã được sử dụng
Trang 12Hình 2.3.1.3 Màn hình quản lý hệ thống các máy order
Hình 2.3.1.4 Màn hình quản phiên bản của hệ thống
Trang 13Hình 2.3.1.5 Màn hình thống kê
2.3.2 Quá trình tham gia dự án thực tế
2.3.2.1 Tìm hiểu về dự án
Thời gian: 1 tuần
Nội dung: Sau khi thuyết trình về unit test ở tuần trước thì tuần này em nhận được
nhiệm vụ là tìm hiểu và viết unit test cho dự án Caribbean Em được thêm vào dự án Caribbean trên GitLab và thực hiện clone code về máy và chạy chương trình
- Trong thời gian một tuần, em đọc những tài liệu hiện có liên quan đến dự án, tìm hiểu cấu trúc dự án, user flow, danh sách các màn hình, coding
conventions,…
- Gặp người hướng dẫn để báo cáo và hỏi về những gì chưa hiểu rõ trong dự án
Kết quả: Em hiểu rõ hơn về mục đích của dự án, cấu trúc của dự án và cách hoạt động
một ứng dụng Spring trong môi trường thực tế
2.3.2.1 Thực hiện nhiệm vụ viết unit test
Trang 14Thời gian: 6 tuần
Nội dung: Sau khi tìm hiểu về dự án Caribbean, em gặp người hướng dẫn để báo cáo
và hỏi về những nội dung chưa nắm rõ Những tuần tiếp theo, em thực hiện viết unit test cho các module trong dự án từ các lớp Dao, các lớp Service đến các lớp
Controller
- Trước khi chuyển sang viết unit test module mới em sẽ báo cáo kết quả đạt được từ module trước đó và estimate thời gian cho module tiếp theo
- Sau khi hoàn thành test cho mỗi module, em được review lại những gì đã làm thực hiện giải quyết những xung đột để hợp nhất code
Kết quả: Sau 6 tuần thực hiện viết unit test cho dự án, em đã hoàn thành unit test cho
những module được giao với độ bao phủ ở mức tốt Qua thời gian đó, em có thể viết unit test thành thạo và chuyên nghiệp hơn
2.3.4 Thuận lợi
Trong thời gian tham gia viết unit test cho dự án Caribbean, em học hỏi được rất nhiều kiến thức từ cách xây dựng ứng dụng web trong thực tế, đến cách làm để đảm bảo chất lượng cho những dòng code
Trước đây, khi học tại trường, em đã từng làm ứng dụng web bằng Java Spring Boot, cho đến khi được tiếp cận với dự án Spring MVC trong thực tế giúp em hiểu rõ hơn về cấu trúc, cách xây dựng của ứng dụng web
Trong vòng ba tháng thực tập tại công ty, em nhận được sự giúp đỡ nhiệt tình của người hướng dẫn, giúp em được giải đáp những vướng mắc trong dự án Bên cạnh người hướng dẫn, em cũng học hỏi được rất nhiều từ những bạn thực tập sinh, các bạn
là người cùng làm việc và cùng thảo luận về những vấn đề em chưa hiểu rõ
Trang 152.3.5 Khó khăn
Khi tìm hiểu về dự án thực tế, do dự án đã phát triển từ nhiều năm trước nên tài liệu về dự án còn rất ít khiến em gặp khó khăn khi đọc hiểu về dự án Em mất nhiều thời gian hơn để hiểu dự án làm gì, tự tìm hiểu cấu trúc của dự án và hỏi người hướng dẫn về dự án
Dự án trong thực tế khá phức tạp, và có quy mô lớn hơn rất nhiều so với những ứng dụng web em từng làm ở trường, do vậy, việc viết unit test đảm bảo độ bao phủ đòi hỏi sự tỉ mỉ, cẩn thận và hiểu biết sâu về Spring test context và lĩnh vực khác trong quá trình phát triển phần mềm
Trang 16CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại STYL Solutions đã giúp em cải thiện bản thân rất nhiều trong quy trình làm việc thực tế, tác phong của một kỹ sư phần mềm Đây là một trải nghiệm tuyệt vời, đầy ý nghĩa, giúp em học hỏi được rất nhiều kiến thức về nghề nghiệp trong tương lai
Về kiến thức, kỳ thực tập là một hành trình giúp em có tầm nhìn rộng mở hơn về kiến thức Trong quá trình thực tập tại công ty, em được tìm hiểu sâu hơn về Java Spring framework giúp em có cái nhìn toàn diện hơn kiến trúc, nguyên tắc của ứng dụng Spring Bên cạnh đó, việc đọc hiểu tài liệu về dự án Caribbean của công ty, em có được
sự hiểu biết về dự án thực tế, cách xây dựng ứng dụng web có khả năng mở rộng, bảo trì Trong quá trình thực tập tại công ty, nhiệm vụ chính của em là viết unit test cho ứng dụng Caribbean Qua đó, em có thể hiểu được những kiến thức và vai trò của unit test trong phát triển ứng dụng web với Spring framework, các bước viết unit test, làm sao
để đảm bảo độ bao phủ code của unit test
Về kỹ năng, kỳ thực tập mang lại cho em những kỹ năng thiết yếu về làm việc trong môi trường thực tế Việc thực hiện các nhiệm vụ tại công ty không chỉ giúp nâng cao trình độ về Java Spring framework mà còn củng cố hơn kỹ năng giải quyết vấn đề cũng như quản lý thời gian của em Qua quá trình thực tập tại công ty, em nhận thấy để trở thành một kỹ sư phần mềm đòi hỏi sự kiên trì, tính tỉ mỉ và sự cẩn thận rất lớn, điều này giúp em hình thành tác phong trong công việc Không chỉ là kỹ năng lập trình, em còn học hỏi được thêm những kỹ năng khác trong công việc như sử dụng email trong môi trường doanh nghiệp, làm việc nhóm, đặt vấn đề, giao tiếp với đồng nghiệp và học hỏi từ những anh chị đi trước
Như vậy, trong thời gian hạn chế, em đã hoàn thành các kiến thức training của công ty và cùng bạn trong team thực tập đã hoàn thành unit test cho dự án Caribbean