Tải bản đầy đủ (.pdf) (66 trang)

Xây dựng website kết nối doanh nghiệp IT việt nam với khách hàng quốc tế

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 (2.79 MB, 66 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN HỌC

BÁO CÁO KẾT QUẢ
KHÓA LUẬN TỐT NGHIỆP

ĐỀ TÀI:

XÂY DỰNG WEBSITE KẾT NỐI DOANH NGHIỆP IT
VIỆT NAM VỚI KHÁCH HÀNG QUỐC TẾ

CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN CHẤT LƯỢNG CAO

Sinh viên thực hiện:
MSV
:
Lớp
:
Cán bộ hướng dẫn :

Nguyễn Hoàng Duy
312045161104
16CNTTC
TS. Phạm Anh Phương

Đà Nẵng – Tháng 5/2020


LỜI CẢM ƠN
Em chân thành cảm ơn các thầy cô trong khoa Tin, trường Đại học Sư phạm Đại học Đà Nẵng đã tận tình truyền đạt những kiến thức quý báu suốt những năm đại


học vừa qua, để hôm nay em có thể có đầy đủ kiến thức để thực hiện đề tài khóa luận
này.
Đặc biêt, em xin chân thành cảm ơn giảng viên hướng dẫn (GVHD) TS. Phạm
Anh Phương đã tận tình giúp đỡ, trực tiếp hướng dẫn em trong suốt quá trình thực hiện
đề tài này.
Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép
nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Em rất mong nhận được sự
thơng cảm, góp ý và tận tình chỉ bảo của q Thầy Cô.

Đà nẵng, ngày 19 tháng 05 năm 2020
Sinh viên thực hiện

Nguyễn Hoàng Duy

2
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


LỜI CAM ĐOAN
Tôi xin cam đoan:
1. Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp
của GVHD TS. Phạm Anh Phương.
2. Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên
cơng trình, thời gian, địa điểm công bố.
3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu
hoàn toàn trách nhiệm.

Sinh viên thực hiện

Nguyễn Hoàng Duy


3
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
Đà Nẵng, ngày

tháng năm 2020


Cán bộ hướng dẫn

4
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
Đà Nẵng, ngày


tháng năm 2020

Hội đồng phản biện

5
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


BẢNG PHÂN CƠNG CƠNG VIỆC TRONG DỰ ÁN
Thành viên

Cơng việc

Mơ tả chi tiết

Mai Trọng Hiếu

Technical Leader

(Nhân sự tại công ty)

Product Owner

- Đào tạo về công nghệ cho
sinh viên thực tập
- Hướng dẫn cho sinh viên
thực tập về cách hoạt động
của một dự án, các yêu cầu
về dự án và quy định về

phương pháp làm việc
- Đưa ra các yêu cầu đánh
giá về sản phẩm
- Hỗ trợ giải đáp các thắc
mắc, khó khăn của sinh viên
trong q trình làm việc


Xn
(Nhân sự tại cơng ty)

Nhì Project Manager
Data Scientist

- Quản lý về thời gian làm
việc của sinh viên tại công
ty
- Lập báo cáo thường nhật
sau mỗi spint
- Đưa ra các góp ý về
database system

Dương Long Nhật

Developer

(Sinh viên thực tập)

Tester


- Tham gia thiết kế, xây
dựng, kiểm thử dự án dự án
- Tham gia vào các màn
hình Display project, User
profile & Company profile

Nguyễn Hồng Duy

Developer

(Sinh viên thực tập)

Tester

- Tham gia thiết kế, xây
dựng, kiểm thử dự án dự án
- Tham gia vào các màn
hình Index, Chat, Review,
Display
- Tham gia xây dựng
module admin (xác thực nhà
thầu – verify company)
- Tham gia xây dựng hệ
thống thông báo

6
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


Hồ Tuấn Vũ


Developer

(Sinh viên thực tập)

Tester

- Tham gia thiết kế, xây
dựng, kiểm thử dự án dự án
- Tham gia vào các màn
hình Login, Register bidding

Nguyễn Hữu Bính Giáp

Developer

(Sinh viên thực tập)

Tester

- Tham gia thiết kế, xây
dựng, kiểm thử dự án dự án
- Tham gia vào các màn
hình Create Project,
Attending project, Review
bidding

7
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)



