1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THỰC TẬP LẬP TRÌNH .NET WEB

22 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Thực Tập Lập Trình .NET Web
Tác giả Trần Thị Hà Phương
Người hướng dẫn Thầy/ Cô (Thông tin không rõ)
Trường học Trường Đại Học Công Nghệ Thông Tin, Khoa Công Nghệ Phần Mềm
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Báo cáo thực tập
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 628,4 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Từ những giai đoạn đầu phát triển của phần mềm đến hiện tại thì .NET Framework luôn một trong công nghệ được sử dụng rộng rãi trên toàn thế giới.. Vì kiến thức còn hạn chế cũng như là lầ

Trang 1

BÁO CÁO THỰC TẬP

LẬP TRÌNH NET WEB

Công ty thực tập : NashTech Vietnam (Công ty TNHH Harvey Nash Việt Nam) Người phụ trách : Lê Hằng Toàn

Thực tập sinh : Trần Thị Hà Phương - 18521279

TP Hồ Chí Minh, tháng 6 năm 2022

Trang 2

2

LỜI MỞ ĐẦU

Trong thời điểm mà ngành công nghệ thông tin nói chung và phát triển phần mềm nói riêng đang phát triển với tốc độ chưa từng có tiền lệ Nhu cầu cho các sản phẩm phần mềm thuộc nhiều lĩnh vực càng ngày càng tăng

Từ những giai đoạn đầu phát triển của phần mềm đến hiện tại thì NET Framework luôn một trong công nghệ được sử dụng rộng rãi trên toàn thế giới Theo

số liệu thống kê không chính thức thì số lượng lập trình viên sử dụng ngôn ngữ C# của NET cũng rơi vào khoảng 6 triệu, cho thấy mức độ hấp dẫn của NET đối với lập trình viên lớn như thế nào

Để có thể nắm vững và sử dụng hiệu quả NET, tránh những lỗi khó xử lý thì chúng ta cần phải hiểu được kiến trúc của NET cũng như cách thức hoạt động của

nó Vì mong muốn có thêm kinh nghiệm thực tế em quyết định chọn NashTech - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em trau dồi kiến thức

và kinh nghiệm tế

Trang 3

Vì kiến thức còn hạn chế cũng như là lần đầu tiên được tiếp xúc với các kiến thức thực tế, áp dụng lý thuyết vào công việc nên bản thân còn bỡ ngỡ và lúng túng, không tránh khỏi những thiếu sót, mong quý Thầy (Cô) có thể đóng góp ý kiến để em

có thể hoàn thiện hơn Cuối cùng em xin cảm ơn thầy cô trong khoa Công Nghệ Phần Mềm đã hỗ trợ, tạo điều kiện cho em có thể hoàn thành bài báo cáo này

Trần Thị Hà Phương

TpHCM, ngày 15 tháng 6 năm 2022

Trang 4

4

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 công ty NashTech Vietnam 6

2 Sản phẩm của công ty 6

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

1 Kiến thức kỹ thuật 7

1.1 Git 7

1.2 HTML/CSS/JS 8

1.3 .NET 9

1.4 SQL 9

1.5 ReactJS 10

1.6 Unit Test, Integration Test 12

1.7 Scrum 13

2 Thực hiện project 14

3 Lịch làm việc 14

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

1 Project giữa kỳ 16

2 Project cuối kỳ 17

2.1 Đề tài 17

2.2 Kế hoạch 18

2.3 Kết quả thu được 19

Trang 6

6

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

1 Giới thiệu công ty NashTech Vietnam

NashTech là công ty thuộc tập đoàn Harvey Nash, có trụ sở chính tại Anh NashTech là một trong những công ty công nghệ hàng đầu tại Việt Nam với bề dày kinh nghiệm trong việc tư vấn, cung ứng giải pháp công nghệ có quy mô toàn cầu cho nhiều khách hàng là những tập đoàn lớn như Ford, Google, Nestle, Honda, Prudential,…

2 Sản phẩm của công ty

