• 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
Trang 1MỤC LỤC
Trang 2DANH MỤC HÌNH ẢNH
Trang 3DANH MỤC BẢNG BIỂU
Trang 4MỞ ĐẦ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ườngngà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ểntiế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épchú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àytheo phương thức hoàn toàn mới, kéo theo hàng loạt sự thay đổi về các quan niệm, các tậptụ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ọnghơ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à WorldWide Web nói riêng Các mạng xã hội đang phát triển mạng mẽ và sẽ không quá khi nóirằ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 giatrê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ếtnố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ơinà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ó trongcuộ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ênquan đế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
Trang 5CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI1.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ộtngà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áttriể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 luôn là khía cạnh mạnh mẽ nhất của Internet đó chính là World Wide Webhay Web Từ những ngày đầu chỉ là những những trang chia sẽ văn bản tĩnh khô khan đơnthuầ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 webnà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ôngnghệ ứ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àymỗ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ữngmã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 quacá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ữngcô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ếnthứ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ươngthứ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, …
Trang 61.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 toá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; Xoá/chỉnh sửa bài viết; Bình luận; Chia sẻ; Thích bàiviế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ếnkhá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ạocá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ôngnghệ 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àitoá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
Trang 7CHƯƠ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ácvớ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 muasắ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ặcthiế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ớinhư: Netflix, Facebook, Twitter, Instagram, …
Trang 82.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ựatheo kích cỡ màn hìnhthiết bị truy cập củangười dùng
Trang web tự độngcung cấp 2 phiên bảnkhác nhau về mặt dựatheo thiết bị mà ngườidùng truy cập vào
Điểm khác biệt củaDynamic Serving vớiResponsive là HTMLcủa từng thiết bị nhậnđược sẽ khác nhau
Tuy nhiên URL củatrang web sẽ thay đổi
Đây là hình thức xâydựng 2 trang web riêngbiệt cho Desktop vàmobile Các websitenày sẽ không phụthuộc nhau về nộidung, URL cũng khácnhau
Mô tả Thay đổi để phù hợp
với kích thước mànhình thiết bị truy cậpcủa người dùng
Thay đổi để phù hợpvới kích thước mànhình thiết bị truy cậpcủa người dùng
Thay đổi để phù hợpvới kích thước mànhình thiết bị truy cậpcủa người dùng
Thiết bị Thay đổi về CSS,
không thay đổiHTML
Phục vụ phiên bảnHTML khác nhau tùytheo thiết bị
1 Website cho Desktop
và 1 website chomobile
URL Không thay đổi Không thay đổi Khác nhau cho
Desktop và mobile
Bảo trì Ít tốn kém Cần nhiều nhân lực về
kỹ thuật 2 trang web riêng biệ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ả
Desktop và mobile
Chỉ một nội dung cho cảDesktop và Mobile, cóthể khác nhau tùy theođịnh hướng phát triển
2 website riêng biệt, cóthể giống nhau hoặc riêngcho từng trang tùy theođịnh hướng phát triển
Trang 9Tác động
đến SEO Không ảnh hưởng. Không ảnh hưởng. Chuẩn bị kỹ thuật để đảmbảo không bị trùng lặp
nội dung
Tốc độ
web Phiên bản mobile có thểload chậm hơn Tùy thuộc vào lập trình. Tùy thuộc vào lập trình.
Đặc điểm Tiện lợi, phù hợp với các
website tin tức, nội dungngười dùng chỉ cần đọc làchính
Chi phí thấp, bảo trì dễdàng
Thiết kế web app nhanhchóng, quản lý nội dung
dễ dàng, URL và SEO
Dynamic Serving kháphức tạp và tốn kém hơntrong quá trình xây dựngweb app
Dễ dàng bảo trì, quản lýnội dung, URL và SEO
Đem lại trải nghiệm tốthơn cho các website cónhiều tính năng nhưecommerce
Mang đến trải nghiệmngười tốt nhất trên điệnthoại di động
Tốn nhiều thời gian lậptrình web app
Chi phí thiết kế ứng dụngweb và bảo trì cao hơn
Quá trình quản lý nộidung, URL, SEO cũngphứ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 yê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
Trang 10• 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ầntuyể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ểndụng
• Tự động chuyển đổi toàn bộ thông tin ứng viên sang nhân viên mới vớinhữ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ế toá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
Trang 11• 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 webthườ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ìnhduyệ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ìnhduyệ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ốiInternet để 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 ứngdụ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
Trang 122.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
Đối tượng Đượ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ủangười dùng
Website thường là các trang vớinội dung tĩnh Nội dung của trang
sẽ không đổi với tất cả ngườidùng
Tương tác
người dùng
Người dùng không chỉ xem cácnội dung trong trang mà còntương tác, sử dụng, điều khiểnchúng
Chỉ cung cấp các nội dung hìnhảnh và văn bản để người dùngxem và người dùng sẽ không thểhoặc rất ít có khả năng tương tácvới chúng
Đăng nhập Ứng dụng web cần người dùng
đăng nhập để có thể tối ưu giaodiện và các chức năng dựa theotừng người dùng
Việc đăng nhập là không bắt buộccho các trang thông tin Ngườidùng cũng có thể đăng nhậpnhưng thường sẽ không có tácđộng nhiều đến nội dung củatrang trước và sau đăng nhập
Nhiệm vụ và
độ phức tạp
Ứng dụng web sẽ có các chứcnăng cao và phức tạp hơn so vớiwebsite
Thường sẽ chỉ có chức năng làhiển thị các nội dung nhất định
Những sự thay đổi nhỏ không cầnphải tải lại toàn bộ mà chỉ cần cậpnhậ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ìnhviên khác nhau Framework này được phát triển đầu tiên bởi Rod Johnson và được ban
Trang 13hà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ốtnhấ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ụngtạ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ậptrì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 trongnhữ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ụngJ2EE 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 chongười dùng như: EJB, JMX
• Expression Language: Có khả năng mở rộng từ Expresion Language bêntrong JSP Từ đó, cung cấp các hỗ trợ cho quá trình setting hoặc getting cácgiá 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àocollections, 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ớiAspectJ
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
Trang 14e) Web: Nó hay còn gọi là Spring MVC, đây là một trong những nhóm bao gồm:
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 SpringFramework Đây là một trong những nền tảng được đánh giá bao nhờ có sự vững chắcgiú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 SpringFramework
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ácPOJO hoặc các Spring Bean và bạn có thể hiểu Spring Bean là những đối tượng Javatươ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 SpringFramework Trong một số phiên bản gốc thì EJB người ta thường không nhận thấy sự
Hình 2-2 Kiến trúc của Spring
Trang 15xuấ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.xcũ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 đốitượ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ácinternationalization (ví dụ như các resource bundle), event propagation, resourceloading…
Ngoài ra, Spring Context có khả năng hỗ trợ các tính năng mới của Java như EEhoặc EJB, JMX,… Trong đó, Interface Application Context mới chính là một trong nhữngtrọ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ìnhSpring 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
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áttriển ứng dụng web Kiểu kiến trúc này bao gồm:
Trang 16• 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ànhriê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,
• 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ácview
• 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ểnkhai MVC dựa theo cách truyền thống mà chủ yếu gắn liền với Model-View-ViewModel 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 ứngdụng bên trong URL để có thể bookmark với nhiều công cụ tìm kiếm khác Hầuhế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ùngtrạng thái
• Dependency Injection: AngularJS có sẵn dependency injection hỗ trợ bạn tạo ra
Trang 17cá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 đơngiả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ấutrú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ữ trongmộ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 DatabaseManagement 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) theohì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 đượccho 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ớinhiề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ệuquan 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ìnhbiên dịch trước
Trang 18• 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 toá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ăngtốc độ truy xuất dữ liệu như là chia tải database này ra nhiều server, hoặc tạo cacheMySQL
Trang 19CHƯƠNG 3 PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU3.1 Mô tả bài toán và đặc tả yê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ệ ngoài đời thực trên Internet khôngphâ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ớinhau để 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ệcxá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ó Quatì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 đã đăngnhậ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ăngchí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ùngtham 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 yê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ẻ
Trang 20• 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 nguyên, cài đặt nhóm
• Xoá 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 đánhgiá một trang web Như vậy ngoài việc có các chức năng tốt đáp ứng nhu cầu của ngườidù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 hoá 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 toá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ứ banhư 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
• Xoá bài viết: Chức năng này cho phép người dùng có thể xoá 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ể xoá bài củacá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
Trang 21hoặ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
• Xoá bình luận: Chức năng này cho phép người dùng xoá bình luận của bản thân
hoặc cho phép quản trị viên xoá 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àiviế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 yê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
Trang 22• 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
• 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ếuthô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ợplệ
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
Trang 23 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 đã đượcchấ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: Yêu cầu gia nhập nhóm
Mục đích: Mô tả người dùng gửi yê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 yê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ómcũng như có thể đăng bài, bình luận, like các bài viết trong nhóm
Trang 243.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ùngcầ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 đăngthì sẽ có thông báo có bài đăng mới được gửi đến
3.3.5 Ca sử dụng xoá bài viết.
a) Mô tả
Tên ca sử dụng: Xoá bài viết
Mục đích: Mô tả quá trình xoá 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 xoá
• 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 xoá bài viết trong đó
• Người dùng nhấn nút xoá bài đăng để xoá bài
c) Tiền điều kiện
Trang 25 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àiviế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
• 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ệnchọ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 ảnhthì ảnh sẽ được đăng và hình đại diện sẽ đổi
Trang 26• Người dùng nhấn vào ô bình luận trong bài đăng.
• Người dùng nhấn Enter hoặc nút gửi để gửi bình luận
c) Tiền điều kiện
Người dùng đã đăng nhâp, bài đăng có mở chức năng bình luận
d) Hậu điều kiện
Bình luận sẽ được hiển thị trong mục bình luận của bài đăng Những người theodõi bài đăng sẽ nhận được thông báo có bình luận mới trong bài đăng
• Cửa sổ tin nhắn sẽ hiện lên
• Người dùng nhập dữ liệu trong input tương ứng và nhấn Enter hoặc nút gửi đểgửi tin nhắn
c) Tiền điều kiện
Người dùng đã đăng nhập
Không bị người cần nhắn chặn
Là đối tượng nằm trong nhóm có thể nhắn tin với người cần nhắn
Trang 27d) Hậu điều kiện
Tin nhắn sẽ được gửi và người cần nhắn sẽ nhận được thông báo có tin nhắn mới
Không có nội dung nào phù hợp với thông tin mà người dùng nhập vào
Hiện lên thông báo không có bài viết liên quan
Người dùng có thể tìm kiếm lại hoặc thoát
c) Tiền điều kiện
Người dùng đã đăng nhập
d) Hậu điều kiện
Người dùng có thể chọn và xem mục đã tìm kiếm
3.4 Xây dựng biểu đồ ca sử dụng
3.4.1 Biểu đồ ca sử dụng mức tổng quát
Trang 283.4.2 Biểu đồ ca sử dụng cho gói người dùng
Hình 3-3 Biểu đồ UC tổng quát
Hình 3-4 Biểu đồ ca sử dụng gói người dùng
Trang 293.4.3 Biểu đồ ca sử dụng gói quản trị nhóm
3.4.4 Biểu đồ ca sử dụng gói Quản lý trang cá nhân
Hình 3-5 Biểu đồ UC gói quản trị nhóm
Trang 303.4.5 Biểu đồ ca sử dụng gói quản trị bình luận
Hình 3-6 Biểu đồ UC gói Quản lý trang cá nhân
Hình 3-7 Biểu đồ UC quản trị bình luận
Trang 323.4.9 Biểu đồ ca sử dụng yêu cầu tham gia nhóm
Hình 3-11 Biều đồ UC yêu cầu tham gia nhóm
Trang 333.5 Biểu đồ tuần tự cho các ca sử dụng
3.5.1 Biểu đồ tuần tự UC Đăng nhập
Hình 3-12 Biểu đồ tuần tự cho UC đăng nhập
Trang 343.5.2 Biểu đồ tuần tự UC Kết bạn
Hình 3-13 Biểu đồ tuần tự cho UC kết bạn
Trang 353.5.3 Biểu đồ tuần tự UC Yêu cầu gia nhập nhóm
Hình 3-14 Biểu đồ tuần tự cho UC yêu cầu gia nhập nhóm
Trang 363.5.4 Biểu đồ tuần tự UC Đăng bài
Hình 3-15 Biểu đồ tuần tự cho UC đăng bài