Tải bản đầy đủ (.docx) (73 trang)

ĐỒ án xây DỰNG ỨNG DỤNG MẠNG xã hội TRÊN nền TẢNG WEB

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.77 MB, 73 trang )

MỤC LỤC


DANH MỤC HÌNH ẢNH


DANH MỤC BẢNG BIỂU


MỞ ĐẦU
Chúng ta đang sống thế kỉ XXI, nơi mà mạng Internet và các ứng dụng của nó đã trở
thành thứ không thể thay thế trong tất cả các lĩnh vực kinh tế và trong cả đời sống thường
ngày của hàng tỉ người trên thế giới. Mọi loại thông tin, số liệu âm thanh, hình ảnh có thể
được đưa về dạng kỹ thuật số để bất kỳ máy tính nào cũng có thể lưu trữ, xử lý và chuyển
tiếp cho nhiều người. Những công cụ và sự kết nối của thời đại kỹ thuật số cho phép
chúng ta dễ dàng thu thập, chia sẻ thông tin và hành động trên cơ sở những thơng tin này
theo phương thức hồn tồn mới, kéo theo hàng loạt sự thay đổi về các quan niệm, các tập
tục, các thói quen truyền thống, và thậm chí cả cách nhìn các giá trị trong cuộc sống. Và
giờ đây trong cuộc cách mạng công nghệ 4.0 thì mạng Internet càng trở nên quan trọng
hơn bao giờ hết vì nó là cốt lõi trong mạng lưới trao đổi thơng tin khổng lồ.
Nói mạng Internet là một trong những cơng nghệ quan trọng nhất thế kỉ XXI thì
mạng xã hội là một trong những ứng dụng nổi bật nhất của Internet nói chung và World
Wide Web nói riêng. Các mạng xã hội đang phát triển mạng mẽ và sẽ khơng q khi nói
rằng đây là ứng dụng có ảnh hưởng lớn nhất tới đòi sống xã hội ở hầu hết tất các quốc gia
trên thế giới, trong đó có Việt Nam. Mạng xã hội – một xã hội thu nhỏ trên Internet, đã trở
nên phổ biến với những tính năng vượt trội và đa dạng cho phép người dùng có thể kết
nối, chia sẻ, tiếp nhận thơng tin một cách nhanh chóng và tiện lợi từ hầu như bất kì nơi
nào.
Với sự phát triển của các mạng xã hội càng cho thấy tầm quan trọng của nó trong
cuộc của hàng tỉ người. Không chỉ là những công dụng đơn giản như chia sẻ hình ảnh,
video, các bài viết, hay cảm xúc mà giờ đây mạng xã hội đang lấn sang cả các mảng liên


quan đến thương mại điện tử. Với mạng lưới người dùng đông đảo, các trang bán hàng có
thể dễ dàng tìm kiếm và quảng bá sản phẩm của mình. Vì vậy, em chọn đề tài “Xây dựng
một ứng mạng xã hội trên nền tảng web” để giúp em có thể hiểu và tận dụng được
những công nghệ đang rất phổ biến này.


CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1. Tính cấp thiết của đề tài
Sự phát triển mạnh mẽ của Internet những năm gần đây đã mở ra không chỉ một
ngành nghề, một lĩnh vực mà là cả một kỉ nguyên mới trong cách mà cong người chúng ta
có thể giao tiếp, trao đổi không chỉ thông tin mà cũng như hàng hoá. Đi cùng với sự phát
triển mạnh mẽ này của Internet không thể không nhắc đến một thành phần đã phát triển từ
rất sớm và vẫn ln là khía cạnh mạnh mẽ nhất của Internet đó chính là World Wide Web
hay Web. Từ những ngày đầu chỉ là những những trang chia sẽ văn bản tĩnh khô khan đơn
thuần, dần dần nó trở thành cơng cụ chia sẻ tất cả các loại dữ liệu đa phương tiện từ hình
ảnh đến âm thanh.
Ngày nay những trang web này khơng chỉ có thể chia sẻ các dữ liệu tĩnh mà cịn có
thể tương tác với chúng một cách vô cùng linh hoạt và nhanh chóng. Những trang web
này được gọi là các ứng dụng web.
Một trong những dịch vụ sử dụng sự thành công của Internet cũng như các công
nghệ ứng dụng web một cách hiệu quả nhất chính là các mạng xã hội. Theo những thống
kê gần đây thì có khoảng 3 tỉ người dùng mạng xã hội, và trung bình những người này
mỗi ngày đều dành khoảng 2 tiếng rưỡi để tham gia cập nhật thông tin cũng như chia sẻ
chúng trên các trang mạng xã hội. Với những con số như vậy khơng khó hiểu khi những
mãng xã hội này đang dần lấn sân sang mảng thương mại điện tử khi người dùng có thể
dễ dàng kết nối với những dùng khác có nhu cầu mua hàng một cách dễ dàng thơng qua
các nhóm trao đổi.
Vậy cách thức hoạt động của một trang mạng xã hội là như thế nào cũng như những
cơng nghệ làm ra nó là gì mà khiến các trang mạng hội trở thành một phần không thể
thiếu của rất rất nhiều người trong cuộc sống hiện đại ngày nay? Đây chính là câu hỏi đã

khiến em chọn tìm hiểu và xây dựng một trang mạng xã hội để có thể hiểu rõ nhất về dịch
vụ Internet đình đám này.
1.2. Mục tiêu của đề tài
• Nâng cao kiến thức chuyên môn của bản thân cũng như có thể áp dụng những kiến
thức đã được học tại trường.
• Tìm hiểu các cơng nghệ được sử dụng trong các ứng dụng web cũng như phương
thức hoạt động của loại dịnh vụ Internet này.
• Xây dựng một trang mạng xã hội với những chức năng cơ bản như: Đăng bài viết,
bày tỏ cảm xúc, bình luận, chia sẻ, tạo các nhóm để mọi người tham gia, quản lí
trang cá nhân cũng như các tài nguyên khác của bản thân, …
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