Trong 20 năm qua, NashTech là một trong những doanh nghiệp góp phần thúc đẩy

vị thế của Việt Nam trên bản đồ công nghệ thế giới Doanh nghiệp này hiện kinh doanh với bốn mảng chủ chốt gồm: tư vấn giải pháp và phát triển phần mềm, giải pháp quy trình kinh doanh, bảo trì và hỗ trợ kỹ thuật ứng dụng và quản lý chất lượng, kiểm thử phần mềm

Trang 7

7

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

Đợt thực tập với chủ đề “Lập trình NET” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình fullstack NET Web, đồng thời rèn luyện những

kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường chuyên nghiệp

• Các workflow cơ bản của Git:

o Centralized Workflow sử dụng một repository trung tâm là đầu vào duy nhất cho mọi thay đổi trong project Nhánh để code mặc định là master và mọi thay đổi đều được commit vào master, không cần tạo thêm một nhánh khác

o Feature Branch là một bản mở rộng có logic của Centralizes Workflow Ý tưởng nằm sau Feature Branch Workflow là việc phát triển các tính năng nên thực hiện ở những nhánh riêng thay vì ở nhánh master Việc này giúp cho nhiều dev có thể cùng phát triển những tính năng khác nhau mà không làm rối tung codebase chính Điều này giúp cho nhánh master không bao giờ chưa code hỏng, khiến cho việc tích hợp liên tục trở nên dễ dàng hơn

o Gitflow Workflow là một mô hình phân nhánh chặt chẽ xung quanh việc release Workflow này không bao gồm khái niệm nào mới hay lệnh nào nằm ngoài những cái được sử dụng cho Feature Branch

Trang 8

8

Workflow Điểm khác biệt là nó gán những vai trò, nhiệm vụ cụ thể cho các nhánh khác nhau và quy định các nhánh cần tương tác với nhau như thế nào

o Forking Workflow là t vì chỉ sử dụng 1 server-side repository để làm codebase trung tâm, thì mỗi developer đều có một server-side repository của riêng mình

1.2 HTML/CSS/JS

Thời gian: 14 tiếng

Nội dung:

Giới thiệu sơ đồ hoạt động đơn giản của 1 trang web, giới thiệu về các browser

• Tìm hiểu về HTML, các tags trong HTML và thực hành viết Hello World!

• Tìm hiểu về CSS:

o Cú pháp

o CSS selectors

o CSS combinator (phần tử kết hợp)

Trang 9

1.3 .NET

Thời gian: 12 tiếng

Nội dung:

• Net Core

• ASP Net Core MVC

• Entity Framework Core

Trang 10

10

• Giới thiệu về Index là Clustered Index và Non-Clustered Index

o Clustered Index lưu trữ và sắp xếp dữ liệu vật lý trong table hoặc view dựa trên các giá trị khóa của chúng Các cột khóa này được chỉ định trong định nghĩa index Mỗi table hoặc view chỉ có duy nhất một Clusterd Index vì bản thân các dòng dữ liệu được lưu trữ và sắp xếp theo thứ tự vật lý dựa trên các cột trong loại Index này Khi dữ liệu trong table hoặc view cần được lưu trữ và sắp xếp theo một thứ

tự nhất định chính là lúc cần dùng đến Clustered Index Khi một table có một Clusted Index thì khi đó table được gọi là Clustered Table Giống như bạn có 1 mục lục, bạn tìm kiếm đến 1 mục và chỉ việc click vào expand thông tin ra là xong, không cần phải đi đâu khác nữa

o Non-Clustered Index có một cấu trúc tách biệt với data row trong table hoặc view Mỗi một index loại này chứa các giá trị của các cột khóa trong khai báo của index, và mỗi một bản ghi giá trị của key trong index này chứa một con trỏ tới dòng dữ liệu tương ứng của nó trong table Mỗi con trỏ từ một dòng của Non-Clustered index tới một dòng dữ liệu trong table được gọi là “row locator” Cấu trúc của row locator phụ thuộc vào việc các trang dữ liệu được lưu trong HEAP hay trong một Clustered Table như đã diễn giải ở mục Clustered Index ở trên Đối với HEAP, row locator là một con trỏ tới dòng dữ liệu, với clustered table, row locator chính là khóa index của clustered index