Mục lục
BÁO CÁO KẾT QUẢ .................................................................................. 1
KHÓA LUẬN TỐT NGHIỆP ...................................................................... 1
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN CHẤT LƯỢNG CAO1
BẢNG PHÂN CÔNG CÔNG VIỆC TRONG DỰ ÁN ............................... 6
DANH MỤC CÁC BẢNG ............................................................................ 8
DANH MỤC HÌNH ẢNH .......................................................................... 11
MỞ ĐẦU ..................................................................................................... 13
1.Bối cảnh đề tài....................................................................................... 13
2. Sơ lượt các bước trong đề tài ................................................................ 14
Mục đích .............................................................................................................. 14
Mục tiêu của đề tài ............................................................................................... 14
Kết quả dự kiến.................................................................................................... 15

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .......................................................... 16
1.1 Tổng quan về nền tảng công nghệ ...................................................... 17
1.1.1 Material UI ................................................................................................ 17
1.1.2. Nextjs ........................................................................................................ 17
1.1.3. ReactJS ..................................................................................................... 18
1.1.4 NodeJS ....................................................................................................... 18
1.1.5 HapiJS ....................................................................................................... 19
1.1.6 Test Driven Development .......................................................................... 19
1.1.7 Cypress ....................................................................................................... 21

1.2. Cơ sở dữ liệu PostgreSQL ................................................................. 22
1.2.1. Mục đích sử dụng cơ sở dữ liệu .................................................................. 22
1.2.2 Giới thiệu về PostgreSQL ............................................................................ 23

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG........................ 25

2.1 Giới thiệu Website .............................................................................. 25
2.2 Phân tích và thiết kế hệ thống ............................................................. 25
2.2.1. Phân tích yêu cầu chức năng người dùng .................................................... 25

8
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


2.2.2 Thiết kế hệ thống......................................................................................... 27
2.2.3 Sơ đồ Use case tổng quát ............................................................................. 28
2.2.4 Phân rã sơ đồ chức năng .............................................................................. 34
2.2.5 Yêu cầu chức năng và đặc tả Use case ......................................................... 37
2.2.6 Thiết kế cơ sở dữ liệu .................................................................................. 41
2.2.7 Cấu trúc bảng và ràng buộc ......................................................................... 42

CHƯƠNG 3:

TRIỂN KHAI VÀ ĐÁNH GIÁ ...................................... 48

3.1 Kết quả triển khai ............................................................................... 48
3.1.1 Giao diện trang index .................................................................................. 48
3.1.2 Giao diện đăng ký ....................................................................................... 51
3.1.3 Giao diện đăng nhập .................................................................................... 52
3.1.4 Giao diện display project của doanh nghiệp IT và khách hàng quốc tế ......... 53
3.1.5 Giao diện đăng ký dự án .............................................................................. 54
3.1.6 Giao diện reviewBidding ............................................................................. 55
3.1.7 Giao diện phòng chat ................................................................................... 56
3.1.8 Giao diện Company..................................................................................... 58
3.1.9 Giao diện User Profile ................................................................................. 59
3.1.10 Giao diện Verify Company ........................................................................ 60


3.2 Đánh giá ............................................................................................. 64
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................. 65
TÀI LIỆU THAM KHẢO .......................................................................... 66

9
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


DANH MỤC CÁC BẢNG
Bảng 1:Bảng mô tả sử dụng website của khách vãng lai ........................................ 37
Bảng 2: Bảng mô tả sử dụng hệ thống của doanh nghiệp IT Việt Nam .................. 38
Bảng 3: Bảng mô tả sử dụng hệ thống của khách hàng quốc tế .............................. 39
Bảng 4: Bảng mô tả sử dụng hệ thống của Ban quản trị ......................................... 40
Bảng 5: Bảng UserAccounts .................................................................................. 42
Bảng 6: Bảng Project ............................................................................................. 42
Bảng 7: Bảng ProjectBiddings ............................................................................... 43
Bảng 8: Bảng TrialProjects .................................................................................... 43
Bảng 9: Bảng Companies ...................................................................................... 44
Bảng 10: Bảng TrialProjectProposals .................................................................... 45
Bảng 11: Bảng VerifyCompanies .......................................................................... 45
Bảng 12: Bảng Roles ............................................................................................. 46
Bảng 13: Bảng StatusAccounts .............................................................................. 46
Bảng 14: Notifications ........................................................................................... 46
Bảng 15: Bảng UserProfiles .................................................................................. 47
Bảng 16: Bảng Messages ....................................................................................... 47
Bảng 17: Chức năng dành cho khách hàng quốc tế ................................................ 64
Bảng 18: Chức năng dành cho Doanh nghiệp IT Việt Nam.................................... 64
Bảng 19: Chức năng dành cho Quản trị viên.......................................................... 64