5


1.3. Phạm vi của đề tài
Bài toán xây dựng mạng xã hội là một bài tốn rất rộng chính vì thế trong giới hạn
và phạm vi nghiên cứu của đề tài này em chỉ cho phép người dùng: Đăng ký; Đăng nhập;
Tìm kiếm các bài viết, nhóm; Tạo các nhóm; Đăng bài viết trên trang cá nhân/nhóm;
Quản lí trang cá nhân/nhóm; Xố/chỉnh sửa bài viết; Bình luận; Chia sẻ; Thích bài
viết/bình luận/hình ảnh; Nhắn tin; Thơng báo thời gian thực;
Với những hạn chế về thời gian cũng như khả năng. Một số chức năng phổ biến
khác của các trang mạng xã hội sẽ không được thực hiện như: Gọi điện; Gọi video; Tạo
các trang page có nhiều người quản lý; Tối ưu giao diện cho đa thiết bị.
1.4. Nội dung nghiên cứu
• Tìm hiểu về mạng xã hội.
• Tìm hiểu các công nghệ để xây dựng ứng dụng như: Spring, MySQL, Angular
• Phân tích và thiết kếmột trang mạng xã hội.
Các nội dung trên sẽ được chia làm các chương như sau:
Chương I. Tổng quan về đề tài.

Chương II. Cơ sở lý thuyết và cơng nghệ. Chương này sẽ trình bày về một số công
nghệ cho các ứng dụng web.
Chương III. Phân tích và đặc tả yêu cầu. Chương này sẽ phân tích và mơ tả bài
tốn qua các ca sử dụng.
Chương IV. Thiết kế hệ thống. Chương này trình bày về cài đặt và triển khai hệ
thống.
Chương V: Kết quả thực nghiệm.

Nguyễn Công Minh - Lớp Khoa học máy tính K61

6


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
2.1. Tổng quan về ứng dụng web
2.1.1. Ứng dụng web là gì?
Các ứng dụng web (web application) sử dụng kết hợp các server-side scripts (PHP
và ASP) để xử lý việc lưu trữ và truy xuất thông tin, và client-side scripts (JavaScript và
HTML) để trình bày thơng tin cho người dùng. Điều này cho phép người dùng tương tác
với doanh nghiệp bằng biểu mẫu trực tuyến, hệ thống quản lý nội dung, giỏ hàng mua
sắm và hơn thế nữa. Ngoài ra, các ứng dụng còn cho phép nhân viên tạo tài liệu, chia sẻ
thông tin, cộng tác trên các dự án và làm việc trên các tài liệu chung bất kể vị trí hoặc
thiết bị.
Một số Web app phổ biến và được hàng triệu người sử dụng hàng ngày trên thế giới
như: Netflix, Facebook, Twitter, Instagram, …

Hình 2-1. Một số Web apps phổ biến.
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

7



2.1.2. Các loại ứng dụng web
Bảng 2-1. Các loại ứng dụng web
Responsive

Dynamic Serving

Separate Mobile Site

Khái niệm

Là trang web tự động
thay đổi kích thước và
hình thức hiển thị dựa
theo kích cỡ màn hình
thiết bị truy cập của
người dùng.

Trang web tự động
cung cấp 2 phiên bản
khác nhau về mặt dựa
theo thiết bị mà người
dùng truy cập vào.
Điểm khác biệt của
Dynamic Serving với
Responsive là HTML
của từng thiết bị nhận
được sẽ khác nhau.
Tuy nhiên URL của

trang web sẽ thay đổi.

Đây là hình thức xây
dựng 2 trang web riêng
biệt cho Desktop và
mobile. Các website
này sẽ không phụ
thuộc nhau về nội
dung, URL cũng khác
nhau.

Mô tả

Thay đổi để phù hợp
với kích thước màn
hình thiết bị truy cập
của người dùng.

Thay đổi để phù hợp
với kích thước màn
hình thiết bị truy cập
của người dùng.

Thay đổi để phù hợp
với kích thước màn
hình thiết bị truy cập
của người dùng.

Thiết bị


Thay đổi về
khơng
thay
HTML.

URL

Khơng thay đổi.

Khơng thay đổi.

Bảo trì

Ít tốn kém.

Cần nhiều nhân lực về 2 trang web riêng biệt,
kỹ thuật.
có thể giống hoặc khác
cho từng trang tùy theo
định hướng phát triển.

Nội dung

Chỉ một nội dung cho cả Chỉ một nội dung cho cả
Desktop và mobile.
Desktop và Mobile, có
thể khác nhau tùy theo
định hướng phát triển.

CSS, Phục vụ phiên bản 1 Website cho Desktop

đổi HTML khác nhau tùy và 1 website cho
theo thiết bị.
mobile.

Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

Khác
nhau
cho
Desktop và mobile.

2 website riêng biệt, có
thể giống nhau hoặc riêng
cho từng trang tùy theo
định hướng phát triển.

8


Tác động Không ảnh hưởng.
đến SEO

Tốc
web

Không ảnh hưởng.

độ Phiên bản mobile có thể Tùy thuộc vào lập trình.
load chậm hơn.


Đặc điểm

Tiện lợi, phù hợp với các
website tin tức, nội dung
người dùng chỉ cần đọc là
chính.

Chuẩn bị kỹ thuật để đảm
bảo khơng bị trùng lặp
nội dung.
Tùy thuộc vào lập trình.