và end up dưới dạng HTML và Javascript trong cây DOM

Trang 11

11

• Component: React được xây dựng xung quanh các component, chứ không dùng template như các framework khác Bạn có thể tạo ra một component bằng các gọi phương thức createClass của đối tượng React, điểm bắt đầu khi tiếp cận với thư viện này

• Prop vs State: Có hai kiểu của data trong React đó là props và state Sự khác biệt giữa hai kiểu thì hơi khó khăn để hiểu ngay từ ban đầu, ít nhất là

về mặt khái niêm Nhưng một khi bạn bắt đầu code, bạn sẽ nhanh chóng tách biệt được hai loại Điểm mấu chốt của sự khác nhau là state thì private

và chỉ có thể được thay đổi bên trong bản thân component Props thì mang tính external, và không bị kiểm soát bởi bản thân component Nó được truyền từ component cao hơn theo phân cấp, hay có thể hiểu đơn giản là truyền từ component cha xuống component con, cái mà điều khiển dữ liệu trước khi truyền xuống Vì thế trong khi một component không thể thay đổi props của nó một cách trức tiếp (điều này có thể làm một cách gián tiếp nhưng hãy để nó vào những phần sau), thì nó có thể tự thay đổi state của bản thân

• Vòng đời

o React: Tìm hiểu về 3 giai đoạn chính 3 giai đoạn chính: Mounting, Updating và Unmounting trong vòng đời của 1 component và các class liên quan đến nó

o React Hook: được giới thiệu trong phiên bản React 16.8.0 Khi hook

ra đời thì nó cung cấp cho chúng ta api gọi là useState và chính useState đã giúp stateless component trở thành stateful component Hook cũng giúp chúng ta cả thiện hạn chế không thể sử dụng lifecycle method của functional component bằng cách cung cấp cho các api như là useEffect được sử dụng để thay thế cho các lifecycle method như componentDidMount, componentDidUpdate, componentWillReceiveProps, componentWillUnMount

• React router DOM: Tìm hiểu về và ứng dụng React Router - một thư viện định tuyến (routing) tiêu chuẩn trong React Nó giữ cho giao diện của ứng dụng đồng bộ với URL trên trình duyệt React Router cho phép bạn định tuyến "luồng dữ liệu"(data flow) trong ứng dụng một cách rõ ràng

Trang 12

12

• Axios: Sử dụng Axios dễ dàng gửi đi các request HTTP bất đồng bộ đến các REST endpoint và thực hiện các chức năng CRUD

• Redux: Làm quen với để có thể quản lý state có trong ứng dụng javascript

Hỗ trợ giải quyết những bài toán quan trọng như chia sẻ state Việc chia sẻ state giữa các component với nhau sẽ dựa theo các thức truyền khác nhau

1.6 Unit Test

Thời gian: 4 tiếng

Nội dung: Unit Test là một loại kiểm thử phần mềm trong đó các đơn vị hay thành phần riêng lẻ của phần mềm được kiểm thử Kiểm thử đơn vị được thực hiện trong quá trình phát triển ứng dụng Mục tiêu của Kiểm thử đơn vị là cô lập một phần code

và xác minh tính chính xác của đơn vị đó

Các khái niệm thường gặp trong Unit test:

• Assertion: Là một phát biểu mô tả các công việc kiểm tra cần tiến hành, thí dụ: AreEqual(), IsTrue(), IsNotNull()… Mỗi một UT gồm nhiều assertion kiểm tra dữ liệu đầu ra, tính chính xác của các lỗi ngoại lệ ra và các vấn đề phức tạp khác như: – Sự tồn tại của một đối tượng – Điều kiện biên: Các giá trị có vượt ra ngoài giới hạn hay không – Thứ tự thực hiện của các luồng dữ liệu …

