ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN NGỌC ĐỊNH
HỆ THỐNG LỌC VÀ SẮP XẾP TIN TỨC
THEO NGỮ CẢNH NGƯỜI DÙNG
LUẬN VĂN THẠC SĨ
Hà Nội - 2008
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN NGỌC ĐỊNH
HỆ THỐNG LỌC VÀ SẮP XẾP TIN TỨC
THEO NGỮ CẢNH NGƯỜI DÙNG
Ngành: Công nghệ thông tin
Mã số: 1.01.10
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. NGUYỄN VIỆT HÀ
Hà Nội - 2008
MỤC LỤC
MỞ ĐẦU.....................................................................................................................................1
CHƯƠNG 1.KHÁI NIỆM VỀ AGENT.....................................................................................3
1.1.Agent là gì?...........................................................................................................................3
1.2.Phân loại agent......................................................................................................................5
1.2.1.Phân loại agent theo độ thông minh...................................................................................5
1.2.2.Phân loại agent theo tính di động ......................................................................................5
1.2.3.Phân loại theo khả năng giao tiếp và cộng tác...................................................................6
1.3.Phân loại hệ thống agent.......................................................................................................7
1.3.1.Phân loại hệ thống theo số lượng agent.............................................................................7
1.3.2.Phân loại hệ thống theo số lượng nơi cư trú (môi trường).................................................7
CHƯƠNG 2.CÔNG NGHỆ PHẦN MỀM HƯỚNG AGENT...................................................8
2.1.Cách tiếp cận hướng agent trong công nghệ phần mềm.......................................................8
2.1.1.Phân chia hướng agent.....................................................................................................10
2.1.2.Trừu tượng hóa hướng agent............................................................................................11
2.1.3. Sự cần thiết cho việc quản lý linh hoạt sự thay đổi của cấu trúc tổ chức.......................11
2.2.So sánh hướng agent với hướng đối tượng và phần mềm đóng gói....................................12
2.3.Vòng đời phát triển của phần mềm hướng agent................................................................13
2.3.1.Mô hình hóa hệ thống agent.............................................................................................13
2.3.2.Phân tích thiết kế..............................................................................................................14
2.3.3.Kiểm thử...........................................................................................................................15
CHƯƠNG 3.PHƯƠNG PHÁP THIẾT KẾ & PHÁT TRIỂN
HỆ THỐNG ĐA AGENT PASSI...............17
3.1.1.Giới thiệu về PASSI.........................................................................................................17
3.2.Mô tả yêu cầu......................................................................................................................18
3.3.Xác định các agent..............................................................................................................18
3.4.Xác định vai trò...................................................................................................................19
3.5.Xác định các tác vụ.............................................................................................................19
3.6.Mô tả Ontology - Ontology Description.............................................................................21
3.7.Định nghĩa cấu trúc đa agent...............................................................................................30
3.8.Định nghĩa cấu trúc của từng agent.....................................................................................31
3.9.Mô tả các hành vi trong hệ thống đa agent.........................................................................31
3.10.Mô hình mã chương trình - Code Model..........................................................................32
3.11.Mô hình triển khai Deployment Model.............................................................................32
CHƯƠNG 4.XÂY DỰNG HỆ THỐNG LỌC VÀ SẮP XẾP TIN TỨC
THEO NGỮ CẢNH NGƯỜI DÙNG......33
4.1.Mô tả bài toán.....................................................................................................................33
4.1.1.Các Use Case hệ thống.....................................................................................................34
4.1.2.Xác định các Agent..........................................................................................................37
4.1.3.Xác định vai trò của các agent.........................................................................................38
4.1.4.Xác định các tác vụ của các agent....................................................................................41
4.2.Mô hình xã hội các agent....................................................................................................43
4.2.1.Mô tả Ontology lĩnh vực..................................................................................................43
4.2.2.Mô tả Ontology truyền thông...........................................................................................46
4.3.Mô hình thực thi các agent..................................................................................................47
4.3.1.Các trúc các agent (đa agent)...........................................................................................47
4.3.2.Định nghĩa cấu trúc từng agent........................................................................................48
4.4.Cài đặt và triển khai............................................................................................................50
4.5.Một số giao diện..................................................................................................................50
4.6.Thử nghiệm và đánh giá......................................................................................................51
KẾT LUẬN ..............................................................................................................................52
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt
Cụm từ viết đầy đủ
ACL
Agent Communication Language
AI
Artificial Intelligence
AORML
Agent - Object - Relationship Modeling Language
AUML
Agent UML
COD
Communication Ontology Description
DOD
Domain Ontology Description
FIPA
Foundation for Intelligence Physical Agent
HTML
HyperText Markup Language
HTTP
Hypertext Transfer Protocol
JADE
Java Agent DEvelopment framework
LAN
Local Area Network
LORA
Logic Of Rational Agents
PASSI
Process for Agent Societies Specification and Implementation
RDF
Resource Description Framework
REV
Remote Evaluation
RPC
Remote Procedure Call
UML
Unified Modeling Language
WAN
Wide Area Network
1
MỞ ĐẦU
Hiện nay với sự phát triển các kênh thông tin trên Internet, số lượng tin tức hàng ngày
rất nhiều và phong phú. Người dùng thường mất rất nhiều thời gian để lướt qua các
kênh thông tin này để thu lượm những thông tin về các lĩnh vực mình quan tâm mà
thông thường thì lượng thông tin này thường chiếm một phần nhỏ trong lượng tin tức
được xuất bản mỗi ngày. Thực tiễn đề ra yêu cầu có hệ thống tự động thu thập các tin
tức (báo chí) trên Internet, sắp xếp chúng sao cho người dùng có thể tiếp cận được
thông tin mình quan tâm. Đó là một hệ thống có tính thông minh:
+Có khả năng học hỏi (học để biết thông tin nào là gần với sở thích người
dùng)
+Có khả năng phản ứng với môi trường (tự động nhận biết khi có thông tin
mới, thông báo với người dùng nếu có thông tin mà người dùng quan tâm)
+Có khả năng đáp ứng cho nhiều người dùng trên hệ thống.
+Có khả năng dễ nâng cấp hệ thống về chất lượng cũng như về khả năng đáp
ứng của hệ thống.
Với bài toán trên hệ thống là một tập hợp các vấn đề:
+Thu thập tin tức
+Trích trọn thông tin
+Phân loại thông tin
+Quản lý thông tin về người dùng
Về tổng thể, đây là một bài toán phức tạp khi kết hợp nhiều các yêu cầu khác nhau với
nhiều rằng buộc giữa các yêu cầu. Việc chia nhỏ các vấn đề sẽ giúp ta giải quyết bài
toán một cách đơn giản hơn rất nhiều. Và chia để trị cũng là tư tưởng của phát triển
phần mềm hướng agent. Với khả năng phân chia không gian vấn đề và tổ chức tốt các
mối quan hệ phụ thuộc cũng như các tương tác trong một hệ thống phức tạp mà Công
nghệ phần mềm hướng agent là một cách tiếp cận mới cho các hệ thống phức tạp và đó
cũng là lý do mà tôi đã chọn hướng agent để giải quyết bài toán này.
2
Agent là một cách tiếp cận mới với các đặc điểm: phân tán, tự trị, thông minh, hoạt
động tin cậy, thông minh… có thể đáp ứng được những yêu cầu ngày càng phức tạp
của các hệ thống phần mềm hiện đại. Theo tư tưởng của công nghệ phần mềm hướng
agent, hệ thống phần mềm như một tập các agent, mỗi agent có tính thông minh, tự trị,
tương tác, di động và có mục tiêu hoạt động cụ thể.
Sự phát triển của công nghệ agent đang đặt ra một tương lai hứa hẹn cho việc phát
triển ngành công nghệ phần mềm ngày một tốt hơn. Công nghệ agent sẽ ngày càng góp
phần nhiều hơn nữa trong công nghiệp phần mềm của thế giới nói chung và của nước
ta nói riêng.
Mục đích của luận văn này là việc xây dựng hệ thống phát triển hệ thống lọc và sắp
xếp tin tức theo ngữ cảnh người dùng đáp ứng các khả năng thu thập nội dung các
bài viết trên các website tin tức tiếng Việt trên Internet và sắp xếp kết quả hiển thị thứ
tự các bài viết theo sở thích thói quen của người dùng dựa trên việc ứng dụng công
nghệ Agent.
Cấu trúc các phần còn lại của luận văn như sau:
Chương 1 trình bày các kiến thức cơ sở về tác tử (agent), chương 2 đi sâu vào công
nghệ phần mềm hướng agent.
Chương 3 trình bày phương pháp thiết kế và phát triển hệ thống đa agent PASSI Process for Agent Societies Specification and Implementation [1].
Chương 4 trình bày Hệ thống phát triển hệ thống lọc và sắp xếp tin tức theo ngữ
cảnh người dùng được thiết kế sử dụng phương pháp PASSI.
3
CHƯƠNG 1
KHÁI NIỆM VỀ AGENT
1.1 Agent là gì?
Hiện nay thuật ngữ agent được sử dụng rất nhiều trong lĩnh vực thông tin như Mobile
Agent - thuật ngữ chỉ phân mềm có khả năng di chuyển giữa các nền tảng khác nhau,
User- Agent sử dụng trong giao thức HTTP để xác định thông tin trình duyệt… Vậy
agent là gì?
Hiện nay một số định nghĩa được đề xuất, trong đó nổi bật là định nghĩa của hai tác giả
Wooldridge và Jennings đưa ra năm 1995. Định nghĩa đó như sau[2]:
Một phần cứng hoặc (phần nhiều là) hệ thống phần mềm có các thuộc tính sau:
• Sự tự trị: Các agent hoạt động mà không cần sự can thiệp trực tiếp của con
người hoặc các agent khác và có một số điều khiển thông qua các hành động
và trạng thái nội tại của chúng;
• Khả năng xã hội: Các agents tương tác với các agent khác (và có thể cả con
người) thông qua một vài loại ngôn ngữ giao tiếp của agent;
• Khả năng phản ứng: Các agent nhận thức được môi trường xung quanh chúng,
(nó có thể là thế giới thực, là người dùng thông qua giao diện sử dụng của họ,
hoặc một tập các agent khác, Internet hoặc có thể là tất cả các sự kết hợp trên),
và phản ứng đúng lúc nhằm thay đổi bản thân chúng.
• Tính tích cực: Các agent không chỉ đơn giản hành động phản hồi lại môi
trường mà chúng còn có khả năng thực hiện những hành vi một cách chủ động.
Một định nghĩa gần đây hơn Wooldridge đề xuất năm 2002:
Một agent là một hệ thống máy tính mà nó cư trú trong một vài môi trường và nó có
khả năng hoạt động một cách độc lập trong môi trường đó đúng với mục tiêu thiết kế
Theo định nghĩa trên agent là:
•
Các thực thể giải quyết vấn đề có thể nhận biết một cách rõ ràng với ranh giới
và giao diện rõ ràng.
4
•
Được đặt (nhúng) trong môi trường cụ thể - chúng nhận các đầu vào liên quan
đến các trạng thái của môi trường thông qua các bộ cảm biến của chúng và hành
động tác động lại môi trường thông qua các bộ phản ứng. Được thiết kế để đáp
ứng vai trò nhất định - chúng có mục tiêu cụ thể để hoàn thành, nó có thể hoàn
toàn độc lập với các agent khác.
•
Tự trị - chúng điều khiển thông qua các trạng thái và các hành vi của chúng.
•
Khả năng đưa ra hành vi giải quyết vấn đề (phụ thuộc ngữ cảnh) - chúng cần
phải phản ứng lại những thay đổi diễn trong môi trường trong thời gian cho
phép để thỏa mãn mục tiêu thiết kế và có khả năng xây dựng các mục tiêu mới
và thực hiện nhằm hoàn thành mục tiêu của nó [3]
Định nghĩa thuật ngữ agent thường có xu hướng theo cái của mục đích của người định
nghĩa và theo loại agent mà họ quyết định thiết kế. “Ranh giới của một agent có nghĩa
là một công cụ cho việc phân tích các hệ thống, không có một mô tả chính xác nào có
thể phân chia được thế nào là agent thế nào là không phải agent” (Russell - 1995).
Điều đó có nghĩa là không có thể định nghĩa một cách toàn vẹn cho đáp ứng mọi khía
cạnh, mọi lĩnh vực. Mặc dù vậy chúng ta vẫn có thể trích ra một số thuộc tính mà các
agent bộc lộ:
• Sự tự trị (autonomy): Các agent hành động mà không cần sự can thiệp của con
người và các agent khác.
• Sự tồn tại (situated): Các agent được nằm trong môi trường thực hoặc môi
trường ảo.
• Khả năng phản ứng (reactivity): Các agent có khả năng nhận thức môi trường
và hành động trong môi trường đó.
• Tính chủ động (pro - activity): Các agent không chỉ đơn giản hành động phản
hồi lại môi trường mà chúng có khả năng định ra mục tiêu và lập kế hoạch để
đạt được các mục tiêu của chúng
• Khả năng về xã hội (social ability): Các agent tương tác với các agent khác,
đôi khi với cả con người thông qua một số ngôn ngữ agent.
• Sự thông minh (intelligent): Các agent có khả năng hoàn thiện tri thức
• Tính tổ chức (organized): Các agent được tổ chức theo cấu trúc giống với xã
hội con người hoặc xã hội sinh thái
• Tính di động (mobile): Các agent có khả năng di chuyển từ nơi này sang nơi
khác. Di chuyển ở đây có nghĩa là di chuyển cả mã thực thi và các trạng thái
theo agent
5
1.2 Phân loại agent
Dựa trên các tiêu chí chính, tác giả tạm phân các agent thành 3 phân loại chính: Độ
thông minh, tính di động và khả năng cộng tác và giao tiếp
1.2.1 Phân loại agent theo độ thông minh
Một agent phải có độ thông minh nhất định. Sự thông minh là một trong những đặc
tính của agent. Độ thông minh ở đây được thể hiện ở khả năng agent đó giải quyết một
cách công việc theo mục tiêu cụ thể một cách cách độc lập thông qua việc tự điều
khiển các hành vi của mình, giao tiếp với các agent khác và khả năng học. Một agent
càng thông minh nếu nó có thể thực hiện công việc càng ít sự can thiệp của người
dùng.
Khả giao tiếp
Khả năng học
Các agent
thông minh
Khả tự trị
Hình 1: Agent thông minh theo phân loại của Nwana
Ví dụ: Một agent mua sản phẩm có thể tự động giao tìm kiếm thông tin về sản phẩm,
giao tiếp với các agent bán để thỏa thuận giá cả, và quyết định mua sản phẩm sao cho
giá cả là thấp nhất.
1.2.2 Phân loại agent theo tính di động
Các agent được phân làm 2 loại mức: Agent có khả năng di động và agent không có
khả năng di động.
Agent không có khả năng di động là agent chỉ có khả năng thực hiện trong môi trường
nó được tạo ra.
Các agent có khả năng di chuyển (di động) từ môi trường này sang môi trường khác.
Khả năng di động của agent được phân làm 2 loại: [4]
6
• Di động mạnh (strong mobility): Khả năng hệ thống có thể di chuyển cả mã
chương trình và trạng thái thi hành của agent từ môi trường này sang môi
trường khác.
• Di động yếu (weak mobility): Là khả năng của hệ thống chỉ có thể di chuyển
mã chương trình giữa các môi trường thi hành với nhau, mã nguồn có thể mang
kèm theo một số dữ liệu khởi tạo nhưng trạng thái thi hành thì không thể di
chuyển.
Agent di động là một sự tiến hóa của mô hình ứng dụng phân tán. So sánh với các mô
hình ứng dụng phân tán truyền thống như “thực hiện lời gọi hàm từ xa” (RPC Remote Procedure Call) - máy trạm gửi yêu cầu đến máy chủ và nhận kết quả do máy
chủ thực hiện và mô hình Remote Evaluation (REV)[5] – máy trạm gửi mã x trình đến
máy chủ và nhận kết quả trả về.
RPC
Tham số(Dữ liệu)
Máy trạm
Máy chủ
Kết quả(Dữ liệu)
Máy trạm
Hàm(Mã chương trình,
tham số dữ liệu)
Máy chủ
REV
Máy chủ 2
Agent di động
Kết quả(Dữ liệu)
Máy chủ 1
Di chuyển
Agent(Mã nguồn, Dữ
liệu, Trạng thái)
Di chuyển
...
Hình 2: Sự tiến hóa của mô hình agent di động
Lợi ích của hệ thống agent di động là: Giảm tải mạng - thực hiện phương châm: mang
xử lý đến nơi chứa dữ liệu hơn là mang dữ liệu về chỗ xử lý, khắc phục sự trễ mạng,
khả năng thi hành không đồng bộ và tự trị, thích ứng nhanh, khắc phục tình trạng
không đồng nhất và nổi trội về khả năng chế ngự lỗi cao.
1.2.3 Phân loại theo khả năng giao tiếp và cộng tác
Một agent phải đảm bảo khả năng giao tiếp được với môi trường để có khả năng thực
hiện công việc. Agent sử dụng khả năng truyền thông để liên lạc trao đổi với môi
trường của nó và với các agent khác thông qua một ngôn ngữ truyền thông đã được
chuẩn hóa đảm bảo mọi agent có thể hiểu được. Các agent cung cấp một mô tả các khả
năng truy vấn, giao tiếp để các agent khác có thể hiểu và giao tiếp với nó. Khả năng
7
giao tiếp của một agent trong hệ thống sẽ càng đòi hỏi cao khi hệ thống phân chia
thành càng nhiều các agent nhỏ. Đặc biệt với các giao tiếp được định nghĩa sẵn của
mỗi agent giúp quá trình phát triển phần mềm trong giai đoạn bảo trì nâng cấp dễ
dàng, khả năng tái sử dụng cao. Ví dụ: Khi thực hiện quá trình xây dựng một agent
mua hàng, chúng ta cần tìm các loại agent có mô tả bán hàng và thông qua các giao
thức được mô tả về bán hàng của agent để agent mua hàng có thể thực hiện giao tiếp
với agent bán hàng mà không cần quan tâm đến việc agent bán hàng thực hiện như thế
nào. Khả năng bảo trì nâng cấp có thể thể hiện ở chỗ một agent bán hàng có thể được
xây dựng lại, với khả năng thực hiện công việc tốt hơn miễn sao đảm bảo được các
giao tiếp bán hàng sẽ không làm ảnh hưởng gì tới hệ thống. ngoài ra trong hệ thống có
thể có nhiều loại agent bán hàng khác nhau cho mỗi lĩnh vực khác nhau.
1.3 Phân loại hệ thống agent
Phân loại hệ thống agent, tác giả chọn 2 tiêu chí: Số lượng agent trong hệ thống, Số
lượng nơi cư trú của agent ( số lượng máy tính tham gia hệ thống)
1.3.1 Phân loại hệ thống theo số lượng agent
Số lượng agent liên kết trong một hệ thống là một tiêu chí để phân lại hệ thống đơn
agent với hệ thống đa agent.
Hệ thống đơn agent là hệ thống mà các đơn agent tồn tại trong môi trường mà không
giao tiếp với bất kỳ một agent nào khác. Các agent chỉ kết nối với người dùng, tài
nguyên. Trái lại, hệ thống đa agent là hệ thống có nhiều agent có khả năng trao đổi,
cộng tác với nhau.
1.3.2 Phân loại hệ thống theo số lượng nơi cư trú (môi trường)
Hệ thống agent có thể triển khai trên một hoặc nhiều phần cứng máy tính khác nhau
tao ra tiêu chí phân loại hệ thống đa điểm (multi - node) và đơn điểm (single - node).
Hệ thống đơn điểm là hệ thống mà môi trường hoạt động được thiết lập trên một máy
tính duy nhất. Hệ thống đa điểm là hệ thống triển khai trên nhiều máy tính có khả năng
giao tiếp như mạng LAN/WAN/Internet đảm bảo được truyền thông giữa các máy. Hệ
thống đa điểm đảm bảo thực hiện phân tải và hơn thế nữa nó là môi trường thực sự
phát huy tác dụng cao cho các agent có tính di động nhằm tối ưu hệ thống.
8
CHƯƠNG 2
CÔNG NGHỆ PHẦN MỀM
HƯỚNG AGENT
Ngày nay các hệ thống do các yêu cầu ngày càng phức tạp về nghiệp vụ, về khả năng
tính toán, hệ thống phần mềm ngày càng đòi hỏi sự phức tạp hơn. Việc thiết kế và xây
dựng hệ thống phần mềm gặp rất nhiều khó khăn. Để giải quyết vần đề khó khăn này
có nhiều các mô hình phát triển phần mềm (lập trình thủ tục, lập trình cấu trúc, lập
trình hướng đối tượng…). Mô hình phát triển phần mềm ngày càng làm cho quá trình
phát triển phần mềm được dễ dàng hơn, giảm tính phức tạp của ứng dụng. Tuy nhiên
các cách tiếp cận hiện tại chưa đáp ứng được yêu cầu của sự thay đổi phần mềm theo
sự biện đổi của môi trường. Vòng đời của một phần mềm ngày càng ngắn và nhanh lỗi
thời. Sự biến đổi liên tục yêu cầu có phương pháp mới trong quá trình làm phần mềm
nhằm có những giải pháp linh hoạt cho các ứng dụng lớn, phức tạp và có yêu cầu biến
đổi theo thời gian. Công nghệ hướng agent hứa hẹn một công nghệ phát triển phần
mềm có thể đáp ứng được các yêu cầu này
2.1 Cách tiếp cận hướng agent trong công nghệ phần mềm
Một hệ thống phức tạp bản chất là một tập các thành phần con có liên quan với nhau,
mỗi một thành phần bản thân chúng lại là một hệ thống phân cấp. Các hệ thống con có
thể tương tác với nhau và bản thân các thành phần của hệ thống con cũng tương tác
với nhau. Cách thức tổ chức quan hệ là không cố định, nó có thể thay đổi theo thời
gian. Hình 3 minh họa về một hệ thống phức tạp với nhiều các thành phần là các hệ
thống con. Mỗi hệ thống con gồm nhiều các thành phần, và các thành bên trong một hệ
thống con được liên kết thông qua các liên kết thường xuyên và tương tác giữa các hệ
thống con là tương tác không thường xuyên. Để giải quyết bài toán đó đòi hỏi phải có
một công cụ cũng như phương pháp đủ mạnh để quản lý sự phức tạp này[6]:
Phân tách (decomposition): Giải pháp cơ bản nhất để xử lý bất kỳ một vấn đề phức
tạp bằng cách chia nó ra thành nhiều các thành phần nhỏ và dễ quản lý hơn. Mỗi một
9
thành phần trong số đó có thể xử lý độc lập một cách tương đối. Phân tách giúp xử lý
vấn đề phức tạp vì nó giúp cho người thiết kế chỉ tập trung lần lượt từng vấn đề mà
chứ không phải tất cả các vần đề cùng một lúc
Trừu tượng hóa (abstraction): Là quá trình định nghĩa một mô hình đơn giản hóa
cho hệ thống, tập trung nhấn mạnh một số chi tiết hoặc thuộc tính. Kỹ thuật này giúp
tập trung vào một vấn đề tổng quan chứ không đi vào chi tiết cụ thể của từng vần đề,
vì vậy nó giúp tiết kiệm thời gian.
Tổ chức (Organisation): Tiến trình xác định và quản lý các quan hệ giữa các thành
phần với nhau. Quản lý các qua hệ giúp người thiết kế giải quyết vấn đề phức tạp theo
hai cách:
•
Nhóm một số thành phần cơ bản thành một nhóm và coi chúng như một đơn vị
cấp cao hơn trong quá trình phân tích.
•
Cung cấp các đặc tả các quan hệ giữa các đơn vị ở cấp cao đó.
Hệ thống con
Thành phần hệ thống con
Quan hệ bao gồm
Tương tác thường xuyên
Tương tác không thường xuyên
Hình 3: Mô hình về hệ thống phức tạp
10
Từ các đặc tính của hệ thống phức tạp ở trên và các giải thích về agent ở mục 2 ta có
thể nghĩ đến tại sao kỹ thuật hướng agent có thể phù hợp để phát triển các hệ thống
phần mềm. Kỹ thuật này cơ bản gồm 3 phần: Phân chia hướng agent là cách phân chia
hiệu quả không gian vấn đề của hệ thống phức tạp (phần 2. 1. 1). Trừu tượng hóa
hướng agent là cách mô tả của mô hình hóa hệ thống phức tạp (phần 3. 1. 2). Xác định
và tổ chức quản lý các quan hệ hướng agent là phân chia hiệu quả các phục thuộc và
tương tác trong hệ thống phức tạp (phần 2. 1. 3).
2.1.1 Phân chia hướng agent
Các hệ thống phức tạp gồm một số các hệ thống con có quan hệ với nhau được tổ chức
phân cấp. Tại bất kỳ một cấp nào, các hệ thống con cũng phải cùng nhau thực hiện để
đạt được mục tiêu tổng thể của toàn hệ thống. Hơn thế nữa các thành phần cũng phải
kết hợp với nhau để phân chia các chức năng toàn cục trong hệ thống con. Dựa vào
phân tích trên, thì đó là một cách module hóa một cách bản chất các thành phần. Trong
các thành phần việc module hóa các thành phần trong giới hạn của mục tiêu mà chúng
cần hoàn thành. Hay nói cách khác, mỗi một thành phần có thể hoàn thành một hoặc
nhiều các mục tiêu. Hiện nay, xu hướng tăng tính cục bộ và bao gói trong trong các
thành phần được phân chia, làm cho các thành phần được phân chia độc lập hơn, ít phụ
thuộc vào các thành phần khác hơn. Áp dụng lý thuyết này cho việc phận chia các mục
tiêu cần đạt được có nghĩa là các thành phần độc lập có thể có các luồng điều khiển
riêng của chúng và chúng có thể nắm được thông tin và khả năng giải quyết các vấn đề
gặp phải trong quá trình thực hiện các mục tiêu. Do cách thành phần hoạt động trong
môi trường mà thông tin chỉ mang tính cục bộ nên chúng phải có khả năng xác định,
vào thời thời chạy chúng cần xác định hành động nào cần phải thực hiện để đạt được
mục tiêu. Nói một cách ngắn gọn, các thành phần cần phải tự quyết định các hành
động. Để các thành phần tự trị và chủ động hoàn thành các mục tiêu của chúng, chúng
cần tương tác với các thành phần khác. Nhưng do tính phức tạp vốn có của hệ thống
nên không dễ gì xác định được mối quan hệ có thể xảy ra lúc nào. Vì vậy cố gắng dự
đoán hoặc phân tích tất cả các khả năng có thể sảy ra là một việc làm vô ích trong quá
trình thực hiện phân tích. Vì vậy, cân phải cung cấp các thành phần có khả năng tự
quyết định về phạm vi tương tác của chúng trong quá trình chúng hoạt động. Việc các
thành phần tự đưa ra được các quyết định tại thời điểm chạy giúp quá trình phân tích
các hệ thống phức tạp thành các hệ thống con dễ dàng hơn. Vì các rằng buộc giữa các
thành phần được trừu tượng hóa ở mức cao hơn cụ thể chúng trao đổi với nhau thông
qua ngôn ngữ truyền thông agent ở mức cao, thông điệp trao đổi mang tính tri thức nên
các thành phần không phải đưa ra các giao thức để trao đổi thông tin với nhau. Các
agent chỉ trao đổi với nhau ở mức thông tin còn quyết đinh hành động vẫn do nội tại
agent quyết định nhằm đạt được mục tiêu cụ thể tại thời điểm đó.
11
Tóm lại phân chia hướng agent hướng phân chia hệ thống phức tạp thành các thành
phần có khả năng tự trị, tương tác và mỗi thành phần có một hoặc nhiều mục tiêu cụ
thể nhằm làm cho việc phát triển hệ thống phức tạp trở nên dễ dàng hơn.
2.1.2 Trừu tượng hóa hướng agent
Một phần quan trọng trong tất cả các cách thiết kế là đi tìm một mô hình chuẩn cho
việc biểu diễn vấn đề. Thông thường sẽ có nhiều cách và các tác vụ khác nhau được để
chọn lấy một cách thích hợp. Quá trình làm tốt hơn cho một trường hợp cụ thể trong
quá trình thiết kế phần mềm, các trừu tượng tốt nhất trừu tượng giảm tối thiểu sự khác
nhau về ngữ nghĩa giữa các đơn vị vấn đề được phân tích và cấu trúc biểu diễn trong
mô hình giải pháp. Trong trừu tượng hóa hướng agent, vấn đề ở đây được mô tả gồm
các hệ thống con, các thành phần hệ thống con, các tương tác và các quan hệ có tổ
chức. Tiếp đến thực hiện lặp quá trình:
• Coi các thành phần của hệ thống con như là một agent.
• Sự ảnh hưởng qua lại giữa các hệ thống và giữa các thành phần kết hợp được
thể hiện một cách tự nhiện dưới dạng các tương tác mang tính xã hội mức cao:
“tại bất kỳ một cấp trừ tượng hóa nào cũng tìm thấy một tập các đối tượng có
thể cộng tác với nhau để đạt được mục tiêu của mức quan niệm cao hơn. Cách
nhìn nhận này phù hợp với cách tiếp cận hướng agent. Hệ thống các agent được
mô tả là “kết hợp các hành động để giải quyết vấn đề chung” hoặc “thượng
lượng để giải quyết vấn đề”. Do vậy tập các khái niệm hướng agent hoàn toàn
thích hợp cho việc nắm bắt các loại tương tác xảy ra trong hệ thống phức tạp
• Các hệ thống phức tạp bao gồm sự thay đổi của những quan hệ giữa các thành
phần. Chúng đòi hỏi tập hợp các thành phần được xem xét như một đơn vị khái
niệm đơn khi nhìn nhận từ các cấp độ trừu tượng khác nhau. Một lần nữa cách,
quan điểm này cũng rất phù hợp với khái niệm hướng agent. Và vì vậy những
điều kiện thuận lợi được cung cấp đặc thì để biểu diễn một cách rõ ràng các
quan hệ có tổ chức. Các giao thức tương tác được phát triển để định hình các
nhóm. Cuối cùng, các cấu trúc sẵn sàng cho các mô hình. Điểm cuối cùng này
thể hiện rõ nét quan hệ để biểu diễn các hệ thống con khi mà chúng không có
cái gì hơn một nhóm các thành phần cùng nhau thực hiện hoàn thành một mục
tiêu.
2.1.3 Sự cần thiết cho việc quản lý linh hoạt sự thay đổi của cấu trúc tổ
chức
Các hệ thống phức tạp bao gồm một sự đa dạng các quan hệ có tổ chức. Các quan hệ ở
đây quan trọng hai lý do chính: Thứ nhất, nó cho phép số các thành phần phân chia có
thể nhóm với các thành phần khác và được xem xét như một thực thể khái niệm. Thứ
12
hai, nó cho phép các liên kết cấp độ cao giữa các thực thể khác nhau được mô tả. Dựa
trên ảnh hưởng và tác động của các quan hệ có tổ chức và các cấu trúc trong hành vi
hệ thống thì điều quan trọng là phải cung cấp các hỗ trợ để xác định và quản lý chúng
một cách linh hoạt. Và hơn thế nữa, do các quan hệ thường xuyên thay đổi nên khả
năng tương thích với tình huống cũng rất cần thiết.
Các tổ chức là các thực thể lứp đầu tiên trong hệ thống agent. Do đó, các cấu trúc rõ
ràng và cơ chế linh hoạt là trung tâm của mô hình agent. Những yếu tố này khi đi cùng
các kỹ thuật tính toán cho phép các hệ thống hướng agent bao quát hai vấn đề bản chất
của hệ thống phức tạp. Thứ nhất, định nghĩa về thành phần cơ sở có thể thay đổi tùy
thuộc vào nhu cầu của người quan sát. Do đó ở một mức độ nào đó, toàn bộ các hệ
thống con có thể được coi nhu một thực thể đơn lẻ, tập hợp các agent có thể được coi
là các thành phần cơ sở của một một mức độ trừu tượng cao hơn. Quá trình lặp lại cho
đến khi toàn bộ hệ thống được hiểu một cách thấu đáo. Thứ hai, các cấu trúc đó cung
cấp một loạt các dạng trung gian có thể mở rộng, đây là yếu tố cần thiết cho việc phát
triển nhanh các hệ thống phức tạp. Và nó còn có nghĩa rằng các agent độc lập hoặc các
nhóm tổ chức có thể phát triển một cách tương đối độc lập và sau đó thêm dần chúng
vào hệ thống.
2.2 So sánh hướng agent với hướng đối tượng và phần mềm đóng
gói
So sánh giữa công nghệ phận mềm hướng agent và hướng đối tượng ta thấy có nhiều
điểm tương đồng. Các đồi tượng, agent cùng có khác thuộc tinh và phươg thức, chúng
trao đổi với nhau qua việc yêu cầu phượng thức hoặc gửi thông điệp. hoặc sử dụng các
khái niệm hướng đối tượng cổ điển như kế thừa, bao gói dữ liệu hoặc kết hợp. Tuy vậy
agent có chứa rất nhiều các thuộc tính khác với đối tượng. Vì vậy phương pháp hướng
đối tượng có những hạn chế nhất định trong việc áp dụng vào môi trường hướng agent.
Ngoài các thuộc tính và phương thức, agent còn có các trạng thái tinh thần như tin
tưởng, mong muốn, ý định và các khai niệm như kế hoạch, mục tiêu. Agent chứa dựng
một thành phần chức năng và một số mẫu các hành vi. Một agent giống một hệ thống
con hơn là một đối tượng đơn lẻ. Hơn thế nữa, agent mang tính chủ động trong cách
hành động nhằm đạt được mục tiêu đề ra chúng tự cảm nhận sự thay đổi môi trường,
tự kích hoạt một cách chủ động (trong khi đối tượng chỉ được kích hoạt khi được yêu
cầu phương thức hoặc gửi thông điệp). Các đối tượng trao đổi với nhau thông qua cách
gửi các thông điệp, trong khi đó các agent giao tiếp với nhau thông qua giao thức hội
thoại phức tạp mang tính ngữ nghĩa.
So với phần mềm đóng gói - một công nghệ liên quan đến hệ thống hướng đối tượng.
Phần mêm đóng gói là một thành phần độc lập được thiết kế sao cho có khả năng tái
sử dụng ở mức cao. Khi đó quá trình phát triển phần mềm chỉ là ghép nối các thành
13
phần có sẵn lại với nhau để tạo ra phần mềm theo yêu cầu. Cũng giống như phần mềm
bao gói đều được phát triển từ công nghệ hướng đối tượng, chúng đều kế thừa được
thuộc tính của đối tượng, các đối tượng quan hệ, các agent cũng chứa đựng các đối
tượng và các thành phần nhưng hơn nữa các agent cũng chia sẽ các thành phần, có tính
tái sử dụng nhưng khác ở chỗ, phần mềm đóng gói không có khả năng tự trị và cũng
như các đối tượng chúng không có tính chủ động và các hành vi mang tính xã hội. Có
thể nói rằng kỹ thuật hướng agent là một sự phát triển phát triển mở rộng của các mô
hình khác.
2.3 Vòng đời phát triển của phần mềm hướng agent
Qua mô tả về cách tiếp cận phần mềm hướng agent và sau khi so sánh kỹ thuật hướng
agent và một số kỹ thuật phát triển phần mềm khác ta đã hiểu được tai sao phần mềm
hướng agent là một cách tiếp cận tốt cho quá trình phát triển các hệ thống phức tạp.
Cũng như các quy trình phát triển phần mềm nói chung, quy trình phát triển phần mềm
hướng agent cũng phải trải qua các giai đoạn chung bao gồm đặc tả (định nghĩa các
chức năng, rằng buộc, các yêu cầu), quá trình thiết kế và cài đặt ( thực thi việc tạo ra
sản phẩm) và kiểm định chất lượng sản phẩm và quá trình bảo trì, nâng cấp phần mềm.
2.3.1 Mô hình hóa hệ thống agent
Mô hình hệ thống agent cần có các ngôn ngữ, ký pháp và ngôn ngữ thích hợp để mô tả
lại một cách rõ ràng về một hệ thống. Do các agent cũng có nét tương đồng với đối
tượng nên hầu hết các phương pháp mô hình hóa đều dựa trên các công cụ có nguồn
gốc từ hướng đối tượng. Điển hình và nổi bật nhất hiện nay là ngôn ngữ UML (Unified
Modeling Language). Tuy nhiên phiên bản hiện tại của UML không cung cấp các ký
pháp để mô hình hóa các tính năng đặc biệt của agent. Agent-UML (AUML) là một
ngôn ngữ phát triển mở rộng của UML nhằm sử dụng để mô hình hóa các hệ thống
agent. AUML mở rộng một số sơ đồ như:
Mở rộng sơ đồ tuần tuần tự của UML để đặc tả các giao thức tương tác giữa các agent
bằng cách cung cấp các phương thức, đường sống (life-line), các rằng buộc và được
gọi là sơ đồ tương tác.
Mở rộng sơ đồ lớp sang sơ đồ các agent. Trong đó mỗi agent được coi như một gói
gồm nhiều lớp trong đó lớp agent làm trung tâm và các lớp hành vi của agent. Lớp
agent bao gồm có một số phần tử như:
• Tên của agent được sử dụng để phân biệt với các agent khác
• Mô tả trạng thái
• Các hành động có thể thực hiện gồm hành động mang tính phản ứng và hành
động mang tính chủ động
14
• Các phương thức cài đặt các dịch vụ
• Mô tả khả năng mà agent có thể làm để các agent khác có thể hiểu và tương tác
với agent
• Tổ chức: đặc tả vai trò của agent và những rằng buộc của agent trong một nhóm
• Máy tự động (automata) điều khiển các hành vi của agent
Một số mở rộng khác như dụng sơ đồ hoạt động (activity diagram) để xác định vai trò
của agent, Mô hình triển khai để thể hiện tinh di động của agent …
Hiện tại AUML hiện vẫn đang ở giai đoạn nghiên cứu và thử nghiệm. Tuy nhiên vơi
sự phát triển của kỹ thuật hướng agent đang phát triển mạnh mẽ, AUML cũng đang
dần hoàn thiện để có thể cung cấp ngôn ngữ để mô hình hóa các hệ thống phức tạp
theo hướng agent
2.3.2 Phân tích thiết kế
Có rất nhiều cách tiếp cận cho việc phận tích và thiết kế một hệ thống agent. Các
phương pháp này có thể chia làm hai nhánh đó là phương pháp hình thức và phương
pháp không hình thức.
Phương pháp tiếp cận hình thức trong quá trình phân tích thiết kế là sử dụng các
công thức toán học để đặc tả chính xác hệ thống; Sản phẩm của phương pháp này là
một đặc tả hình thức được sử dụng cho việc cài đặt hệ thống, kiểm tra sự thỏa mãn yêu
cầu người dùng hoặc ước lượng kết quả cuối cùng. Một số phương pháp điển hình
như:
LORA (Logic Of Rational Agents)[7] sử dụng ngôn ngữ thiết kế MABLE – ngôn ngữ
này cho phép kiếm chứng tự động hệ thống agent. Nó dựa trên logic vị từ để biểu diễn
miền vấn đề thay đổi liên tục. Ngôn ngữ Z do M. Luck và D’ Inverno M đề xuất[ 8]
dùng để đặc tả agent. Ngôn ngữ Z dựa trên logic vị từ dự đoán các hệ số. Trong ngôn
ngữ Z định nghĩa agent trong một kiến trúc bốn tầng: Các thực thể - các đối tượng có
cùng thuộc tính, các đối tượng - các thực thể kèm theo các khả năng, agent - các đối
tượng di cùng mục tiêu và agent tự trị - các agent có khả năng tự hoạt động
Phương pháp tiếp cận không hình thức là cách tiếp cận sử dụng ngôn ngữ tự nhiên
có cấu trúc và các ký pháp đồ họa là một cách tiếp cận trực quan trong việc đặc tả và
thiết kế các hệ thống hướng agent. UML là một ngôn ngữ không hình thức được sử
dụng phổ biến trong việc đặc tả và thiết kế các hệ thống hướng đối tượng. Phát triển từ
ngôn ngữ này áp dụng cho việc đặt tả và thiết kế hệ thống hướng agent hiện nay có rất
nhiều phương pháp như: AORML (Agent - Object - Relationship Modeling Language)
do Wagner đề xuất mô tả các thực thể: các agent, các sự kiện, các hành động hoặc một
đối tượng. AORML thể hiện quan hệ giữa agent với các sự kiện, hành động hoặc đối
15
tượng thông qua sơ đồ lớp của UML. PASSI (Process for Agent Societies
Specification and Implementation) là phương pháp thiết kế và phát triển hệ thống đa
agent phát triển từ khi lấy yêu cầu đến viết mã chương trình. Phương pháp này tích
hợp các mô hình thiết kế và các khái niệm của cả lập trình hướng đối tượng và các
cách tiếp cân trí thông minh nhân tạo. Phương pháp Prometheus hỗ trợ phát triển các
agent hướng mục tiêu, cung cấp đầy đủ các pha từ đặc tả yêu cầu, thiết kế cài đặt.
Trong một số phương pháp đã nêu trên PASSI là phương pháp khá hoàn chỉnh và
tường minh cho việc phát triển hệ thống phức tạp hướng agent. Và đó cũng là phương
pháp được áp dụng để phát triển hệ thống HỆ THỐNG LỌC VÀ SẮP XẾP TIN TỨC
THEO NGỮ CẢNH NGƯỜI DÙNG trong phần thực nghiệm của luận văn. Chi tiết của
phương pháp này sẽ được mô tả trong phần 3
2.3.3 Kiểm thử
Việc kiểm thử hệ thống chủ yếu dựa trên lý thuyết hình thức nhằm xác định liệu hệ
thống có thỏa mãn các đặc tả ban đầu hay không. Việc áp dụng các phương pháp kiểm
thử truyền thống không kiểm soát kiểm thử hệ thống agent sẽ không đạt hiệu quả tốt vì
chúng không kiểm tra hết được các đặc tính của agent. Hai cách tiếp cận chính có thể
áp dụng kiểm thử hệ thống agent:
Tiếp cận tiền đề cho kiểm chứng chương trình được Hoare đề xuất vào cuối những
năm 1960. Việc kiểm chứng tiền đề yêu cầu phải có một chương trình cụ thể. Từ
chương trình này tạo ra lý thuyết logic biểu diễn các hành vi của chương trình, được
gọi là lý thuyết chương trình. Nếu lý thuyết chương trình được biểu diễn bằng ngôn
ngữ đặc tả ban đầu thì vần đề kiểm chứng trở thành vần đề chứng minh rằng đặc tả là
lý thuyết đã được chứng minh của lý thuyết chương trình.
Việc phát triển lý thuyết chương trình được thực hiện bằng cách tiên đề hóa ngôn ngữ
cài đặt hệ thống và sử dụng ngôn ngữ đơn giản. Dựa trên việc tiên đề hóa, lý thuyết
chương trình có thể được suy ra từ văn bản chương trình một cách hệ thống.
Trong hệ thống hướng agent, việc tiên đề hóa được thực hiện bằng cách sử dụng ngôn
ngữ lập trình đơn giản như Agent0 của Shoham và CurrentMetaM của Fisher. Tuy
nhiên đối với hệ thống phức tạp, việc nắm bắt ngữ nghĩa của thực thi agent không dễ
dàng. Nhìn chung cách tiếp cận tiền đề gặp phải những khó khăn hạn chế trong việc
chứng minh.
Tiếp cận sử dụng kiểm chứng mô hình là kỹ thuật kiểm chứng dựa trên kiểm chứng
mô hình được nghiên cứu cùng với logic thời gian và các máy trạng thái. Gải sử rằng
Φ là đặc tả của hệ thống, và Π là một chương trình cài đặt đặc tả Φ. Sau đó để xác định
liệu Π có cài đặt Φ đúng đắn hay không thì chúng ta tạo ta mô hình MΠ tương ứng cới
Π, theo nghĩa này thì MΠ mã hóa tất cả các khả năng có thể xảy ra của Π. Và việc xác
- Xem thêm -