Dynamic Serving khá Mang đến trải nghiệm
phức tạp và tốn kém hơn người tốt nhất trên điện
trong quá trình xây dựng thoại di động.
web app.

Tốn nhiều thời gian lập
Chi phí thấp, bảo trì dễ Dễ dàng bảo trì, quản lý trình web app.
dàng.
nội dung, URL và SEO.
Thiết kế web app nhanh Đem lại trải
chóng, quản lý nội dung hơn cho các
dễ dàng, URL và SEO.
nhiều tính
ecommerce.

Chi phí thiết kế ứng dụng
nghiệm tốt web và bảo trì cao hơn.
website có

năng như
Q trình quản lý nội
dung, URL, SEO cũng
phức tạp hơn.

2.1.3. Một số ứng dụng của ứng dụng web
a) Quản lý tuyển dụng
• Quản lý các đợt ứng tuyển của cơng ty.
• Lập phiếu và tạo đợt tuyển dụng.
• Đăng thơng tin, duyệt u cầu tuyển dụng.
• Nhận hồ sơ đăng ký, quản lý kết quả phỏng vấn của ứng viên.
• Đóng hệ thống và duyệt, nhận hồ sơ khi hết hạn.
• Chấm điểm test tự động, gửi mail đến những ứng viên đạt yêu cầu và chờ
bộ phận tuyển dụng sắp xếp ngày, giờ phỏng vấn.
• Gửi email cám ơn đến ứng viên không đạt và lưu vào danh sách ứng viên đã
làm test.
• Gửi email hẹn ứng viên thời gian phỏng vấn sơ tuyển.
• Tự động báo cáo với bộ phận tuyển dụng những ứng viên không xác nhận
Nguyễn Công Minh - Lớp Khoa học máy tính K61

9


email.
• Chuyển thơng tin ứng viên được tuyển vào danh sách nhân viên
• Theo dõi nhu cầu tuyển dụng từ các bộ phận, phịng ban chi tiết theo vị trí
cơng việc đang cần ứng tuyển.
• Khai báo nhanh chóng các thông tin ứng tuyển như: kinh nghiệm làm việc,
thông tin sức khỏe hay trình độ học vấn, chứng chỉ và các kỹ năng…..
• Lưu trữ các thơng tin ứng viên chưa được tuyển để sử dụng cho các lần

tuyển dụng sau, giúp cơng ty giảm chi phí về tuyển dụng.
• Cung cấp kịp thời và chi tiết các báo cáo thống kê, phân tích tình hình tuyển
dụng.
• Tự động chuyển đổi tồn bộ thơng tin ứng viên sang nhân viên mới với
những hồ sơ được trúng tuyển.
b) Quản lý hàng bán lẻ, kho
• Quản lý nhóm hàng đang kinh doanh và tìm kiếm các mặt hàng tiện lợi.
• Quản lý thơng tin các nhà cung cấp hàng hóa, xuất nhập hàng vào kho.
• Quản lý, thiết lập bảng giá, xuất hàng bán sỉ, lẻ.
• Chức năng tìm kiếm, báo cáo kho hàng, thống kê doanh thu theo nhân viên.
• Báo cáo lãi, lỗ và in báo cáo cụ thể.
c) Quản lý trường học
• Quản lý tuyển sinh, thi xếp lớp, kết quả học tập.
• Quản lý học viên và giáo viên.
• Quản lý đào tạo - lớp học.
• Quản lý thu chi, tính lương.
d) Phần mềm kế tốn.
• Tìm kiếm, quản lý chứng từ, quản lý tiền tệ, nhập dữ liệu từ file Excel.
• Điều chỉnh danh mục tài khoản, đối tượng tương tác và hợp đồng.
• Xuất, trao đổi và sao lưu dữ liệu nhanh chóng.
e) Phần mềm tính tiền siêu thị
• Quản lý các đơn hàng - giao dịch và phân quyền nhóm, nhân viên
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

10


• Quản lý cơng nợ, thơng báo chính xác cụ thể số lượng hàng hóa tồn kho và số
lượng đã bán
• Lưu lại lịch sử chỉnh sửa kết hợp với máy in, các thiết bị đọc mã vạch,…

• Tự động lưu trữ, sao lưu dữ liệu, thống kê báo cáo đảm bảo an toàn hệ thống.
2.1.4. Ưu điểm của ứng dụng web
• So với ứng dụng trên máy tính và các ứng dụng trên di động, ứng dụng web
thường sẽ dễ dàng bảo trì hơn do đó kéo theo chi phí phát sinh cũng thấp hơn.
• Ứng dụng web có thể dùng được trên tất cả các nền tảng: Máy tính (Linux,
Mac, Windows, …), di động (Android, iOs, …) chỉ cần chúng hỗ trợ trình
duyệt web.
• Khơng qua sự kiểm duyệt cũng như kiểm soát của các chợ ứng dụng lớn như
Appstore, Play store, …
• Khơng cần cài đặt để có thể sử dụng.
• Dễ dàng cập nhật và khơng cần nhắc người dùng cập nhật.
2.1.5. Nhược điểm của ứng dụng web
• Bảo mật khơng phải là một thế mạnh của các ứng dụng web khi truyền các dữ
liệu cá nhân qua Internet.
• Ứng dụng web khơng phụ thuộc vào nền tảng nhưng lại phụ thuộc và trình
duyệt web. Một số trình duyệt khác nhau sẽ có các điểm khác biệt nhất định.
• Phụ thuộc vào mạng Internet. Hầu hết các ứng dụng web đều yêu cầu kết nối
Internet để hoạt động.
• Có thể sẽ tiêu tốn nhiều dữ liệu di động hơn so với các nền tảng khác do ứng
dụng web sẽ phải tải tất cả dữ liệu từ Internet về và khơng thể sử dụng lại
(hoặc rất ít) các dữ liệu đã được tải về từ trước.