10
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


DANH MỤC HÌNH ẢNH
Hình 1: Mơ hình chu trình TDD ....................................................................... 20
Hình 2: Sơ đồ Use Case tổng quát .................................................................... 28
Hình 3: Sơ đồ Use Case tổng quát của quản trị viên ......................................... 29
Hình 4: Sơ đồ Use Case tổng quát của Doang nghiệp ....................................... 30
Hình 5: Sơ đồ Use case tổng quát của khách hàng quốc tế ............................... 31
Hình 6: Sơ đồ phân rã chức năng của khách vãng lai........................................ 34
Hình 7: Sơ đồ phân rã chức năng của khách hàng ............................................ 35
Hình 8: Sơ đồ phân rã chức năng của doang nhiệp ........................................... 36
Hình 9: Sơ đồ cơ sở dữ liệu .............................................................................. 41
Hình 10: Giao diện trang index ........................................................................ 50
Hình 11: Giao diện trang đăng ký ..................................................................... 51
Hình 12: Giao diện trang đăng nhập ................................................................. 52
Hình 13: Giao diện trang Display projects ........................................................ 53
Hình 14: Giao diện trang đăng dự án ................................................................ 54
Hình 15: Giao diện trang review Bidding ......................................................... 55
Hình 16: Giao diện trang Chat .......................................................................... 56
Hình 17: Giao diện trang chat không trống, và popup thông báo ...................... 57
Hình 18: Giao diện trang company profile........................................................ 58
Hình 19: Giao diện trang User Profile .............................................................. 59
Hình 20: Giao diện trang Verify company ........................................................ 60
Hình 21: Thêm nhiệm vụ .................................................................................. 61
11
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)



Hình 21: Customer duyệt nhiệm vụ .................................................................. 61
Hình 21: Giao diện báo cáo .............................................................................. 62
Hình 21: Giao diện thơng báo liên quan ........................................................... 63

12
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


MỞ ĐẦU
1.Bối cảnh đề tài.
Ngày nay, với sự phát triển mạnh mẽ của Công nghệ thông tin và những ứng
dụng mạnh mẽ của nó trong đời sống. Máy tính điện tử không là là một thứ phương
tiện lạ lẫm đối với con người mà nó dần trở thành một cơng cụ làm việc và giải trí
thơng dụng và hữu ích của chúng ta, khơng chỉ ở cơng sở mà cịn ngay cả trong gia
đình. Trong nền kinh tế hiện nay, với xu thế tồn cầu hóa nền kinh tế thế giới, mọi mặt
của đời sống xã hội ngày càng được nâng cao, đặc biệt là nhu cầu trao đổi hàng hóa
của con người ngày càng tăng cả về số lượng và chất lượng. Hiện nay các công ty tin
học hàng đầu thế giới không ngừng đầu tư và cải thiện các giải pháp cũng như các sản
phẩm nhằm cho phép tiến hành thương mại hóa trên internet. Thơng qua các sản phẩm
và công nghệ này, chúng ta dễ dàng nhận ra tầm quan trọng và tính tất yếu của thương
mại điện tử. Với những thao tác đơn giản trên máy có nối mạng Internet ban sẽ có tận
tay những gì mình cần mà khơng phải mất nhiều thời gian.
Để tiếp cận và góp phần đẩy mạnh sự phổ biến của thương mại điện tử ở Việt
Nam, qua khảo sát thực tế ở Việt Nam thì các cơng ty nhỏ tầm trung hoặc ngay cả các
startup về IT cũng khá đông, nhưng cơ hội để làm việc với các khách hàng nước ngồi
thì rất ít, mặt dù rất nhiều nhân tố dẫn đến vấn đề đó nhưng tổng quan lại thì yếu tố
danh tiếng chưa đủ để nhận được sự tin tưởng từ khách hàng, chính vì vậy việc xây
dựng một website làm cầu nối giữa các doanh nghiệp đó với khách hàng quốc tế với sự
đảm bảo từ một công ty lớn có danh tiếng là một điều rất khả thi. Vì vậy, tơi nghiên
cứu xây dựng và cài đặt “Website kết nối doanh nghiệp IT với khách hàng Quốc Tế”.