• Test Point: Là một đơn vị kiểm tra nhỏ nhất, chỉ chứa đơn giản một assertion nhằm khẳng định tính đúng đắn của một chi tiết mã nào đó Mọi thành viên dự án đều có thể viết một test point Test Case: Là một tập hợp các test point nhằm kiểm tra một đặc điểm chức năng cụ thể, thí dụ toàn bộ giai đoạn người dùng nhập dữ liệu cho đến khi thông tin được nhập vào cơ

sở dữ liệu Trong nhiều trường hợp kiểm tra đặc biệt và khẩn cấp có thể không cần đến test case

• Test Suite: Là một tập hợp các test case định nghĩa cho từng module hoặc

hệ thống con

• Regression Testing (hoặc Automated Testing): Là phương pháp kiểm nghiệm tự động sử dụng một phần mềm đặc biệt Cùng một loại dữ liệu kiểm tra giống nhau nhưng được tiến hành nhiều lần lặp lại tự động nhằm

Trang 13

13

ngăn chặn các lỗi cũ phát sinh trở lại Kết hợp Regression Testing với Unit Testing sẽ đảm bảo các đoạn mã mới vẫn đáp ứng yêu cầu thay đổi và các đoạn mã cũ sẽ không bị ảnh hưởng bởi các hoạt động bảo trì

• Production Code: Phần mã chính của ứng dụng được chuyển giao cho khách hàng

• Unit Testing Code: Phần mã phụ để kiểm tra mã ứng dụng chính, không được chuyển giao cho khách hàng

1.7 Scrum

Thời gian: 2 tiếng

Nội dung: Scrum là một phương pháp Agile dùng cho phát triển sản phẩm, đặc biệt là phát triển phần mềm Scrum là một khung quản lý dự án được áp dụng rất rộng rãi, từ những dự án đơn giản với một nhóm phát triển nhỏ cho đến những dự án

có yêu cầu rất phức tạp với hàng trăm người tham gia, và kể cả những dự án đòi hỏi khung thời gian cố định

• Thanh tra (inspection): Công tác thanh tra liên tục các hoạt động trong Scrum đảm bảo cho việc phát lộ các vấn đề cũng như giải pháp để thông tin

đa dạng và hữu ích đến được với các bên tham gia dự án Truy xét kĩ càng

và liên tục là cơ chế khởi đầu cho việc thích nghi và các cải tiến liên tục trong Scrum

• Thích nghi (adaptation): Scrum rất linh hoạt như các phương pháp Agile khác Nhờ đó nó mang lại tính thích nghi rất cao Dựa trên các thông tin minh bạch hóa từ các quá trình thanh tra và làm việc, Scrum có thể phản

Trang 14

• Scrum Master: Là người có hiểu biết sâu sắc về Scrum và đảm bảo nhóm

có thể làm việc hiệu quả với Scrum

• Development Team (Đội sản xuất, hay Nhóm phát triển): Một nhóm liên chức năng (cross-functional) tự quản lý để tiến hành chuyển đổi các yêu cầu được tổ chức trong Product Backlog thành chức năng của hệ thống

2 Thực hiện project

Sau khi đã training 3 tuần, mentor mỗi cá nhân thực hiện 1 project web thương mại áp dụng các kiến thức đã học Khi hoàn thành project giữa kỳ, các intern sẽ được chia vào từng nhóm gồm dev và tester để bắt đầu giai đoạn đầu project cuối

Chi tiết đồ án sẽ được nói ở chương 3

3 Lịch làm việc

Tuần Công việc Người hướng dẫn

Mức độ hoàn thành

1

Tìm hiểu về công ty và chương trình thực tập

100%

Lập trình Web cơ bản Mr Toan Le

Trang 15

15

Workshop thực hành trang web tĩnh

sử dụng HTML/CSS/JS Mr Tuan Mai

2

100%