Nguyễn Công Minh - Lớp Khoa học máy tính K61

11


2.1.6. Sự khác nhau giữa ứng dụng web và website
Bảng 2-2. Sự khác nhau giữa ứng dụng web và website
Ứng dụng web


Website

Được thiết kế với mục tiêu là
tương tác với người dùng. Thường
sẽ lưu thông tin người dùng và tuỳ
biến theo các dữ liệu cá nhân của
người dùng.

Website thường là các trang với
nội dung tĩnh. Nội dung của trang
sẽ không đổi với tất cả người
dùng.

Tương
tác Người dùng không chỉ xem các
người dùng
nội dung trong trang mà còn
tương tác, sử dụng, điều khiển
chúng.

Chỉ cung cấp các nội dung hình
ảnh và văn bản để người dùng
xem và người dùng sẽ không thể
hoặc rất ít có khả năng tương tác
với chúng.

Đăng nhập

Việc đăng nhập là không bắt buộc

cho các trang thông tin. Người
dùng cũng có thể đăng nhập
nhưng thường sẽ khơng có tác
động nhiều đến nội dung của
trang trước và sau đăng nhập.

Đối tượng

Ứng dụng web cần người dùng
đăng nhập để có thể tối ưu giao
diện và các chức năng dựa theo
từng người dùng.

Nhiệm vụ và Ứng dụng web sẽ có các chức Thường sẽ chỉ có chức năng là
độ phức tạp
năng cao và phức tạp hơn so với hiển thị các nội dung nhất định.
website.
Biên
dịch Phải được biên dịch trước khi Không cần biên dịch.
(Compilation) được triển khai (deploy).
Triển khai

Tất cả thay đổi sẽ khiến toàn bộ Những sự thay đổi nhỏ không cần
(Deployment) project phải được biên dịch và phải tải lại toàn bộ mà chỉ cần cập
triển khai lại.
nhật phần HTML code.
2.2. Spring (Spring boot)
2.2.1. Spring là gì?
Spring được xem là một Framework có vai trị phát triển cho các ứng dụng Java.
Trong số đó, phổ biến nhất là Java Enterprise và nó được sử dụng bởi hàng triệu lập trình

viên khác nhau. Framework này được phát triển đầu tiên bởi Rod Johnson và được ban
Nguyễn Công Minh - Lớp Khoa học máy tính K61

12


hành giấy phép Apache 2.0.
Spring có kích thước nhẹ và trong suốt nên có thể hoạt động một cách trong suốt
nhất với lập trình viên. Spring mặc dù nhẹ nhưng lại có khả năng hỗ trợ cho các ứng dụng
tạo ra hiệu năng cao, sử dụng lại code dễ dàng và dễ kiểm thử,… Nhờ vậy mà các lập
trình viên có thể dễ dàng thực hiện việc tối ưu hóa được hầu hết mọi công việc cũng như
tiết kiệm được tối đa thời gian làm việc.
Các tính năng chính của Spring chủ yếu được sử dụng để có thể xây dựng được các
ứng dụng bên trong Java Desktop, một số ứng dụng mobile, các Java Web. Một trong
những mục tiêu chính nhất của Spring là đảm bảo cho việc phát triển những ứng dụng
J2EE một cách dễ dàng hơn dựa trên mơ hình sử dụng POJO (Plain Old Java Object).
2.2.2. Các module của Spring
a) Test: Đây là tầng cung cấp cho người dùng khả năng hỗ trợ kiểm thử với JUnit và
TestNG.
b) Spring Core Container: Nó có bao gồm một số module khác như:
• Spring core, bean: Có khả năng cung cấp các tính năng như: IOC và
Dependency Injection.
• Spring Context: Hỗ trợ các dạng đa ngôn ngữ và các tính năng Java EE cho
người dùng như: EJB, JMX.
• Expression Language: Có khả năng mở rộng từ Expresion Language bên
trong JSP. Từ đó, cung cấp các hỗ trợ cho quá trình setting hoặc getting các
giá trị. Hầu hết các method đều sẽ thực hiện cải tiến cho phép truy cập vào
collections, index, các toán tử logic…
c) AOP, Aspects and Instrumentation: Các module này sẽ giữ nhiệm vụ hỗ trợ cho
các cài đặt lập trình thiên hướng khía cạnh và khả năng hỗ trợ tích hợp với

AspectJ
d) Data Access / Integration: Đây là nhóm bao gồm JDBC, ORM, OXM, JMS và
module Transaction. Chúng có khả năng cung cấp giao tiếp cùng với database.

Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

13


e) Web: Nó hay cịn gọi là Spring MVC, đây là một trong những nhóm bao gồm:

Hình 2-2. Kiến trúc của Spring

Web, Web-Servlet… Nó sẽ hỗ trợ cho việc tạo ra các ứng dụng web.
2.2.3. Thành phần cốt lõi của Spring
Spring Core là một trong những thành phần quan trọng cốt lõi của Spring
Framework. Đây là một trong những nền tảng được đánh giá bao nhờ có sự vững chắc
giúp bạn có thể xây dựng được nhiều thành phần khác từ các hệ sinh thái Spring
Framework.
2.2.3.1. Spring Bean
Spring Bean được xem là trung tâm của Spring Core và là một trong những trái tim
ứng dụng của Spring. Bởi vì Spring Framework được thiết kế bằng cách sử dụng các
POJO hoặc các Spring Bean và bạn có thể hiểu Spring Bean là những đối tượng Java
tương đối đơn giản.
2.2.3.2. Dependency Injection (DI)
Dependency Injection là một trong những sức mạnh vô cùng nổi bật của Spring
Framework. Trong một số phiên bản gốc thì EJB người ta thường khơng nhận thấy sự
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

