Trong vòng ba tháng, em đã hoàn thành được một trang web thương mại điện tửgồm các chức năng đáp ứng nhu cầu của người dùng hiện nay, tham gia mô hìnhscrum để phát triển một trang web qu
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế,cũng như muốn được tham gia làm web trong một môi trường chuyên nghiệp, em có
dự định là sẽ thực tập sau hè Vì vậy, em quyết định chọn Công ty TNHH NashTech –một môi trường lý tưởng, hiện đại, chuyên nghiệp – là nơi sẽ giúp em thực hiện được
dự định này
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công Ty TNHH NashTech đã tạo điều kiện cho em có
cơ hội được thực tập tại một môi trường chuyên nghiệp tại công ty
Trong vòng ba tháng, em đã hoàn thành được một trang web thương mại điện tửgồm các chức năng đáp ứng nhu cầu của người dùng hiện nay, tham gia mô hìnhscrum để phát triển một trang web quản lý tài sản cho người dùng Các kiến thức cơbản về code, git và các kiến trúc phần mềm NET, cùng với đó là các khóa học kỹnăng mềm vô cùng hữu ích của công ty Hiểu được vị trí của một full stack developertrong thời kỳ công nghệ hiện đại Chân thành cảm ơn lòng nhiệt tình giúp đỡ của cácanh chị Leader, Mentor và trưởng HR đã dìu dắt hỗ trợ, hướng dẫn từ những ngày đầu
em vào công ty
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ứcthự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ôngtrá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
Đỗ Ngọc Thành
TP Hồ Chí Minh, ngày 28 tháng 5 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5MỤC LỤC
Chương 1 : Giới thiệu công ty thực tập 1
Chươ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 2
2 Nghiên cứu kỹ thuật 2
2.1 Tìm hiểu Git 2
2.2 Tìm hiểu NET 4
2.3 Tìm hiểu RESTful API 6
2.4 Tìm hiểu về ReactJS 7
2.5 Tìm hiểu về Agile - Scrum 9
3 Lịch làm việc 14
Chương 3: Dự án Website quản lý tài sản 16
1 Bối cảnh ra đời của web 16
2 Các chức năng 16
3 Kế hoạch 18
Chương 4: Kết quả đạt được 19
1 Kết quả thu được 19
2 Điểm yếu của bản thân 19
TÀI LIỆU THAM KHẢO 20
Trang 6Chương 1 : Giới thiệu công ty thực tập
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àykinh nghiệm trong việc tư vấn, cung ứng giải pháp công nghệ có quy mô toàn cầu chonhiều khách hàng là những tập đoàn lớn như Ford, Google, Nestle, Honda,Prudential,…
Với lịch sử hơn 21 năm phát triển tại Việt Nam cùng đội ngũ nhân lực hơn 1.600
kỹ sư tài năng ở TP Hồ Chí Minh, Hà Nội, Đà Nẵng, NashTech là một trong nhữngdoanh 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
Trang 7Chương 2: Nội dung thực tập
Đợt thực tập vừa rồi với chủ đề “Hệ thống quản lý tài sản” nhằm mục đích giúpsinh viên thực tập được đào tạo toàn diện về lập trình 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ôi trường phát triển phần mềm chuyênnghiệ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: 01 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, quy trình làm việc và cách thức tổ chức của công ty
Ngoài ra, thực tập sinh còn được giới thiệu cách thức làm việc trongcông ty như thời gian đi làm, các quy định cần phải tuân thủ…
Kết quả: Hiểu thêm về công ty NashTech, quá trình thành lập và phát triển Có
thêm các kỹ năng trong công việc, làm việc có kế hoạch, có kỷ luật, có tráchnhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Tìm hiểu Git
Hình 2.1: Mô hình công cụ Git.
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (DistributedVersion Control System – DVCS) là một trong những hệ thống quản lý phiênbản phân tán phổ biến nhất hiện nay DVCS nghĩa là hệ thống giúp mỗi máytính có thể lưu trữ nhiều phiên bản khác nhau của một mã nguồn được nhân
Trang 8bản (clone) từ một kho chứa mã nguồn (repository), mỗi thay đổi vào mãnguồn trên máy tính sẽ có thể ủy thác (commit) rồi đưa lên máy chủ nơi đặtkho chứa chính Và một máy tính khác (nếu họ có quyền truy cập) cũng có thểclone lại mã nguồn từ kho chứa hoặc clone lại một tập hợp các thay đổi mớinhất trên máy tính kia Trong Git, thư mục làm việc trên máy tính gọi làWorking Tree.
Hình 2.2: Sơ đồ liên hệ giữa các máy tính.
Ngoài ra, có một cách hiểu khác về Git đơn giản hơn đó là nó sẽ giúp bạnlưu lại các phiên bản của những lần thay đổi vào mã nguồn và có thể dễ dàngkhôi phục lại dễ dàng mà không cần copy lại mã nguồn rồi cất vào đâu đó Vàmột người khác có thể xem các thay đổi của bạn ở từng phiên bản, họ cũng cóthể đối chiếu các thay đổi của bạn rồi gộp phiên bản của bạn vào phiên bản của
họ Cuối cùng là tất cả có thể đưa các thay đổi vào mã nguồn của mình lên mộtkho chứa mã nguồn
Cơ chế lưu trữ phiên bản của Git là nó sẽ tạo ra một “ảnh chụp” (snapshot)trên mỗi tập tin và thư mục sau khi commit, từ đó nó có thể cho phép bạn tái sửdụng lại một ảnh chụp nào đó mà bạn có thể hiểu đó là một phiên bản Đâycũng chính là lợi thế của Git so với các DVCS khác khi nó không “lưu cứng”
dữ liệu mà sẽ lưu với dạng snapshot
Trang 9Hình 2.3: Sơ đồ cơ cấu của Git.
2.2 Tìm hiểu NET
.NET Framework là một khuôn khổ phần mềm chạy chủ yếu trên MicrosoftWindows được phát triển bởi Microsoft Nó có khả năng tương tác ngôn ngữqua nhiều ngôn ngữ lập trình và bao gồm một thư viện lớp lớn có tên làFramework Class Library – viết tắt là FCL .NET Framework thực thi cácchương trình trong môi trường phần mềm có tên là Common LanguageRuntime – viết tắt là CLR Đây là một máy ảo ứng dụng cung cấp các dịch vụnhư: quản lý bộ nhớ, bảo mật và xử lý các ngoại lệ Như vậy, NET Frameworkđược tạo ra từ 2 môi trường FCL và CLR
FCL cung cấp giao diện cho người dùng, kết nối cơ sở dữ liệu, truy cập dữliệu, mật mã, truyền thông tin mạng, các thuật toán số và phát triển ứng dụngweb và thiết kế web Các lập trình viên tạo ra các phần mềm bằng các kết hợp
Trang 10các thư viện và mã nguồn NET Ngoài ra, Microsoft cũng đã tạo ra một môitrường phát triển tích hợp của NET đó chính là Visual Studio.
.NET Framework được tạo ra nhằm hoàn thành các mục tiêu sau:
• Nhằm cung cấp cho người dùng một ngôn ngữ lập trình hướng đốitượng, tương thích hầu hết với các mã lưu trữ và thực hiện của đối tượng
• Nhằm giảm thiểu việc triển khai phần mềm và xung đột, thúc đẩy việcthực hiện mã an toàn, cũng như loại bỏ các vấn đề về hiệu suất của các môitrường kịch bản hoặc diễn giải bằng cách cung cấp môi trường thực thi mã
• Nhằm làm cho trải nghiệm của nhà phát triển nhất quán trên nhiều ứngdụng như: các ứng dụng dựa trên web, các ứng dụng dựa trên Windows
• NET Framework có khả năng tích hợp với bất kỳ mã khác nên có thểxây dựng được tất cả thông tin liên lạc về các tiêu chuẩn ngành côngnghiệp
.NET Framework bao gồm: thư viện lớp và thời gian chạy ngôn ngữ phổbiến Thời gian chạy phổ biến chính là nền tảng của NET Framework, nó cungcấp các dịch vụ cốt lõi như: quản lý luồng và remoting, quản lý bộ nhớ, thúcđẩy tính mạnh mẽ và tính bảo mật Nguyên tắc cơ bản của thời gian chạy đóchính là khái niệm về quản lý mã Mã quản lý nhắm vào mục tiêu thời gianchạy, mã không quản lý không nhắm vào mục tiêu thời gian chạy
.NET Framework bắt đầu thời gian chạy bằng mã được quản lý và có khảnăng lưu trữ bằng những mã không được quản lý nhằm tạo ra một một trườngphần mềm có cả 2 tính năng được quản lý và không được quản lý .NETFramework ngoài chức năng cung cấp thời gian chạy cho máy chủ còn hỗ trợphát triển thời gian chạy
Thư viện lớp NET Framework là tập hợp tất cả các loại tái sử dụng được tíchhợp một cách chặt chẽ với thời gian chạy thông dụng Đây chính là công cụhướng đối tượng cung cấp các loại tính năng mà từ đó mã được quản lý đượcthực hiện Điều này không chỉ làm cho NET Framework dễ dàng sử dụng màcòn làm giảm thời gian kết hợp các tính năng
Từ một thư viện hướng đối tượng của NET Framework cho phép bạn hoànthành các tác vụ như: Thu thập dữ liệu, quản lý chuỗi, kết hợp cơ sở dữ liệu vàtruy cập tệp
Web app là một mảng được NET thực hiện rất nhiều Đây là mảng mà các
Trang 112.3 Tìm hiểu RESTful API
API (Application Programming Interface) là một tập các quy tắc và cơ chế
mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụnghay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng củamình ở những kiểu dữ liệu phổ biến như JSON hay XML
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc
dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơngiản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL choviệc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET,POST, DELETE, vv đến một URL để xử lý dữ liệu
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các
ứng dụng web để quản lý các resource RESTful là một trong những kiểu thiết
kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…)khác nhau giao tiếp với nhau REST hoạt động chủ yếu dựa vào giao thứcHTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTPriêng
● GET (SELECT): Trả về một Resource hoặc một danh sách Resource
● POST (CREATE): Tạo mới một Resource
● PUT (UPDATE): Cập nhật thông tin cho Resource
● DELETE (DELETE): Xóa một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương
ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
Trang 122.4 Tìm hiểu về ReactJS
React.js là một thư viện Javascript đang nổi lên trong những năm gần đây
với xu hướng Single Page Application Trong khi những framework khác cốgắng hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn
giản và dễ dàng phối hợp với những thư viện JavaScript khác Nếu nhưAngularJS là một Framework cho phép nhúng code JavaScript trong code htmlthông qua các attribute như ng-model, ng-repeat thì với React là một library
cho phép nhúng code html trong code javascript nhờ vào JSX, bạn có thể dễdàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTMLvào trong JSX làm cho các component dễ hiểu hơn
Trang 13▪ Được gọi khi hiển thị component ra ngoài trình duyệt
▪ Sẽ return về nội dung mà bạn đã viết, có thể là một component hoặc nullhoặc là false (trong trường hợp không muốn render gì cả)
Đầu tiên khi component được gọi thì hàm hàm constructor() được gọi, sau
đó đến componentWillMount(), tiếp theo là render() ra ngoài và cuối cùng hàmcomponentDidMount được gọi khi đã render() xong
▪ Được thực hiện ngay sau khi state và props thay đổi
▪ Sẽ trả về kết quả true or false Phương thức này sẽ xác định 1 component
có được update hay không Mặc định giá trị này là true Nếu bạn khôngmuốn component render lại sau khi update state hay props thì return giá trịthành false
Trang 14componentWillUpdate(nextProps, nextState)
▪ Được gọi khi chúng ta update state của component trước khi nó render lại
▪ Bạn không thể gọi this.setState trong componentWillUpdate
▪ Hàm render sẽ được gọi ngay sau hàm này
▪ (từ phiên bản 16.3 thì hàm này không được khuyến khích dùng và sẽ bịloại bỏ ở bản 17)
▪ Được gọi trước khi một component bị remove khỏi một DOM
2.5 Tìm hiểu về Agile - Scrum
2.5.1 Agile
Sự khác nhau giữa phương pháp làm việc truyền thống-Waterfall và Agile
có thể tổng kết trong 2 từ: cứng nhắc và linh hoạt Trong khi Waterfall là 1process khá cứng nhắc và nguyên tắc, thì Agile lại rất linh hoạt và không ngừngthay đổi sao cho phù hợp với thời đại và ý kiến của khách hàng Chi tiết hơn về
sự khác nhau như sau:
- Waterfall là quy trình có cấu trúc, bạn không thể bắt đầu công đoạn mới
cho đến khi công đoạn trước đấy được hoàn thành Agile là quy trìnhlinh hoạt, cho phép bạn chạy dự án theo cách mà bạn muốn Waterfall
là tuần tự, vàAgile thì không ép buộc vào 1 quy trình tuần tự nào.
- Các dự án theo quy trình Waterfall thường cần define cụ thể yêu cầu của
dự án, trong khi các yêu cầu trong các dự án Agile có thể thay đổi vàphát triển
- Trong các dự án Waterfall, bạn không thể thay đổi những thứ bạn đãlàm trong những công đoạn trước, tuy nhiên Agile rất phù hợp và có thểđáp ứng được các thay đổi
Trang 15Hình 2.5: Mô hình Agile và Waterfall.
Một cách tổng quát, khi một sản phẩm được xây dựng theo mô hình
Waterfall, thì các công việc trong dự án được xác định theo nguyên tắc lúc ban
đầu, và không tiếp thu được ý kiến của người sử dụng trong quá trình hìnhthành sản phẩm Việc giành quá nhiều thời gian cho một sản phẩm mà khôngbiết được rằng mức độ khả thi cũng như những điều mà người sử dụng quantâm sẽ gây ảnh hưởng rất nhiều đến chất lượng sản phẩm
Trong khi đó, Agile giúp các nhà phát triển có thể nhận dạng, điều chỉnh các
vấn đề và khiếm khuyết một cách nhanh chóng Các điểm mạnh củaAgile là:
- Thực hiện thay đổi dễ dàng: Bởi vì dự án được chia thành các phần nhỏ,
riêng biệt, không phụ thuộc lẫn nhau, nên những thay đổi được thực hiệnrất dễ dàng, ở bất kỳ giai đoạn nào của dự án
- Không cần phải nắm mọi thông tin ngay từ đầu: Phù hợp với những dự
án chưa xác định được mục tiêu cuối cùng rõ ràng, vì việc này không quácần thiết trong giai đoạn đầu
- Bàn giao nhanh hơn: Việc chia nhỏ dự án cho phép đội ngũ có thể tiến
hành kiểm tra theo từng phần, xác định và sửa chữa vấn đề nhanh hơn, nhờ
đó việc bàn giao công việc sẽ nhất quán và thành công hơn
- Chú ý đến phản hồi của khách hàng và người dùng: Cả khách hàng và
người dùng cuối đều có cơ hội để đóng góp các ý kiến và phản hồi, từ đó
họ sẽ có ảnh hưởng một cách mạnh mẽ và tích cực tới sản phẩm cuối cùng
- Cải tiến liên tục: Agile khuyến khích thành viên trong đội ngũ làm việc và
khách hàng cung cấp phản hồi của mình, khi đó các giai đoạn khác nhaucủa sản phẩm cuối có thể được kiểm tra và cải thiện lại nhiều lần nếu cần
Trang 16Trong ngành công nghiệp phần mềm, phương thức sản xuất phần mềm cómột vai trò vô cùng quan trọng, nó quyết định cấu trúc tổ chức, quy trình pháttriển, khả năng thành công của các dự án Trong những năm gần đây Agile- Scrum nổi lên và thay thế mô hình thác nước (Waterfall) truyền thống như
một phương thức tổ chức sản xuất ưu việt được nhiều công ty phần mềm ápdụng và thành công Quản lý dự án theo nguyên tắc Agile nổi lên như một sự
thay thế tối ưu cho bất kỳ dự án nào
Hình 2.6: Quy trình Agile.
Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa là
phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trìnhphát triển phần mềm với mục tiêu là đưa sản phẩm đến tay người dùng càngnhanh càng tốt Nguyên tắc phát triển mô hình là phân đoạn lặp (iterative)
và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông
qua sự hợp tác giữa các nhóm tự quản và liên chức năng
Rất nhiều nơi định nghĩa Agile như một phương pháp Thực chất, Agilegiống như một phương pháp luận, một triết lý dựa trên hơn nguyên tắc phânđoạn vòng lặp (iterative) và tăng trưởng (incremental)
Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình làphát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lý,sản xuất ở các ngành khác như sản xuất, dịch vụ, sales, marketing, giáo dục
và trở thành một phương thức quản lý dự án phổ biến nhất hiện nay với nhiều