13
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


2. Sơ lượt các bước trong đề tài
Mục đích
Đề tài được xây dựng trên mục đích tạo ra một website mà ở đó các khách hàng
quốc tế có nhu cầu tìm kiếm nguồn nhân lực IT ở Việt Nam với chất lượng tốt và giá
thành ổn có thể đăng thơng tin dự án và khi đó các cơng ty IT ở Việt Nam có thể tìm
được cơ hội làm các dự án phù hợp với khả năng của công ty.

Mục tiêu của đề tài
Dự kiến xây dựng thành công website theo đề tài, đăng ký tên miền eploy lên
server và đưa vào hoạt động. Các mục tiêu của đề tài cần đạt được:


Xây dựng thành cơng hệ thống đăng ký, đăng nhập, đăng tin, tìm kiếm.



Xây dựng thành cơng hệ thống đăng ký, đăng nhập, phân quyền dành cho
doanh nghiêp IT Việt Nam và khách hàng quốc tế.



Xây dựng chức năng đăng dự án cần tìm nhà đấu thầu của khách hàng quốc
tế, chức năng chốt nhà thầu.




Xây dựng chức năng đăng ký đấu thầu cho các công ty IT Việt Nam.



Xây dựng chức năng AuditLog ghi lại tất cả các sự kiện liên quan đến quá
trình từ đăng dự án đến chốt dự án của cả 2 bên.



Xây dựng chức năng Chat để 2 bên tương tác, đàm phán.



Triển khai thành công hệ thống trong môi tiền thực tiễn, đưa vào hoạt động.



Tương thích với các thiết bị như điện thoại thơng minh, máy tính bảng, máy
tính xách tay, máy tính để bàn…

14
Nguyễn Hồng Duy – Lớp 16CNTTC (2016-2020)


Kết quả dự kiến
Sau khi thực hiện đề tài thì cần đạt được một số chức năng sau:
• Đăng nhập, đăng ký tài khoản.
• Quản lý tài khoản: tài khoản người dùng.
• Quản lý bài đăng: Duyệt, xóa, sửa các bài đăng.

• Doanh nghiệp IT Việt Nam có thể tìm kiếm những dự án phù hợp với
khả năng của công ty mình nhất để đăng ký đấu thầu bằng cách đưa ra
các bản Estimate về thời gian và giá tiền của dự án.
• Khách hàng quốc tế có thể đăng dự án để tuyển nhà thầu phù hợp, khách
hàng có thể xem trước Estimate từ phía nhà thầu đăng ký để chọn ra đối
tượng phù hợp nhất.
• Thống kê số lượng người dùng cũng như bài đăng.
• Một số chức năng có thể được thêm vào trong q trình làm đề tài

15
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Trong chương này nội dung chính sẽ được trình bày cơ sở lý thuyết về các nền
tảng, các framework, quy trình quản lý, cơng nghệ sử dụng để xây dựng và cài đặt cho
website.
Material UI 1 – Là một thư viện các React Component đã được tích hợp thêm cả
Google's Material Design .

Next.js 2 – Là một React Framework cho phép xây dựng ứng dụng hỗ trợ
việc xử lý server-side-rendering một cách dễ dàng.
ReactJS 3 – 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 hồ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.
NodeJS 4 – Là một nền tảng chạy trên môi trường V8 JavaScript runtime - một
trình thơng dịch JavaScript cực nhanh chạy trên trình duyệt Chrome. Bình thường thì
bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với
các web server.