14



xuất hiện của các Dependency Injection.
Tuy nhiên, do nhận thấy được sự thành công từ Spring nên các phiên bản EJB 3.x
cũng đã cung cấp các annotation để bạn có thể thực hiện inject các dependency.
Dependency Injection được đánh giá là một trong những mẫu thiết kế phần mềm đối
tượng phụ thuộc thì sẽ được inject vào một lớp nào đó.
2.2.3.3. Spring Context
Spring Context giúp bạn mang mọi thứ lại với nhau và Spring Context thường được
kế thừa từ những tính năng từ Spring Bean. Từ đó, bổ sung và hỗ trợ cho các
internationalization (ví dụ như các resource bundle), event propagation, resource
loading…
Ngồi ra, Spring Context có khả năng hỗ trợ các tính năng mới của Java như EE
hoặc EJB, JMX,… Trong đó, Interface Application Context mới chính là một trong những
trọng tâm quan trọng của Spring Context.
2.2.3.4. Spring Expression Language (SpEL)
Spring Expression Language là loại ngôn ngữ ngắn gọn có thể giúp cho các cấu hình
Spring Framework trở nên linh hoạt và dễ hiểu hơn.
2.2.4. Lý do chọn Spring trong đồ án
• Spring có các cơng nghệ giúp xây dựng REST API một cách nhanh chóng.
• Spring JPA giúp giao tiếp và thực hiện các tác vụ với database một cách thuận tiện
và dễ dàng.
• Spring Security giúp dễ dàng quản lý bảo mật của API.
2.3. Angular
2.3.1. Angular là gì?
Angular là một framework có cấu trúc cho các ứng dụng web động. Nó cho phép
bạn sử dụng HTML như là ngôn ngữ mẫu và cho phép bạn mở rộng cú pháp của HTML
để diễn đạt các thành phần ứng dụng của bạn một cách rõ ràng và súc tích. Hai tính năng
cốt lõi: Data binding và Dependency injection của AngularJS loại bỏ phần lớn code mà
bạn thường phải viết. Nó xảy ra trong tất cả các trình duyệt, làm cho nó trở thành đối tác

lý tưởng của bất kỳ công nghệ Server nào.
Angular sử dụng kiến trúc Model-View-Controller (MVC), được sử dụng trong phát
triển ứng dụng web. Kiểu kiến trúc này bao gồm:
Nguyễn Công Minh - Lớp Khoa học máy tính K61

15


• Model – cấu trúc dữ liệu quản lý thông tin và nhận đầu vào từ controller
• View – bản đại diện của thơng tin
• Controller – đáp ứng đầu vào và tương tác với model
Trong Angular, model là framework, view là HTML và control là JavaScript.
2.3.2. Những tính cơ bản của Angular
• Controller : xử lý dữ liệu cho đối tượng $scope, từ đây bên views sẽ sử dụng các
dữ liệu trong scope để hiển thị ra tương ứng.
• Data-binding : tự động đồng bộ dữ liệu giữa model và view
Service : Nó được xem là singleton object có khả năng khởi tạo 1 lần duy nhất dành
riêng cho mỗi ứng dụng và nó cung cấp các phương án dữ liệu có sẵn như: ($http,
$sce, $rootElement, $controller, $document, $httpBackend, $compile, $parse,
$rootScope …..)
• Scope : là một trong những đối tượng có nhiệm vụ giao tiếp giữa controller và
view của các ứng dụng.
• Filter : Việc lọc các tập hợp con từ bên trong item ở các mảng và trả nhanh về các
mảng mới.
• Directive : được sử dụng để tạo ra các thẻ HTML riêng nhằm mục đích phục vụ
một số mục đích riêng. AngularJS thường có những directive sở hữu sẵn như
ngBind, ngModel…
• Temple : Là một thành phần của view có khả năng hiển thị thơng tin từ controller.
• Routing : là sự chuyển đổi giữa các action trong controller, qua lại ngay giữa các
view.

• MVC & MVVM : Là mơ hình thiết kế nhằm mục đích phân chia các ứng dụng có
nhiều thành nhiều phần khác nhau (nó được gọi là Model, View và Controller) và
mỗi phần thường sẽ sở hữu một nhiệm vụ nhất định. AngularJS thường không triển
khai MVC dựa theo cách truyền thống mà chủ yếu gắn liền với Model-ViewViewModel hơn.
• Deep link : Liên kết sâu này cho phép lập trình viên mã hóa các trạng thái của ứng
dụng bên trong URL để có thể bookmark với nhiều cơng cụ tìm kiếm khác. Hầu
hết, các ứng dụng này đều có thể được phục hồi lại từ những địa chỉ URL với cùng
trạng thái.
• Dependency Injection: AngularJS có sẵn dependency injection hỗ trợ bạn tạo ra
Nguyễn Công Minh - Lớp Khoa học máy tính K61

16


các ứng dụng có tiềm năng phát triển, dễ hiểu và kiểm tra.
2.3.3. Lý do chọn Angular trong đồ án
• Giúp xây dựng ứng dụng một trang (SPA – Single Page Application).
• Dễ dàng thay đổi các dữ liệu khi tương tác với người dùng.
• Hỗ trợ sẵn Typescript giúp xây dựng và sửa lỗi các dự án phức tạp một cách đơn
giản và an toàn hơn.
2.4. MySQL
2.4.1. MySQL là gì?
SQL là viết tắt của Structured Query Language có nghĩa là ngơn ngữ truy vấn có cấu
trúc, là một ngơn ngữ máy tính để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong
một cơ sở dữ liệu quan hệ.
SQL là ngôn ngữ chuẩn cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ thống quản lý cơ
sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Sybase, Informix, Postgres
và SQL Server đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.
MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database
Management System, viết tắt là RDBMS) hoạt động theo mơ hình client-server. RDBMS

