CHƯƠNG 3 : PHÂN TÍCH & THIẾT KẾ HỆ THỐNG
3.4. Thiết kế chức năng
3.4.1. Các sơ đồ UML của hệ thống CNE
3.4.1.1.- Sơ đồ UseCase
- Hình 3.3 - Sơ đồ UseCase.
-Mục tiêu của dự án là xây dựng hệ thống CNE bao gồm các chức năng sau: 1. Tải cơ sở dữ liệu từ OrientDb vào Apache Spark.
2. Biểu diễn trực quan đồ thị.
3. Tính PageRank cho các đỉnh trên đồ thị.
loadGraph getMaxRanks íindConnectedComponent íindPropagation powered by Astah§5 visualizeGraph calculatePageRank getlnformation User -
4. Tìm tầm ảnh hưởng của một bài báo. 5. Tìm bài báo có tầm ảnh hưởng nhiều nhất. 6. Tìm thành phần liên thơng chứa một bài báo. 7. Xác định độ lan tỏa của một bài báo theo thời gian.
-Từ mục tiêu trên, sơ đồ UseCase, là sơ đồ mô tả các chức năng của hệ thống, được
thiết kế như Hình 3.3 gồm 1 actor User và 7 chức năng.
-Bảng 3.3 mô tả các chức năng trong sơ đồ UseCase.
- Bảng 3.3 - Bảng mô tả các chức năng trong sơ đồ UseCase.
- STT - Chức năng - Mô tả - T rang - 1
- loadGraph - Đọc cơ sở dữ liệu đồ thị từ OrientDb,
chuyển thành đồ thị GraphX trong hệ thống Apache Spark.
- 4
8
-
2 - visualizeGraph - Biểu diễn trực quan đồ thị. 9
-
3
- calculatePageRank - Tính PageRank cho từng đỉnh
trên đồ thị. - 4 9 - 4
- getInformation - Lấy thông tin của bài báo khi cung
cấp id của bài báo.
- 4
9
-
5 - getMaxRanks - Lấy danh sách các bài báo có PageRank cao nhất. - 5 0 - 6 - findConnectedCo mponent - Tìm thành phần liên thông trong đồ
thị chứa một bài báo và biểu diễn trực
- 5
0
-
7
- findPropagation - Tìm sự lan tỏa của bài báo
theo thời
gian và biểu diễn trực quan nó.
- 5
0
- Dưới đây là mô tả chi tiết của các chức năng trong sơ đồ UseCase.
-
1. Chức năng loadGraph
-Chức năng loadGraph đọc cơ sở dữ liệu đồ thị từ OrientDb, chuyển thành đồ thị GraphX trong hệ thống Apache Spark. Đây là chức năng cơ bản nhất của hệ thống vì khi
-có đồ thị GraphX thì mới có thể tận dụng được sức mạnh của GraphX API và Apache
Spark để thực hiện các chức năng phân tích khác.
-Do đồ thị trong dự án này là rất lớn nên việc đọc cơ sở dữ liệu đồ thị từ OrientDb và chuyển thành đồ thị GraphX mất nhiều thời gian. Để tiết kiệm thời gian, đồ thị GraphX sẽ được cache, bằng hệ thống cache của Apache Spark, cho những xử lý sau đó. Đồ thị GraphX được cache sẽ bị thay thế khi thực hiện lại chức năng loadGraph.
2. Chức năng visualizeGraph
-Chức năng visualizeGraph thực hiện việc biểu diễn trực quan đồ thị. Khi biểu diễn trực quan đồ thị, Web Server đọc đồ thị GraphX được cache, chuyển thành định dạng JSON theo qui định của VisJs, chuyển kết quả JSON về máy Client, máy Client dùng JavaScript kết hợp với thư viện VisJs để biểu diễn trực quan đồ thị.
-Do máy Client cần phải lưu đồ thị vào bộ nhớ để thực hiện việc biểu diễn trực quan đồ thị. Khi đồ thị quá lớn sẽ vượt quá khả năng xử lý của máy Client. Lúc đó có thể giới hạn phạm vi của đồ thị cần biểu diễn trực quan bằng: số thành phần liên thông, độ sâu và số đỉnh tối đa của mỗi thành phần liên thông.
3. Chức năng calculatePageRank
-Chức năng calculatePageRank thực hiện việc tính PageRank cho từng đỉnh trên đồ thị. Sau khi thực hiện chức năng này thì mỗi đỉnh của đồ thị sẽ được gán một giá trị PageRank cho biết tầm quan trọng của đỉnh đó.
4. Chức năng getInformation
-Chức năng getInformation lấy thông tin của bài báo khi cung cấp id của bài báo. Thông tin của bài báo bao gồm:
- Id của bài báo.
- Tên bài báo.
- Danh sách các tác giả.
- Năm cơng bố.
- Tóm lược nội dung bài báo.
- PageRank của bài báo.
- Bậc trong của bài báo.
- Bậc ngoài của bài báo.
- Bậc của bài báo.
5. Chức năng getMaxRanks
-Chức năng getMaxRanks phân tích đồ thị và trả về danh sách các bài báo có PageRank cao nhất. Trước khi thực hiện chức năng này cần phải thực hiện chức năng
calculatePageRank để tính PageRank cho các đỉnh trên đồ thị. 6. Chức năng findConnectedComponent
-Chức năng íindConnectedComponent tìm thành phần liên thơng trong đồ thị chứa một bài báo và biểu diễn trực quan nó. Chức năng này cần biết id của bài báo và trả về đồ thị con là thành phần liên thông chứa bài báo.
-Một thành phần liên thơng cũng có thể rất lớn, vượt quá khả năng xử lý của máy Client. Vì vậy, có thể giới hạn phạm vi của thành phần liên thông cần biểu diễn trực quan bằng độ sâu và số đỉnh tối đa của thành phần liên thông.
7. Chức năng íindPropagation
-Chức năng íindPropagation tìm sự lan tỏa của bài báo theo thời gian và biểu diễn trực quan nó. Chức năng này cần biết id của bài báo, hướng lan tỏa, số năm lan tỏa và trả về đồ thị con là thành phần liên thông chứa bài báo và thể hiện sự lan tỏa của bài báo.
-Có 3 hướng lan tỏa:
- In: tìm sự lan tỏa từ bài báo được chỉ định bởi id theo hướng In. Tức là tìm
những bài báo tham khảo bài báo được chỉ định bởi id một cách trực tiếp hoặc gián tiếp.
- tìm những bài báo mà bài báo được chỉ định bởi id tham khảo đến
một cách
trực tiếp hoặc gián tiếp.
- - Both: tìm sự lan tỏa từ bài báo được chỉ định bởi id theo cả hai hướng In
và Out.
-Một thành phần liên thơng cũng có thể rất lớn, vượt q khả năng xử lý của máy Client. Vì vậy, có thể giới hạn phạm vi của thành phần liên thông cần biểu diễn trực quan bằng độ sâu và số đỉnh tối đa của thành phần liên thơng.
3.4.I.2. Sơ đồ Class
-
-
- Hình 3.4 — Sơ đồ Class của hệ thống CNE.
-Sơ đồ Class dùng để mô tả các lớp trong hệ thống và mối quan hệ của chúng. Sơ đồ Class của hệ thống CNE, như trong Hình 3.4, gồm có 4 lớp: Index, TasksController,
Grapher và OrientDb. Bộ 3 lớp Grapher - Index - TasksController dùng để hiện thực
1. Lớp Index
-Lớp Index là Boundary Class, cung cấp giao diện cho người sử dụng. Lớp Index nhận yêu cầu từ người sử dụng và chuyển yêu cầu cho lớp TasksController xử lý.
2. Lớp TasksController
-Lớp TasksController là Controller Class, nhận yêu cầu từ lớp Index, chuyển yêu cầu cho lớp Grapher xử lý, thu gom kết quả và gửi kết quả về cho lớp Index.
3. Lớp Grapher
-Lớp Grapher cung cấp những chức năng xử lý chính của ứng dụng. Lớp này nhận yêu cầu từ lớp TasksController để xử lý. Nó sẽ tương tác với lớp OrientDb khi cần thiết.
4. Lớp OrientDb
-Lớp OrientDb cung cấp các chức năng truy cập vào cơ sở dữ liệu OrientDb và cung cấp dữ liệu cho lớp Grapher.
3.4.1.3. Sơ đồ Sequence
-Sơ đồ Sequence dùng để mô tả sự tương tác giữa các đối tượng trong hệ thống, thông qua việc trao đổi thông điệp (message)13 theo trình tự thời gian, để thực hiện một chức năng. Sau đây là sơ đồ Sequence của các chức năng trong hệ thống CNE.
1. Chức năng loadGraph
-Chức năng loadGraph đọc cơ sở dữ liệu đồ thị từ OrientDb, chuyển thành đồ thị GraphX trong hệ thống Apache Spark. Sơ đồ Sequence trong Hình 3.5 mơ tả sự tương tác giữa các đối tượng để thực hiện chức năng loadGraph như sau:
1. User gọi phương thức loadGraph() của đối tượng :Index.
2. Đối tượng :Index gọi phương thức loadGraph() của đối tượng :TasksController.
3. Đối tượng :TasksController gọi phương thức loadGraph() của đối tượng
- :Grapher.
4. Đối tượng :Grapher gọi phương thức loadGraph() của đối tượng :OrientDb để đọc cơ sở dữ liệu đồ thị từ OrientDb Server và chuyển thành đồ thị GraphX. 5. Đối tượng :Grapher gọi phương thức cacheGraph() của chính nó để cache đồ
thị GraphX.
-
-
- Hình 3.5 - Sơ đồ Squence của chức năng loadGraph. 2. Chức năng visualizeGraph
-Chức năng visualizeGraph thực hiện việc biểu diễn trực quan đồ thị. Sơ đồ Sequence trong Hình 3.6 mơ tả sự tương tác giữa các đối tượng để thực hiện chức năng
visualizeGraph như sau:
1. User gọi phương thức visualizeGraph() của đối tượng :Index.
2. Đối tượng :Index gọi phương thức getGraph() của đối tượng :TasksController. 3. Đối tượng :TasksController gọi phương thức getGraph() của đối tượng
:Grapher để lấy tham chiếu của đồ thị GraphX đã được cache.
4. Đối tượng :Index gọi phương thức draw() của chính nó để biểu diễn trực quan đồ thị.
-
-
- Hình 3.6 - Sơ đồ Squence của chức năng visualizeGraph. 3. Chức năng calculatePageRank
-Chức năng calculatePageRank thực hiện việc tính PageRank cho từng đỉnh trên đồ thị. Sơ đồ Sequence trong Hình 3.7 mơ tả sự tương tác giữa các đối tượng để thực hiện chức năng calculatePageRank như sau:
1. User gọi phương thức calculatePageRank() của đối tượng :Index. 2. Đối tượng :Index gọi phương thức calculatePageRank() của đối tượng
:TasksController.
3. Đối tượng :TasksController gọi phương thức calculatePageRank() của đối tượng :Grapher để tính PageRank cho từng đỉnh trên đồ thị được cache. 4. Đối tượng :Grapher gọi phương thức cacheGraph() của chính nó để cache đồ
-
-
- Hình 3.7- Sơ đồ Squence của chức năng calculatePageRank. 4. Chức năng getInformation
-Chức năng getInformation lấy thông tin của bài báo khi cung cấp id của bài báo. Sơ đồ Sequence trong Hình 3.8 mơ tả sự tương tác giữa các đối tượng để thực hiện chức năng getInformation như sau:
1. User gọi phương thức getInformation() của đối tượng :Index.
2. Đối tượng :Index gọi phương thức getInformation() của đối tượng :TasksController.
3. Đối tượng :TasksController gọi phương thức getInformation() của đối tượng :Grapher.
4. Đối tượng :TasksController gọi phương thức getInformation() của đối tượng :OrientDb để lấy thông tin bài báo từ cơ sở dữ liệu.
5. Đối tượng :Index gọi phương thức show() của chính nó để hiển thị thơng tin
-
-Hình 3.8 - Sơ đồ Squence của chức năng getInformation.
--
- 5. Chức năng getMaxRanks
-
-
- Hình 3.9 — Sơ đồ Squence của chức năng getMaxRanks.
-Chức năng getMaxRanks phân tích đồ thị và trả về danh sách các bài báo có PageRank cao nhất. Sơ đồ Sequence trong Hình 3.9 mơ tả sự tương tác giữa các đối tượng để thực hiện chức năng getMaxRanks như sau:
1. User gọi phương thức getMaxRanks() của đối tượng :Index. 2. Đối tượng :Index gọi phương thức getMaxRanks() của đối tượng
:TasksController.
3. Đối tượng :TasksController gọi phương thức getMaxRanks() của đối tượng :Grapher để phân tích đồ thị và trả về danh sách các bài báo có PageRank cao nhất.
4. Đối tượng :Index gọi phương thức show() của chính nó để hiển thị danh sách các bài báo có PageRank cao nhất.
6. Chức năng findConnectedComponent
-Chức năng íindConnectedComponent tìm thành phần liên thơng trong đồ thị chứa một bài báo và biểu diễn trực quan nó. Chức năng này cần biết:
- id: là id của bài báo cần tìm thành phần liên thơng chứa nó.
- depth: độ sâu của thành phần liên thơng tính từ bài báo được nhận diện
bằng id.
- limit: số đỉnh tối đa của thành phần liên thơng.
-
-
-Hình 3.10 - Sơ đồ Squence của ch ức năng findConnectedComponents.
-Sơ đồ Sequence trong Hình 3.10 mô tả sự tương tác giữa các đối tượng để thực hiện chức năng íindConnectedComponent như sau:
1. User gọi phương thức findConnectedComponent() của đối tượng :Index. 2. Đối tượng :Index gọi phương thức íindConnectedComponent () của đối tượng
:TasksController.
3. Đối tượng : TasksController gọi phương thức íindConnectedComponent () của
đối tượng :Grapher để tìm thành phần liên thông chứa bài báo.
4. Đối tượng :Index gọi phương thức draw() của chính nó để biểu diễn trực quan
thành phần liên thơng tìm được.
7. Chức năng findPropagation
-Chức năng íindPropagation tìm sự lan tỏa của bài báo theo thời gian. Sự lan tỏa của một bài báo được thể hiện bằng thành phần liên thông chứa bài báo và thể hiện sự lan tỏa của bài báo. Chức năng này cần biết:
- id: là id của bài báo cần tìm sự lan tỏa.
- Direction: hướng lan tỏa, có thể là: In, Out, Both.
- years: số năm lan tỏa.
-
-
- Hình 3.11 — Sơ đồ Squence của chức năng findPropagation.
-Sơ đồ Sequence trong Hình 3.11 mơ tả sự tương tác giữa các đối tượng để thực
1. User gọi phương thức findPropagation() của đối tượng :Index.
2. Đối tượng :Index gọi phương thức findPropagation() của đối tượng :TasksController.
3. Đối tượng :TasksController gọi phương thức findPropagation() của đối tượng :Grapher để tìm sự lan tỏa của bài báo.
4. Đối tượng :Index gọi phương thức draw() của chính nó để biểu diễn trực quan thành phần liên thông thể hiện sự lan tỏa của bài báo.
- 3.4.I.4. Sơ đồ Package
-
-
- Hình 3.12 - Sơ đồ Package.
-Sơ đồ Package dùng để mô tả các package trong hệ thống và mối quan hệ của chúng. Sơ đồ Package của hệ thống CNE, như trong Hình 3.12, gồm 3 package: views,
-TasksController, package pht.graph chứa 2 lớp Grapher và OrientDb.
3.4.I.5. Sơ đồ Component
-Sơ đồ Component mô tả các component14 có trong hệ thống và mối quan hệ của chúng. Sơ đồ Component của hệ thống CNE gồm 5 component như Hình 3.13. Component thứ nhất tượng trưng cho Browser. Component thứ hai, web, chứa 2 lớp Index và TasksController. Component thứ ba, phtlib.jar, chứa 2 lớp Grapher và OrientDb. Component thứ tư tượng trưng cho Spark API15. Component thứ năm tượng trưng cho OrientDb API16.
-
-
- Hình 3.13 - Sơ đồ Component.
-Browser tương tác với component web, component web tương tác với component phtlib.jar, và cuối cùng component phtlib.jar tương tác với Spark API và OrientDb API.
3.4.1.6. Sơ đồ Deployment
-Sơ đồ Deployment trình bày cách triển khai hệ thống. Để triển khai hệ thống cần
14Component là một thành phần dùng để cấu thành hệ thống. Một component có thể bao gồm một hoặc nhiều lớp.
15Để có Spark API cần cài đặt Apache Spark. 16Để có OrientDb API cần cài đặt OrientDb Server.
-4 node17: Client, Web Server, Apache Spark Cluster và OrientDb
Server Cluster.
Node Client là máy tính cài Browser. Node Web Server cài component
web, phtlib.jar và
Spark API. Node Apache Spark Cluster là cụm máy tính cài Spark API.
Node OrientDb
Server Cluster là cụm máy tính cài OrientDb API. Khi cần mở rộng hệ
thống có thể gắn
thêm nhiều máy vào Apache Spark Cluster, gắn thêm nhiều máy vào
OrientDb Server
Cluster, thậm chí nhiều máy Web Server. Khi cần nhiều người sử dụng
có thể gắn thêm
nhiều máy tính Client. Tuy nhiên, có thể dùng một máy tính để triển
khai hệ thống với
mục đích nghiên cứu.
-
-
- Hình 3.14 — Sơ đồ Deployment.
-Các máy tính trong hệ thống đều quan trọng vì đều ảnh hưởng đến hiệu quả xử lý của hệ thống. Trong đó, các máy trong Apache Spark Cluster là quan trọng nhất, đóng vai trị quyết định tính hiệu quả của hệ thống vì các xử lý đồ thị lớn, chuyên sâu và phức tạp xảy ra trên các máy này, và đây cũng là các máy tính cần cấu hình cao và nhiều bộ nhớ nhất trong hệ thống. Hơn nữa, Apache Spark Cluster lưu các kết quả trung gian trong quá trình xử lý ngay trong bộ nhớ, hạn chế sử dụng đĩa cứng, để tăng tốc độ xử lý; vì vậy