Chương 1 - HỆ THỐNG ĐA TÁC TỬ 1. Khái niệm và phân loại tác tử 1. Khái niệm Trong những năm gần đây, Công nghệ thông tin (CNTT) đã thâm nhập vào các lĩnh vực khác nhau của cuộc sống như tìm kiếm truy xuất thông tin, quản lý mạng viễn thông, TMĐT, hỗ trợ ra quyết định, giải trí,…Sự đa dạng của các lĩnh vực ứng dụng khiến cho việc phát triển phần mềm ngày càng trở nên phức tạp và sự phức tạp này thể hiện ở một số đặc điểm sau đây [1],[3]: Khối lượng công việc cần xử lý ngày càng lớn: Các phần mềm ngày nay phải xử lý một khối lượng dữ liệu rất lớn hoặc thao tác trên một số lượng lớn các nguồn tin. Ngoài ra, quá trình phát triển hệ thống thường xuyên phải đối mặt với các bài toán có độ phức tạp lớn (nhiều bài toán thuộc dạng NP đầy đủ) đặc biệt là với các ứng dụng TMĐT hay điều khiển phức tạp.
Yêu cầu về tính chính xác ngày càng cao: Yêu cầu này xuất hiện cùng với sự ra đời của các hệ thống đòi hỏi độ chính xác và thời gian thực như các hệ điều khiển không lưu, điều khiển thiết bị viễn thông, các bài toán quản lý lưu lượng, quản lý tiến trình công việc,… Đặc biệt, các ứng dụng thời gian thực đang ngày càng trở thành nhu cầu tất yếu và là một trong những hướng phát triển của CNTT và truyền thông nói chung. Yêu cầu về tính mở và phân tán: Yêu cầu này xuất hiện cùng với sự phát triển của các hệ thống mạng, đặc biệt là hệ thống trên mạng Internet. Những năm gần đây, hầu hết các hệ thống thông tin đều gắn bó chặt chẽ với môi trường mạng, do đó các phần mềm cũng cần phải đáp ứng ngày càng tốt hơn các nhu cầu của con người như tìm kiếm thông tin, hỗ trợ người mua và người bán ra quyết định,…và phải có tính mở, tức là có thể được cập nhật, thay đổi hay bổ sung các dịch vụ vào hệ thống. 4 Yêu cầu tính độc lập cao giữa các thành phần trong hệ thống: Các thành phần trong các hệ ra quyết định và các hệ TMĐT yêu cầu rất cao về tính độc lập và chủ động tương tác với các thành phần khác nhằm hướng tới đích riêng của mình.
Nhất là trong hệ thống mà mục đích riêng của các thành phần là không giống nhau, thậm chí tranh chấp nhau thì yêu cầu này càng trở nên quan trọng. Những yêu cầu này đã dẫn đến sự nghiên cứu và phát triển mạnh mẽ của công nghệ phần mềm trong gia đoạn gần đây. Cách tiếp cận dựa trên cấu trúc chiếm ưu thế vào những năm 70 – 80 của thế kỷ trước đã dần bị thay thế bởi phương pháp luận hướng đối tượng với tập ký hiệu chuẩn UML mà ngày nay trở thành phổ biến trong phân tích, thiết kế và xây dựng các hệ phần mềm. Tuy nhiên, đến nay thì hướng tiếp cận này bộc lộ nhiều hạn chế bởi tính thụ động của các đối tượng, cụ thể là các đối tượng chỉ thực sự họat động khi nhận được một thông điệp từ đối tượng khác.
Đối với các hệ thống phân tán như hệ thống thương lượng trong TMĐT, hệ thống quản lý mạng viễn thông…thì điều này chưa đáp ứng yêu cầu thực tế. Xét một ví dụ sau đây: Trong hệ thống dịch vụ du lịch, người sử dụng có nhiều yêu cầu khác nhau cho các gói du lịch của mình như: vé máy bay, chỗ ở, những địa điểm tham quan,… Các thành ph ần phần mềm thay mặt người dùng cần phải tương tác, thương lượng với nhiều dịch vụ khác một cách tự động và sau đó tích hợp kết quả gửi lại cho ngườ i sử dụng, mỗi thành phần như thế gọi là một tác tử. Mặc dù cho đến nay, chưa có một định nghĩa thống nhất về khái niệm này, tuy nhiên nhiều nghiên cứu cho rằng [3]: Tác tử là một hệ tính toán hoàn chỉnh hay chương trình được đặt trong một môi trường nhất định, có khả năng hoạt động một cách tự chủ và mềm dẻo trong môi trường đó nhằm đạt được mục đích đã thiết kế. Tác tử và đối tượng [1] Trong lập trình hướng đối tượng, các đối tượng được định nghĩa là các thực thể tính toán đóng gói bao gồm các trạng thái, các hành động hay phương thức trong trạng thái đó, các đối tượng liên lạc với nhau thông qua việc gửi các thông điệp.
Xét theo quan điểm hệ thống, có thể xem mỗi tác tử cũng là một đối tượng nhưng ở mức trừu tượng cao hơn. So với khái niệm tác tử đã trình bày ở Mục 1.1 thì đối tượng và tác tử có các điểm khác biệt sau: Tác tử có tính tự chủ cao hơn đối tượng. Tác tử có quyền tự quyết định hành động của mình mà không phải thực hiện theo yêu cầu của tác tử khác. Ngược lại, các đối tượng chỉ thực sự hoạt động khi nhận được lời gọi hàm từ các đối tượng khác.
Tác tử có tính hướng đích, mỗi tác tử có một đích riêng và đích của các tác tử trong một hệ thống có thể thống nhất hoặc không cần thống nhất với mục đích của hệ thống. Trong khi đó các đối tượng không có mục đích riêng, chúng cùng chia sẻ mục đích chung của cả hệ thống. Do đó, các tác tử thường phải thương lượng với nhau trong quá trình tương tác. Tác tử có các hành vi linh hoạt dựa trên các đặc trưng như tính chủ động, khả năng phản ứng, và khả năng x ã hội.
Các đối tượng không có các kiể u hành vi này. Mỗi tác tử có một hoặc nhiều luồng điều khiển (thread) riêng. Trong hệ thống hướng đối tượng cũng có điều khiển theo kiểu luồng nhưng không yêu cầu mỗi đối tượng phải có một luồng riêng mà ngược lại có thể có nhiều đối tượng chung một luồng. Bản chất của sự khác nhau này cũng là đặc trưng quan trọng về mức độ tự chủ của tác tử so với đối tượng.
Các đặc trưng cơ bản của tác tử Theo các tài liệu [1], [13] thì tác tử có các đặc trưng sau đây: 6 Tính tự chủ (autonomy): đặc trưng quan trọng nhất - Tự chủ trạng thái: Mỗi tác tử chứa một trạng thái riêng của nó, các tác tử khác không truy cập được vào các trạng thái này. - Tự chủ về hành động: Tác tử có thể tự quyết định các hành động của mình (có thể là một hành động đơn hoặc một chuỗi các hành động) dựa trên trạng thái hiện thời mà không có sự can thiệp của con người hay các tác tử khác. Khả năng phản ứng (reactivity): Là khả năng tác tử có thể nhận biết được môi trường (qua bộ phận cảm nhận nào đó) và thông qua nhận biết đó, tác tử đáp ứng kịp thời những thay đổi xảy ra trong môi trường. Tính phản ứng thể hiện rõ nhất ở các tác tử hoạt động trên môi trường có tính mở và thường xuyên thay đổi như Internet, mạng phân tán…Phản ứng của mỗi một tác tử đối với môi trường bên ngoài đều hướng tới việc thực hiện mục tiêu của tác tử đó.
Tính chủ động (pro-activeness): Khi có sự thay đổi của môi trường, tác tử không chỉ phản ứng một cách đơn giản mà còn xác định một chuỗi hành động cần thực hiện, bản thân mỗi tác tử sẽ chủ động trong việc khởi động và thực hiện chuỗi hành động này. Khả năng xã hội (social ability): Các tác tử không chỉ hướng tới đích riêng của mình mà còn có khả năng tương tác với các tác tử khác trong hệ thống để hướng tới mục đích chung của toàn hệ thống. Các hoạt động tương tác này rất đa dạng bao gồm phối hợp, thương lượng, cạnh tranh,… 1. Phân loại tác tử Trên thực tế, có nhiều cách phân loại tác tử [1], [13].
Trong khuôn khổ đề tài, tác giả trình bày 3 loại tác tử dựa trên đặc trưng về ứng dụng của chúng, bao gồm: - Tác tử phần mềm (Software Agent): phần mềm hoạt động độc lập và chủ động đưa ra các quyết định, nó hoạt động với vai trò đại diện cho một người dùng 7 hoặc một phần mềm khác. Ví dụ: tác tử thư ký điện tử tự động sắp xếp lịch làm việc cho người dùng và thông báo khi sắp đến giờ phải làm gì đó. - Tác tử thông minh (Intelligent Agent): Tác tử được trang bị trí tuệ nhân tạo để có khả năng học, suy luận, hỗ trợ ra quyết định… - Tác tử di động (Mobile Agent): Với các lợi thế của mình, tác tử được ứng dụng để giải quyết các bài toán phân tán, thu thập, giám sát và phổ biến thông tin. Liên quan đến nội dung đề tài, tác giả giới thiệu cụ thể về loại tác tử di động ở phần 1.
Tác tử di động [5] Tác tử di động là một đối tượng phần mềm hoạt động một cách tương đối độc lập, tự chủ và có khả năng cộng tác với nhau trong một môi trường để hoàn thành một nhiệm vụ định trước. Đặc điểm nổi trội của tác tử là khả năng đóng gói mã lệnh, dữ liệu và cả trạng thái thi hành, nhờ vậy có thể chuyển công việc đang thực hiện tại một máy này đến một máy khác. Sự cần thiết của mô hình tác tử di động Theo truyền thống, một ứng dụng phân tán có cấu trúc xây dựng trên mô hình client-server sẽ thực hiện việc giao tiếp thông qua cơ chế truyền thông điệp hoặc các lời gọi hàm từ xa (RPCs). Đây là mô hình đồng bộ, nghĩa là phía client sẽ phải tạm ngưng hoạt động của mình trong thời gian gởi yêu cầu đến server và đợi đến khi nhận được kết quả trả về từ server, tùy nội dung kết quả mới xử lý tiếp (Hình 1.
Một kiến trúc tiến bộ hơn là REV do Stamos và Gifford đưa ra vào năm 1990 [5]. Trong mô hình REV, thay vì yêu cầu thực hiện các hàm từ xa thì client chỉ việc gởi mã nguồn các hàm của nó đến server và yêu cầu server thực hiện rồi trả về kết quả. Một số hệ thống gần đây cũng đã giới thiệu khái niệm thông điệp chủ động (active messages) có thể di trú giữa các vị trí trên mạng, mang theo mã của chương 8 trình để thực thi tại những vị trí này. Tác tử di động là mô hình tiến hóa tiên tiến nhất so với các mô hình trước đó.
Giao diện phía client Đối tượng thi hành Mã lệnh gọi một phương thức; Tạo lời gọi hàm từ xa thông qua Yêu cầu được ánh xạ đến phương mạng gởi yêu cầu đến server; thức tương ứng; Thi hành phương thức; Nhận giá trị trả về Giá trị trả về được gởi về client Hình 1.