là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo
hình thức quản lý các mối liên hệ giữa chúng.
MySQL là một trong số các phần mềm RDBMS. RDBMS và MySQL thường được
cho là một vì độ phổ biến quá lớn của MySQL. Các ứng dụng web lớn nhất như
Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL cho mục đích lưu trữ
dữ liệu. Kể cả khi ban đầu nó chỉ được dùng rất hạn chế nhưng giờ nó đã tương thích với
nhiều hạ tầng máy tính quan trọng như Linux, macOS, Microsoft Windows, và Ubuntu.
2.4.2. Tại sao nên sử dụng MySQL
• Miễn phí.
• Cho phép người dùng truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu
quan hệ.
• Cho phép người dùng mơ tả dữ liệu.
• Cho phép người dùng xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
• Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình
biên dịch trước.
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

17


• Cho phép người dùng tạo và thả các cơ sở dữ liệu và bảng.
• Cho phép người dùng tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ
liệu.
• Cho phép người dùng thiết lập quyền trên các bảng, thủ tục và view.
2.4.3. Nhược điểm của MySQL
• Giới hạn: Theo thiết kế, MySQL khơng có ý định làm tất cả và nó đi kèm với các
hạn chế về chức năng mà một vào ứng dụng có thể cần.
• Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụ tài liệu tham
khảo, các giao dịch, kiểm tốn,…) làm cho nó kém tin cậy hơn so với một số hệ
quản trị cơ sở dữ liệu quan hệ khác.

• Dung lượng hạn chế: Nếu số bản ghi của bạn lớn dần lên thì việc truy xuất dữ liệu
của bạn là khá khó khăn, khi đó chúng ta sẽ phải áp dụng nhiều biện pháp để tăng
tốc độ truy xuất dữ liệu như là chia tải database này ra nhiều server, hoặc tạo cache
MySQL
2.4.4. Lý do chọn MySQL trong đồ án
• Là phần mềm mã nguồn mở miễn phí.
• Đa nền tảng.
• Có cộng đồng người dùng lâu năm rộng lớn. Dễ dàng tìm hiểu và sửa lỗi nếu có.

Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

18


CHƯƠNG 3. PHÂN TÍCH VÀ ĐẶC TẢ U CẦU
3.1. Mơ tả bài tốn và đặc tả u cầu
3.1.1. Mơ tả bài toán
Ứng dụng mạng xã hội dùng để kết nối các thành viên có cùng sở thích, nghề
nghiệp,… hoặc với cả những người có mối quan hệ ngồi đời thực trên Internet không
phân biệt không gian và thời gian. Mạng xã hội là một trang web mang mọi người đến với
nhau để nói chuyện, chia sẻ ý tưởng và sở thích, hay làm quen với những người bạn mới .
Mạng xã hội có các chức năng như đăng bài, thích, bình luận, chia sẻ, tạo nhóm, ....
3.1.2. Đối tượng sử dụng
Việc xác định đối tượng người dùng là vô cùng quan trọng trong bất kì hệ thống nào.
Nó là bước đầu tiên để ta có thể xác định các chức năng và mục tiêu của hệ thống. Việc
xác định sai các đối tượng sử dụng sẽ làm trang web mất đi tính ứng dụng của nó. Qua
tìm hiểu thì em đã phân chia các nhóm đối tượng người sử dụng như sau:
3.1.2.1. Nhóm người dùng thơng thường
Đây là nhóm người dùng cơ bản của ứng dụng. Tất cả mọi thành viên khi đã đăng
nhập vào trang web đều có các quyền của một người dùng như: Đăng bài, quản lí trang cá

nhân, bình luận, thích, …
3.1.2.2. Nhóm người dùng là quản lí nhóm
Đây là những người dùng đang là quản lí của một nhóm. Những người này sẽ có
quyền quản lý nhóm, các thành viên cũng như các tài nguyên nhóm. Một số chức năng
chính trong nhóm quyền này như: Cho phép người dùng đăng bài, cho phép người dùng
tham gia nhóm, loại người dùng khỏi nhóm, gỡ bài đăng, quản lí cài đặt nhóm, …
3.1.3. Các u cầu cần đạt được
3.1.3.1. Yêu cầu về chức năng
a) Đối với người dùng thơng thường
• Đăng nhập, đăng xuất.
• Đăng bài viết.
• Bình luận.
• Thích.
• Tìm kiếm.
• Chia sẻ.
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

19


• Quản lý trang cá nhân.


Nhắn tin.

b) Đối với người dùng là quản lý nhóm.
• Tất cả chức năng của người dùng thơng thường.
• Quản lý tài ngun, cài đặt nhóm.
• Xố bài viết, bình luận.
• Quản lí thành viên: Thêm thành viên mới, loại thành viên khỏi nhóm.