HapiJS 5 – Là một framework NodeJS, hệ thống plugin của hapi vô cùng phong
phú và mạnh mẽ, cho phép bạn thêm các tính năng mới và sửa lỗi với tốc độ nhanh.
Hapi cho phép bạn xây dựng các API có thể mở rộng, đây là một điểm cộng rất lớn cho
các ứng dụng lớn.
Test Driven Development 6- Là một phương thức làm việc, hay một quy trình
viết mã hiện đại. Lập trình viên sẽ thực hiện thơng qua các bước nhỏ (BabyStep) và tiến
độ được đảm bảo liên tục bằng cách viết và chạy các bài test tự động (automated tests).
Sử dụng để test cho back-end.
Cypress 7 - Là Front-End testing tool được xây dựng cho các ứng dụng Web
hiện đại. Đây là một công cụ hỗ trợ hữu hiệu cho developers và QA trong kiểm thử ứng
dụng Web hiện đại. Cypress được xây dựng trên một kiến trúc mới và chạy trong cùng
vòng lặp chạy khi ứng dụng đang được thử nghiệm.
PostgreSQL 8 - Là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng
(object-relational database management system) có mục đích chung, hệ thống cơ sở dữ
liệu mã nguồn mở tiên tiến nhất hiện nay

16
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


1.1 Tổng quan về nền tảng công nghệ
1.1.1 Material UI
Material-UI là một thư viện các React Component đã được tích hợp thêm cả
Google's Material Design. Theo như giới thiệu trên trang chủ thì được xây dựng nhờ
tình cảm với React và Google's Material Design. Do đó mà phần hướng dẫn trên trang
chủ của Material UI cũng đã nói nên sử dụng Material UI với React.
Material UI đem đến cho bạn và trang web của bạn một giao diện hoàn toàn
mới, với những button, textfield, toogle... được design theo một phong cách mới lạ,
thay vì việc nhà nhà người người dùng Bootstrap như hiện nay.
1.1.2. Nextjs

Ngày nay, khi làm việc trên một ứng dụng JavaScript được cung cấp bởi React
là tuyệt vời cho đến khi bạn nhận ra rằng có một vài vấn đề liên quan đến việc hiển thị
tất cả nội dung phía người dùng.
Đầu tiên, trang của bạn sẽ tốn nhiều thời gian hơn để có thể hiển thị nội dung cho
người dùng, bởi vì trước khi nội dung được tải về, tất cả các file JavaScript cần được
tải xong trước và ứng dụng của bạn cần chạy để xác định nội dung hiển thị trên trang.
Thứ hai, nếu bạn đang xây dựng một publicly available website, nội dung của bạn bắt
buộc phải SEO để nó có thể tới được người sử dụng cần cho nó nhất. Tuy ngày này các
cơng cụ tìm kiếm đã hỗ trợ SEO trong các ứng dụng JavaScript. Nhưng bạn thử hình
dung xem, giữa một ứng dụng hỗ trợ sẵn SEO theo cách truyền thơng và một ứng dụng
mà cơng cụ tìm kiếm phải Indexing để xử lý thì cơng cụ tìm kiếm sẽ ưu tiên phần nào
hơn ? Dĩ nhiên sẽ ưu tiên trang web hỗ trợ content SEO HTML ngay từ đầu.
Cách giải quyết của cả hai vấn đề trên là server rendering, cũng có thế được gọi với cái
tên static pre-rendering.
Next.js cung cấp một cấu trúc chung cho phéo bạn dễ dàng xây dựng một ứng dụng
Frontend React, và dĩ nhiên nó sẽ hỗ trợ việc sử lý server-side rendering một cách dễ
dàng.

17
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


1.1.3. 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 hồ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 javasscript trong code html thông qua các attribute như ng-model, ngrepeat…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à HTML vào trong JSX làm cho các component dễ hiểu hơn.

React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những
thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại
được. React được sử dụng tại Facebook trong production, và www.instagram.com
được viết hoàn toàn trên React.
Một trong những điểm hấp dẫn của React là thư viện này khơng chỉ hoạt động
trên phía client, mà cịn được render trên server và có thể kết nối với nhau. React so
sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít
thay đổi nhất trên DOM. Trươc khi đến cài đặt và cấu hình, chúng ta sẽ đi đến một số
khái niệm cơ bản.
1.1.4 NodeJS
Node.js là một hê thống phần mềm được thiết kế để viết các ứng dụng internet
có khả năng mở rộng, đặc biệt là máy chủ web. Chương trình được viết bằng
JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhâp/xuất không đồng bộ để tối
tiểu tổng chi phí và tối đại khả năng mở rộng. Node.js bao gồm có v8 javascript
engine của Google, libUV, và vài thư viện khác.
Node.js được tạo bởi Ryan Dahl từ năm 2009, và phát triển dưới sự bảo trợ
của Joyent
Mục tiêu ban đầu của Dahl là làm cho trang web có khả năng push như trong
một số ứng dụng web như Gmail. Sau khi thử với vài ngôn ngữ Dahl chọn Javascript vì
một API Nhập/Xuất khơng đầy đủ. Điều này cho phép anh có thể định nghĩa một quy
ước Nhập/Xuất điểu khiển theo sự kiện, non-blocking.
Vài môi trường tương tự được viết trong các ngôn ngữ khác bao gồm Twisted
cho Python, Perl Object Environment cho Perl, libevent cho C và EventMachine
cho Ruby. Khác với hầu hết các chương trình Javascript, Nodejs khơng chạy trên một
trình duyệt mà chạy trên Server. Node.js sử dụng nhiều chi tiết kỹ thuật
của CommonJS. Nó cung cấp một môi trường Repl cho kiểm thử tương tác. Node.js
được Infoworld bình chọn là "Cơng nghệ của năm" năm 2012.
18
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)