Lập trình ASP Net Core MVC Mr Huy Ho

Workshop viết query cho database Mr Long Hoang

4

100%

Kỹ năng giao tiếp

Kỹ năng quản lý thời gian

Kỹ năng tư duy và giải quyết vấn

đề

Kỹ năng lập kế hoạch Thực hiện project giữa kỳ Mr Toan

Thực hiện project giữa kỳ Mr Toan

7

100%

Workshop động lực nơi làm việc công sở

8

100%

Giới thiệu Scrum

Thực hiện project cuối kỳ Mr Toan

Thực hiện project giữa kỳ Mr Toan

Trang 16

16

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

1 Project giữa kỳ

Link Github của dự án: https://github.com/TTph18/E-commerce/tree/alternate

Dự án cá nhân với đề tài: Xây dựng trang web thương mại điện tử

Trang web phải gồm những thành phần như sau:

• Trang khách hàng (sử dụng mô hình MVC):

o Trang chủ: Menu loại sản phẩm, sản phẩm nổi bật

o Xem sản phẩm theo loại

o Xem chi tiết sản phẩm

o Đánh giá sản phẩm

o Đăng ký tài khoản

o Đăng nhập/ Đăng xuất

• Trang admin (Single Page Application gồm: API + ReactJS):

o Đăng nhập/Đăng xuất

o Quản lý loại sản phẩm

o Quản lý sản phẩm

o Xem danh sách tài khoản khách hàng

• Yêu cần sử dụng nhiều kỹ thuật như: TagHelpers, ViewComponents,…

• Viết UnitTest

Trang 17

17

Figure 1: Sơ đồ cấu trúc dự án

2 Project cuối kỳ

2.1 Đề tài

Trong các công ty hoặc các tổ chức lớn đều có các vật phẩm hoặc các thiết bị điện

tử ( điện thoại, máy tính, đồng hồ, ) với số lượng rất lớn và cần phải đưa cho rất

Trang 18

18

nhiều người Vì vậy cần phải có một ứng dụng để người dùng có thể yêu cầu mượn

và trả các vật phẩm đó Web app hiện tại công ty đưa ra mục đích để đáp ứng nhu cầu vay mượn và trả các sản phẩm liên quan của tổ chức và có thể kiểm soát các hành vi đó liên tục và nhanh chóng không phải qua các bên trung gian thứ 3

Ở NashTech với số lượng các vật phẩm như máy tính, điện thoại được cung cấp cho nhân viên thì việc cần có một ứng dụng để quản lý các sản phẩm này là việc hết sức cần thiết nên công ty đã đưa ra ứng dụng quản lý tài sản này cho các sinh viên thực tập có cơ hội được thử sức mình

Trang web bao gồm các chức năng:

• Đăng nhập/Đăng xuất

• Đổi mật khẩu

• Quản lý người dùng (xem danh sách, xem chi tiết, thêm/sửa, xóa)

• Quản lý tài sản (xem danh sách, xem chi tiết, thêm/sửa, xóa)

• Chức năng cho mượn tài sản: Người Admin có thể giao tài sản cho một nhân viên khác sử dụng

• Chức năng yêu cầu hoàn trả tài sản: Người admin có thể yêu cầu người mượn tài sản hoàn trả tài sản

2.2 Kế hoạch

Thành viên thực hiện gồm 4 NET developer, 4 QC/QA/Tester

Dự án được hoàn thành trong vòng 4 tuần, mỗi tuần tương đương với 1 sprint

• Sprint 1: Setup Database và các môi trường cho dự án

• Sprint 2: Chức năng thêm người dùng, người dùng có thể login vào hệ thống, người dùng mới login vào hệ thống lần đầu sẽ phải đổi mật khẩu

• Sprint 3: Chức năng thêm tài sản quản lý và chức năng cho mượn tài sản

• Sprint 4: Chức năng yêu cầu hoàn trả tài sản, đưa ra bản release và demo sản phẩm

Ngày đăng: 17/08/2022, 20:58

w