3.1.3.2. Yêu cầu phi chức năng
Hầu hết thời gian mà người dùng khi truy cập vào một trang mạng xã hội sẽ là để
đọc và tìm kiếm thơng tin. Chính vì thế mà giao diện và sự thuận tiện cũng như hợp lí
trơng phân tách bố cục của trang web là một yếu tố vô cùng quan trọng trong việc đánh
giá một trang web. Như vậy ngồi việc có các chức năng tốt đáp ứng nhu cầu của người
dùng thì một trang web cần phải có thêm các yếu tố sau đây:
• Các thành phần trang web được bố trí hợp lí, thuận tiện cho người sử dụng.
• Sử dụng ngơn ngữ, phơng chữ rõ ràng dễ hiểu.
• Khơng sử dụng các màu sắc quá sặc sỡ cũng như những hiệu ứng khơng cần thiết.
• Tương thích với nhiều nền tảng trình duyệt.
• Tối ưu hố thời gian tải trang.
3.2. Xác định các ca sử dụng của hệ thống
Qua quá trình khảo sát và phân tích bài tốn, ứng dụng gồm các chức năng sau:
• Đăng nhập: Chức năng đăng nhập sẽ yêu cầu nhập đầy đủ tên đăng nhập và mật
khẩu để đăng nhập vào hệ thống hoặc có thể đăng nhập bằng tài khoản bên thứ ba
như Google, ….
• Đăng xuất: Chức năng này cho phép người dùng thoát trang ứng dụng cũng như
xoá các dữ liệu liên quan được lưu trên trình duyệt.
• Đăng bài viết: Chức năng này cho phép người dùng có thể tạo bài viết mới trên
trang cá nhân hoặc trong nhóm.
• Xố bài viết: Chức năng này cho phép người dùng có thể xố bài viết của bản thân
trên trang cá nhân hoặc trong nhóm. Hoặc người quản lí nhóm có thể xố bài của
các thành viên.
• Thích: Chức năng này cho phép người dùng có thể thích một bài viết, hình ảnh
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

20


hoặc bình luận của người khác.

• Share: Chức năng này cho phép người dùng có thể chia sẻ các bài viết có thiết lập
riêng tư là “Cơng khai” trên trang cá nhân của mình hoặc trong nhóm
• Bình luận: Chức năng này cho phép người dùng có thể tạo bình luận trong các bài
viết hoặc ảnh có mở chức năng bình luận.
• Xố bình luận: Chức năng này cho phép người dùng xố bình luận của bản thân
hoặc cho phép quản trị viên xố bình luận vi phạm của các thành viên trong nhóm.
• Theo dõi: Cho phép người dùng theo dõi một bài viết hoặc trang, nhóm và sẽ nhận
được thơng báo khi các đối tượng đó có bài đăng mới, bình luận mới, …
• Bỏ theo dõi: Bỏ theo dõi các trang đã theo dõi.
• Nhắn tin: Cho phép người dùng nhắn tin với một người dùng khác.
• Chặn người dùng: Cho phép người dùng chặn một người dùng khác. Người dùng
bị chặn sẽ không thể xem trang cá nhân của người chặn cũng như bình luận, bài
viết của người chặn tại mọi nơi.
• Tìm kiếm: Người dùng có thể tìm kiếm bài viết, trang cá nhân, nhóm theo tên, nội
dung, …
• Chỉnh sửa bài viết: Cho phép người dùng chỉnh sửa bài viết của mình.
• Chỉnh sửa hình ảnh: Cho phép người dùng chỉnh sửa hình ảnh của mình.
• Chỉnh sửa bình luận: Cho phép người dùng chỉnh sửa bình luận của mình.
• Chỉnh sửa trang cá nhân: Cho phép người dùng có thể chỉnh sửa các thơng tin cá
nhân, ảnh đại diện, ảnh bìa, … trên trang cá nhân của bản thân.
• Sửa cài đặt riêng tư của bài viết hoặc hình ảnh: Chức năng này cho phép người
dùng chỉnh sửa cài đặt riêng tư của các bài viết hoặc hình ảnh của bản thân.
• Gửi lời mời kết bạn: Chức năng này cho phép người dùng có thể gửi lời mời kết
bạn đến một người khác
• Trả lời kết bạn: Khi nhận được một lời mời kết bạn người dùng có thể từ chối
hoặc chấp nhận lời mời đó.
• Gửi u cầu gia nhập nhóm: Cho phép người dùng gửi yều cầu gia nhập một
nhóm.
• Trả lời yêu cầu gia nhập nhóm: Các quản trị viên có thể chấp nhận hoặc từ chối
yêu cầu gia nhập nhóm của người dùng.

Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

21


• Loại người dùng khỏi nhóm: Cho phép quản trị viên loại người dùng ra khỏi
nhóm.
3.3. Đặc tả ca sử dụng
3.3.1. Ca sử dụng đăng nhập
a) Mô tả
 Tên ca sử dụng: Đăng nhập.
 Mục đích: Mơ tả cách người dùng đăng nhập vào hệ thống để có thể dùng các chức
năng.
 Tác nhân: Người dùng.
b) Các luồng sự kiện
 Các luồng sự kiện chính
• Người dùng đăng nhập vào hệ thống.
• Hệ thống kiểm tra tính hợp lệ của các thông tin mà người dùng nhập. Nếu
thông tin không hợp lệ sẽ chuyển qua luồng A1.
 Các luồng rẽ nhánh
• Luồng A1: Thơng tin đưa vào khơng hợp lệ
 Hệ thống thông báo cho người dùng biết thông tin vừa nhập là không hợp
lệ.
 Yêu cầu người dùng nhập lại.
c) Tiền điều kiện
 Người dùng đã đăng nhập vào hệ thống.
d) Hậu điều kiện
 Nếu đăng nhập thành công người dùng sẽ được chuyển hướng đến trang chủ và có
thể bắt đầu sử dụng các chức năng của trang.
3.3.2. Ca sử dụng kết bạn

a) Mô tả
 Tên ca sử dụng: Kết bạn.
 Mục đích: Mơ tả cách người dùng gửi lời kết bạn với người dùng khác cũng như