1.1.5 HapiJS
Hapi.js là một framework Node.js mạnh mẽ để xây dựng các giao diện lập trình
ứng dụng (API) và các ứng dụng phần mềm khác. Hapi.js được giới thiệu lần đầu bởi
Eran Hammer vào năm 2011 tại Walmart trong nỗ lực xử lý lưu lượng truy cập vào
mỗi khi “Ngày thứ Sáu đen tối” diễn ra. Hapi.js có một hệ thống plugin mạnh mẽ cùng
những tính năng nổi bật như validate dữ liệu đầu vào, chức năng dựa trên cấu hình,
thực hiện bộ nhớ đệm, xử lý lỗi, đăng nhập … Chính vì vậy Hapi.js được dùng để xây
dựng các ứng dụng hữu ích và cung cấp các giải pháp công nghệ cho nhiều website
quy mô lớn như Walmart, Disney, PayPal và Concrete.
Hapi có cấu trúc đơn giản, dễ dàng làm quen và sử dụng. Cộng đồng sử dụng
đông đảo nên bạn sẽ nhận được nhiều support. Hệ thống plugin của hapi vô cùng
phong phú và mạnh mẽ, cho phép bạn thêm các tính năng mới và sửa lỗi với tốc độ
nhanh. Hapi cho phép bạn xây dựng các API có thể mở rộng, đây là một điểm cộng rất
lớn cho các ứng dụng lớn.
1.1.6 Test Driven Development
TDD (Test Driven Development) là một phương thức làm việc, hay một quy
trình viết mã hiện đại. Lập trình viên sẽ thực hiện thông qua các bước nhỏ (BabyStep)
và tiến độ được đảm bảo liên tục bằng cách viết và chạy các bài test tự động
(automated tests). Quá trình lập trình trong TDD cực kỳ chú trọng vào các bước liên
tục sau:
1. Viết 1 test cho hàm mới. Đảm bảo rằng test sẽ fail.
2. Chuyển qua viết code sơ khai nhất cho hàm đó để test có thể pass
3. Tối ưu hóa đoạn code của hàm vừa viết sao cho đảm bảo test vẫn pass và tối ưu
nhất cho việc lập trình kế tiếp
4. Lặp lại cho các hàm khác từ bước 1
Thực tế, nên sử dụng UnitTestFramework cho TDD (như JUnit trong Java),
chúng ta có thể có được mơi trường hiệu quả vì các test được thơng báo rõ rang thơng
qua màu sắc:




Đỏ: test fail, chuyển sang viết function cho test pass
Xanh lá: viết một test mới hoặc tối ưu code đã viết trong màu đỏ.

Điều luật khi áp dụng TDD:


Khơng cho phép viết bất kỳ một mã chương trình nào cho tới khi nó làm một
test bị fail trở nên pass.
19

Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)





Không cho phép viết nhiều hơn một unit test mà nếu chỉ cần 1 unit test cung
đã đủ để fail. Hãy chuyển sang viết code function để pass test đó trước.
Khơng cho phép viết nhiều hơn 1 mã chương trình mà nó đã đủ làm một test
bị fail chuyển sang pass.

Mơ hình chu trình sử dụng TDD.

Hình 1: Mơ hình chu trình TDD

20
Nguyễn Hồng Duy – Lớp 16CNTTC (2016-2020)



1.1.7 Cypress
Cypress là front end testing tool được xây dựng cho các ứng dụng Web hiện đại.
Đây là một công cụ hỗ trợ hữu hiệu cho developers và QA trong kiểm thử ứng dụng
Web hiện đại. Cypress được xây dựng trên một kiến trúc mới và chạy trong cùng vòng
lặp chạy khi ứng dụng đang được thử nghiệm. Cypress thường được so sánh với
Selenium. Nhưng Cypress hoàn toàn khác biệt với Selenium và nó khơng gặp phải các
hạn chế như Selenium. Điều này giúp chúng ta thực thi các Test Cases một cách đơn
giản và dễ dàng hơn.
Cypress hỗ trợ chúng ta:


Set up tests



Write tests



Run tests



Debug Tests

Đằng sau Cypress là một máy chủ Node.js. Quá trình Cypress và Node.js liên
tục liên lạc, đồng bộ hóa và thực hiện các nhiệm vụ thay mặt cho nhau. Có quyền truy
cập vào cả hai phần (front and back) cho phép khả năng phản hồi các sự kiện của ứng
dụng trong thời gian thực, đồng thời hoạt động bên ngồi trình duyệt cho các tác vụ

yêu cầu đặc quyền cao hơn. Thường thì những đối tượng sử dụng Cypress là
developers hoặc QA khi xây dựng một ứng dụng Web có sử dụng Javascript
framework.
Cypress cho phép người dùng thực thi rất nhiều loại test:


End-to-end tests



Integration tests



Unit tests Cypress có thể test bất cứ thứ gì chạy trên trình duyệt.

21
Nguyễn Hồng Duy – Lớp 16CNTTC (2016-2020)


1.2. Cơ sở dữ liệu PostgreSQL
1.2.1. Mục đích sử dụng cơ sở dữ liệu
Mục đích sử dụng cơ sở dữ liệu bao gồm chức năng như: lưu trữ (storage), truy
cập (accessibility), tổ chức (organization), và xử lý (manipulation)
Lưu trữ: Lưu trữ trên đĩa và có thể chuyển đổi từ cơ sở dữ liệu này sang cơ sở
dữ liệu khác, nếu bạn sử dụng cho quy mơ nhỏ, bạn có thể chọn cơ sở dữ liệu nhỏ như:
Microsoft Exel, Microsoft Access, MySQL, Microsoft Visual, FoxPro… Nếu ứng
dụng có quy mơ lớn, bạn có thể chọn cơ sở dữ liệu có quy mô lớn như: Oracle, SQL
server…
Truy cập: Truy cập dữ liệu phụ thuộc vào mục đích và yêu cầu của người sử

dụng, ở mức độ mang tính cục bộ, truy cập cơ sở dữ liệu ngay trong cơ sở dữ liệu với
nhau, nhăm trao đổi hay xử lý dữ liệu ngay bên trong chính nó, nhưng do mục đích và
u cầu người dùng vượt ra ngoài cơ sở dữ liệu, nên bạn cần các phương thức truy cập
dữ liệu giữa các cơ sở dữ liệu với nhau như: Microsoft Acces với SQL Server, hay
SQL Server và cơ sở dữ liệu Oracle…
Tổ chức: Tổ chức cơ sở dữ liệu phụ thuộc vào mơ hình cơ sở dữ liệu, phân tích
và thiết kế cơ sở dữ liệu tức là tổ chức cơ sở dự liệu phụ thuộc vào đặc điểm riêng của
từng ứng dụng. Tuy nhiên khi tổ chức cơ sở dữ liệu cần phải tuân theo một số tiêu
chuẩn của hệ thống cơ sở dữ liệu nhầm tăng tính tối ưu khi truy cập và xử lý.
Xử lý: Tùy vào nhu cầu tính tốn và truy vấn cơ sở dữ liệu với các mục đích
khác nhau, cần phải sử dụng các phát biểu truy vấn cùng các phép toán, phát biểu của
cơ sở dữ liệu để xuất ra kết quả như yêu cầu. Để thao tác hay xử lý dữ liệu bên trong
chính cơ sở dữ liệu ta sử dụng các ngơn ngữ lập trình như: Java, C++, C#, PHP…

22
Nguyễn Hồng Duy – Lớp 16CNTTC (2016-2020)