trả lời lời mời kết bạn của người khác gửi cho mình.
 Tác nhân: Người dùng.
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

22


b) Các luồng sự kiện
 Các luồng sự kiện chính
• Người dùng nhấn vào nút kết bạn trên trang cá nhân hoặc trong cửa sổ thông
tin cá nhân của một người dùng khác.
• Lời mời kết bạn sẽ được gửi cho người đó và hệ thống sẽ thơng báo cho người
đó có lời kết bạn mới.
• Người dùng kia có thể chấp nhận/từ chối lời mời qua cửa sổ thông báo hoặc
qua trang cá nhân của người gửi. Hoặc cũng có thể khơng trả lời u cầu đó.
c) Tiền điều kiện
 Người dùng đã đăng nhập vào hệ thống.
d) Hậu điều kiện
 Nếu người dùng khác đồng ý thì sẽ có thơng báo trả về là lời mời kết bạn đã được
chấp thuận.
3.3.3. Ca sử dụng yêu cầu gia nhập nhóm
a) Mơ tả
 Tên ca sử dụng: u cầu gia nhập nhóm.
 Mục đích: Mơ tả người dùng gửi u cầu tham gia nhóm.
 Tác nhân: Người dùng, Quản trị nhóm.
b) Các luồng sự kiện
 Các luồng sự kiện chính

• Người dùng nhấn vào nút yêu cầu tham gia nhóm tại trang của nhóm.
• Thơng báo u cầu gia nhập mới sẽ được gửi đến các quản trị viên.
• Quản trị viên có thể chấp nhận, từ chối hoặc khơng trả lời.
c) Tiền điều kiện
 Người dùng đã đăng nhập vào hệ thống.
d) Hậu điều kiện
 Nếu được chập thuận người dùng có thể xem các bài viết, nội dung trong nhóm
cũng như có thể đăng bài, bình luận, like các bài viết trong nhóm.

Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

23


3.3.4. Ca sử dụng đăng bài
a) Mô tả
 Tên ca sử dụng: Đăng bài viết
 Mục đích: Mơ tả người dùng thực hiện đăng bài viết.
 Tác nhân: Người dùng.
b) Các luồng sự kiện
 Các luồng sự kiện chính
• Người dùng nhấn vào nút tạo bài viết mới.
• Người dùng nhập chữ vào bài viết, thêm hình ảnh.
• Người dùng nhấn vào nút đăng bài để tiến hành đăng.
c) Tiền điều kiện
 Người dùng đã đăng nhập vào hệ thống. Nếu đăng bài trong nhóm thì người dùng
cần là thành viên của nhóm.
d) Hậu điều kiện
 Bài đăng sẽ được đăng trên trang cá nhân/nhóm và sẽ được nhìn thấy bời tất cả
người khác. Nếu người dùng theo dõi nhóm/trang cá nhân nơi bài đăng được đăng

thì sẽ có thơng báo có bài đăng mới được gửi đến.
3.3.5. Ca sử dụng xố bài viết.
a) Mơ tả
 Tên ca sử dụng: Xố bài viết
 Mục đích: Mơ tả q trình xố bài viết của người dùng.
 Tác nhân: Người dùng, quản trị nhóm.
b) Các luồng sự kiện
 Các luồng sự kiện chính
• Người dùng nhấn vào nút tuỳ chọn trên bài đăng muốn xố.
• Cửa sổ tuỳ chọn sẽ hiện lên. Nếu người dùng là chủ bài viết hoặc là quản trị
nhóm mà bài viết được đăng thì sẽ có tuỳ chọn xố bài viết trong đó.
• Người dùng nhấn nút xố bài đăng để xố bài.
c) Tiền điều kiện
Nguyễn Cơng Minh - Lớp Khoa học máy tính K61

24


 Người dùng đã đăng nhập, người dùng là chủ bài viết hoặc quản trị nhóm nơi bài
viết được đăng.
d) Hậu điều kiện
 Bài đăng sẽ bị xoá cùng tất cả các hình ảnh, bình luận có trong bài đăng.
3.3.6. Ca sử dụng thay ảnh đại diện/ảnh bìa.
a) Mơ tả
 Tên ca sử dụng: Thay ảnh đại diện/ảnh bìa
 Mục đích: Mơ tả cách người dùng thêm/chỉnh sửa thơng tin, hình ảnh trên trang cá
nhân của mình.
 Tác nhân: Người dùng.
b) Các luồng sự kiện
 Các luồng sự kiện chính

• Người dùng nhấn vào hình đại diện của mình trên thanh tiêu đề để đến trang cá
nhân
• Người dùng nhấn vào hình máy ảnh trên hình đại diện/ảnh bìa để thay ảnh.
• Cửa sổ chọn ảnh hiện lên.
• Người dùng có thể chọn ảnh đã đăng lên của bản thân hoặc đăng một ảnh mới.
• Sau khi chọn xong cửa sổ xác nhận hiện lên.
• Người dùng nhấn đồng ý để thay ảnh hoặc huỷ bỏ để quay trở lại giao diện
chọn ảnh.
c) Tiền điều kiện
 Người dùng đã đăng nhập vào hệ thống
d) Hậu điều kiện
 Nếu chọn ảnh từ ảnh đã đăng sẵn thì ảnh đại diện sẽ được thay đổi, nếu đăng ảnh
thì ảnh sẽ được đăng và hình đại diện sẽ đổi.
3.3.7. Ca sử dụng bình luận
a) Mơ tả
 Tên ca sử dụng: Bình luận
 Mục đích: Mơ tả cách người dùng đăng bình luận trong các bài viết.
Nguyễn Công Minh - Lớp Khoa học máy tính K61

25


×