1.2.2 Giới thiệu về PostgreSQL
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (objectrelational database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã
nguồn mở tiên tiến nhất hiện nay.
PostgreSQL được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy
tính Berkeley, Đại học California.
PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX. Tuy nhiên,
PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nền
tảng khác nhau như Mac OS X, Solaris và Windows.
PostgreSQL là một phần mềm mã nguồn mở miễn phí. Mã nguồn của phần
mềm khả dụng theo license của PostgreSQL, một license nguồn mở tự do. Theo đó,
bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức.
PostgreSQL khơng u cầu q nhiều cơng tác bảo trì bởi có tính ổn định cao.

Do đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp
hơn so với các hệ thống quản trị dữ liệu khác.
PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây
dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu
lỗi fault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ. Bên cạnh hệ
thống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở rộng tuyệt vời. Ví dụ,
bạn có thể định nghĩa các kiểu dữ liệu riêng của bạn, xây dựng các hàm tùy chỉnh, hay
viết mã từ các ngôn ngữ lập trình khác nhau mà khơng cần biên dịch lại cơ sở dữ liệu!
PostgreSQL tuân theo tiêu chuẩn SQL nhưng khơng mâu thuẫn với các tính
năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại. Nhiều tính năng
theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đơi khi có thể có cú pháp hoặc hàm hơi
khác một chút.
Dưới đây là một số hệ tính năng vô cùng đa dạng của PostgreSQL
- Kiểu dữ liệu:
- Nguyên hàm: Số nguyên, số, chuỗi, Boolean
- Cấu trúc: Date/Time, Array, Phạm vi, UUID
- Document: JSON/JSONB, XML, Key-value (Hstore)
- Hình học: Điểm, Đường thẳng, Vòng tròn, Đa giác
- Tùy chỉnh: Composite, Các kiểu tùy chỉnh
- Toàn vẹn dữ liệu:
- UNIQUE, NOT NULL
- Primary Keys
23
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


- Foreign Keys
- Ràng buộc loại trừ
- Khóa hàm số/ Explicit Locks, Khóa khuyến nghị/ Advisory Locks
- Đồng quy, hiệu suất:

- Lập danh mục: B-tree, Multicolumn, Expressions, Partial ….

24
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 Giới thiệu Website
Ezteam.net như là một môi trường nơi mà cho phép các doanh nghiệp IT Việt
Nam và các khách hàng quốc tế có thể kết nối với nhau để cùng thực hiện dự án dưới
sự hỗ trợ tối đa từ công ty cổ phần Napa Global. Ở Ezteam.net bất kỳ một dự án nào đi
đến quá trình ký kết hợp đồng đều sẽ được đảm bảo q trình hồn thành dự án và sự
bảo mật tuyệt đối về tất cả các mặt.

2.2 Phân tích và thiết kế hệ thống
2.2.1. Phân tích yêu cầu chức năng người dùng
 Chức năng chung (public)
➢ Xem thông tin trang web ( thông tin về tình hình các dự án, thơng tin
quảng bá của các đối tác thành viên, thơng tin về tình hình chung của
doanh nghiệp VN trong ngành CNTT)
➢ Đăng nhập và đăng ký tài khoản.
 Chức năng của khách hàng (Customer)
➢ Bao gồm các chức năng public.
➢ Xem và cập nhât thông tin cá nhân.
➢ Tìm kiếm thơng tin cơng ty theo cơng nghệ.
➢ Đăng dự án mới (có u cầu Trial hoặc không Trial).
➢ Review, quản lý các dự án đã đăng.
➢ Chốt nhà thầu cho dự án Trial hoặc dự án chính.
➢ Quản lý các dự án hết hạn.
➢ Quản lý dự án đang chạy

➢ Chat
➢ Quản lý thông báo (Real time).
➢ Theo dõi dashboard của mình (sẽ phát triển)
 Chức năng của doang nghiệp (offshore).
➢ Bao gồm các chức năng public.
➢ Xem và cập nhât thông tin cá nhân.
➢ Xem và cập nhât thơng tin cơng ty.
➢ Tìm kiếm thông tin công ty theo công nghệ.
➢ Xem thông tin công ty khác (bị hạn chế)
➢ Đăng ký đấu thầu dự án (Trial và dự án chính thức)
➢ Quản lý những dự án đã tham gia
➢ Quản lý dự án đang chạy
25
Nguyễn Hoàng Duy – Lớp 16CNTTC (2016-2020)


×