Để có thể trợ giúp ngày càng tốt hơn cho người dùng, các tác tử giao diện học tập theo bốn cách: + Thông qua quan sát và bắt trước người dùng học từ người dùng + Thông qua các thông tin
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN NGỌC KHẢI
NGHIÊN CỨU VỀ TÁC TỬ PHẦN MỀM
VÀ ỨNG DỤNG VÀO BÀI TOÁN ĐẶT LỊCH HỌP
Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng
cá nhân tôi, không sao chép lại của người khác Trong toàn bộ nội dung của luận văn, những điều trình bày là của cá nhân tôi hoặc là được tôi tổng hợp từ nhiều nguồn tài liệu tham khảo có xuất xứ rõ ràng và trích dẫn hợp pháp
Tôi xin chịu toàn bộ trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của tôi
Hà Nội, tháng 10 năm 2010
Nguyễn Ngọc Khải
Trang 4Tôi xin chân thành cám ơn các thầy cô giáo trong khoa Công nghệ thông tin, trường Đại học Công nghệ đã hướng dẫn, giúp đỡ và truyền đạt kiến thức cho tôi trong xuốt quá trình học tập để hôm nay tôi có thể hoàn thành được luận văn của mình
Đặc biệt tôi xin gửi lời cảm ơn sâu sắc đến thầy giáo PGS TS Nguyễn Việt Hà - là người đã trực tiếp hướng dẫn giúp đỡ tôi về mọi mặt để hoàn thành luận văn này
Tôi xin chân thành cám ơn các bạn đồng nghiệp, gia đình và bạn bè đã tạo mọi điều kiện giúp đỡ tôi trong xuốt quá trình học tập cũng như quá trình làm luận văn
Mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nỗ lực của mình, song luận văn chắc chắn không tránh khỏi thiếu sót, tôi rất mong nhận được các
ý kiến đóng góp, ý kiến phê bình của các thầy cô giáo, của các bạn đồng nghiệp
để tôi tiếp tục nghiên cứu và hoàn thiện hơn luận văn của mình
Xin chân thành cảm ơn !
Hà Nội, tháng 10 năm 2010
Học viên
Nguyễn Ngọc Khải
Trang 5MỞ ĐẦU 1
CHƯƠNG 1: TÁC TỬ PHẦN MỀM VÀ HỆ ĐA TÁC TỬ 3
1.1 Tác tử phần mềm 3
1.1.1 Khái niệm tác tử phần mềm 3
1.2.2 Tương tác trong hệ đa tác tử 11
1.2.3 Các lợi thế của các hệ thống đa tác tử 12
1.2.4 Lĩnh vực áp dụng các hệ thống đa tác tử 13
CHƯƠNG 2: KỸ NGHỆ PHẦN MỀM HƯỚNG TÁC TỬ 14
2.1 Cách tiếp cận phát triển hệ đa tác tử 14
2.1.1 Cách tiếp cận theo tác tử 14
2.1.2 Cách tiếp cận phát triển từ phương pháp hướng đối tượng 15
2.1.3 Cách tiếp cận dựa trên công nghệ tri thức 15
2.2 Phương pháp MaSE 16
2.2.1 Đặc điểm của phương pháp luận MaSE 16
2.2.2 Quy trình phát triển phần mềm hướng tác tử 18
CHƯƠNG 3: ỨNG DỤNG TÁC TỬ CHO BÀI TOÁN ĐẶT LỊCH HỌP 33
3.1 Mô tả bài toán đặt lịch họp 33
3.2.1 Giải pháp dữ liệu tập trung xử lý tập trung 34
3.2.2 Giải pháp dữ liệu phân tán xử lý tập trung 35
3.2 Giải pháp ứng dụng công nghệ tác tử 37
3.3.1 Giải pháp thứ nhất 37
3.3.2 Giải pháp thứ hai 40
3.3.3 Một số kỹ thuật liên quan đến hoạt động của tác tử 42
CHƯƠNG 4:THỰC NGHIỆM 46
4.1 Công cụ phát triển thực nghiệm 46
4.1.1 Giới thiệu về JADE 46
4.1.2 Xây dựng hệ thống đa tác tử với JADE 47
4.2 Thực nghiệm 49
4.2.1 Hệ thống thực nghiệm 49
4.2.2 Kết quả thực nghiệm 50
KẾT LUẬN 53
Trang 6MỞ ĐẦU
Trong thời đại công nghiệp hiện nay, tại các công ty, xí nghiệp, trường học thường xuyên cần tổ chức các cuộc họp, các cuộc hội thảo Mỗi khi cần tổ chức một cuộc họp người tổ chức phải căn cứ trên các điều kiện ràng buộc của cuộc họp và thời gian biểu của các thành viên để chọn ra một thời gian tổ chức cuộc họp sao cho phù hợp nhất
Tuy nhiên lịch làm việc của mỗi thành viên lại rất khác nhau, vì vậy việc tìm ra những khoảng thời gian để tổ chức cuộc họp sao cho ít ảnh hưởng nhất đến các thành viên của cuộc họp đôi khi rất khó khăn Thông thường hiện nay người tổ chức thường phải đàm phán bằng điện thoại hay email với các thành viên để thống nhất lịch họp Giải pháp này chỉ có tác dụng khi số người tham gia
là ít, còn đối với các cuộc họp có đông người tham gia thì thường phải cố định một thời gian cụ thể và yêu cầu các thành viên phải tuân theo Điều này không những làm ảnh hưởng đến công việc của các thành viên mà đôi khi còn làm ảnh hưởng đến hiệu quả công việc của cơ quan
Để giải quyết vấn đề trên, chúng ta cần một hệ thống đặt lịch họp tự động
để tìm ra thời gian tổ chức cuộc họp cho phù hợp nhất dựa trên ràng buộc của cuộc họp và lịch biểu cá nhân của các thành viên
Vấn đề đặt ra là hệ thống phải đảm bảo được các yêu cầu về bảo mật các thông tin cá nhân có trong lịch biểu của các thành viên, phải đảm bảo cho người dùng sử dụng hệ thống thuận tiện mọi lúc mọi nơi Để đảm bảo được các yêu cầu trên chúng ta bắt buộc phải lưu trữ dữ liệu của các thành viên phân tán trên các máy tính cá nhân của họ và sử dụng các chương trình mang các thuật toán đến các máy tính đó để tính toán và mang kết quả về Để thực hiện được ý tưởng này chúng tôi nhận thấy sử dụng công nghệ tác tử là một giải pháp hợp lý nhất Công nghệ tác tử là một công nghệ có nhiều ưu điểm nổi bật so với các công nghệ hiện thời, đặc biệt trong lĩnh vực xử lý phân tán Công nghệ tác tử cũng là một công nghệ mới hứa hẹn nhiều tiềm năng trong lĩnh vực công nghệ phần mềm, tuy nhiên chúng cũng còn nhiều thách thức đang chờ đợi chúng ta giải quyết Đó cũng chính vì các lý do mà tôi lựa chọn đề tài này để thực hiện trong luận văn của mình
Nội dung chính của luận văn bao gồm các vấn đề sau: Tìm hiểu các khái niệm cơ bản về công nghệ tác tử, các hệ thống đa tác tử Tìm hiểu về quy trình phát triển phần mềm hướng tác tử Xây dựng các giải pháp cho bài toán đặt lịch họp dựa trên công nghệ tác tử và các kết quả thực nghiệm của các giải pháp đó
Trang 7Với nội dung trên luận văn được bố cục bao gồm bốn chương như sau: Chương 1 trình bày các khái niệm về tác tử phần mềm, hệ đa tác tử, các đặc điểm của tác tử, cách thức phân loại tác tử, cách thức giao tiếp của các tác tử trong hệ đa tác tử, các lợi ích và các lĩnh vực có thể áp dụng hệ đa tác tử
Chương 2 trình bày về các phương pháp tiếp cận hệ đa tác tử và quy trình phát triển phần mềm hướng tác tử MaSE
Chương 3 trình bày chi tiết về bài toán đặt lịch họp, phân tích và đề xuất các giải pháp ứng dụng công nghệ tác tử để giải quyết bài toán
Chương 4 trình bày về thực nghiệm và các kết quả đạt được khi tiến hành thực nghiệm các giải pháp đã đề ra trong chương 3 Ngoài ra chương này còn dành một phần để trình bày về công cụ JADE (Java Agent Development), một trong các công cụ dùng để triển khai các giải pháp ứng dụng công nghệ tác tử rất hiệu quả
Trang 8CHƯƠNG 1 TÁC TỬ PHẦN MỀM VÀ HỆ ĐA TÁC TỬ
Chương này luận văn sẽ trình bày các kiến thức cơ sở về tác tử, hệ đa tác
tử, cách thức phân loại tác tử, các ưu điểm của công nghệ tác tử, các lĩnh vực có thể áp dụng công nghệ tác tử Đây là nền tảng để chúng ta tiếp cận với các vấn
đề liên quan đến tác tử và hệ đa tác tử
1.1.2 Các đặc tính của tác tử
Tác tử có các đặc tính chính như sau [9]:
– Tính tự trị: là khả năng tự kiểm soát bản thân của tác tử sau khi được
giao việc mà không cần sự can thiệp nào của người dùng hoặc của tác tử khác
– Tính di động: là khả năng di chuyển từ môi trường thi hành này sang
môi trường thi hành khác của một tác tử Khả năng di động của một tác tử được phân thành hai loại: di động mạnh (strong mobility) và di động yếu (weak mobility) Di động mạnh là khả năng mà hệ thống có thể di chuyển cả mã chương trình và trạng thái thi hành của tác tử đến một môi trường khác Di động yếu là khả năng mà 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
– Tính thích ứng: là khả năng mà tác tử có thể thực thi trên những môi
trường lạ, và cảm nhận được sự thay đổi của môi trường
Trang 9– Khả năng cộng tác: là khả năng liên lạc, phối hợp hoạt động của các
tác tử với các tác tử khác của cùng môi trường hay với các loại đối tượng khác trong những môi trường khác
– Tính chủ động: các tác tử có khả năng thể hiện các ứng xử hướng
mục tiêu bằng việc hoàn thành các kế hoạch để thoả mãn các mục tiêu thiết kế
1.1.3 Tiêu chí phân loại tác tử [14] [24]
Để phân loại tác tử chúng ta có thể căn cứ theo các tiêu chí sau:
+ Theo tính di động của tác tử
+ Theo khả năng suy luận hay phản xạ của tác tử
+ Theo tính chất đặc thù của tác tử
+ Theo vai trò của tác tử
+ Theo tính lai tạp của tác tử
– Phân loại tác tử theo tính di động
Theo tiêu chí về khả năng di chuyển giữa môi trường này sang môi trường khác, giữa các nút mạng này sang nút mạng khác chúng ta có thể phân chia tác
tử làm hai loại: tác tử tĩnh và tác tử động
– Theo khả năng suy luận hay phản xạ
Tác tử có thể được phân lớp theo tính suy luận hoặc tính phản xạ của chúng Theo tiêu chí này, tác tử được phân làm hai loại: tác tử suy luận và tác tử phản xạ
Các tác tử suy luận bắt nguồn từ mô hình tư duy suy luận: các tác tử có một tập trạng thái trong, mô hình tư duy và chúng hoạt động một cách có kế hoạch và có sự hợp tác với các tác tử khác
Các tác tử phản xạ thì không có tập trạng thái trong, chúng hoạt động theo hình thức đáp ứng lại trạng thái hiện thời của môi trường
Trang 10thức nào đó nhằm đạt được mục đích Điểm chốt yếu của tính tự động là khả năng chủ động, như chúng có khả năng tự khởi tạo công việc chứ không chỉ đơn thuần đáp ứng lại trước các trạng thái hiện thời của môi trường
Khả năng hợp tác của tác tử là đặc điểm hết sức quan trọng, để có thể hợp tác được các tác tử cần sở hữu các khả năng xã hội, ví dụ khả răng tương tác với các tác tử khác và có thể là cả con người thông qua một số ngôn ngữ nào đó
Cuối cùng, để tác tử thực sự thông minh thì ngoài khả năng phản xạ hay tương tác với môi trường thì chúng phải có khả năng học tập Ở đây chúng ta quan niệm rằng bất cứ một thực thể thông minh nào cũng cần phải có khả năng học tập Quá trình học tập cũng có thể giúp nâng cao hiệu năng hoạt động của tác tử
– Theo vai trò của tác tử
Chúng ta cũng có thể phân loại các tác tử theo vai trò riêng của nó do người dùng thiết kế Ví dụ các tác tử tìm kiếm thông tin mạng, tác tử báo cáo, tác tử biểu diễn, tác tử phân tích và thiết kế, tác tử kiểm tra, tác tử đóng gói và tác tử trợ giúp vv
– Theo tính lai tạp của tác tử
Trên thực tế, để nâng cao hiệu năng của tác tử ta thường kết hợp hai hay nhiều mô hình tác tử khác nhau trong cùng một tác tử để tạo ra các tác tử lai
Việc phân biệt các tác tử theo các tiêu chí trên cũng chỉ mang tính chất tương đối, có những tác tử trong hoàn cảnh này thì coi chúng là tác tử di động, trong hoàn cảnh khác thì lại coi chúng là tác tử tĩnh, … vì vậy, tùy từng trường hợp cụ thể mà chúng ta phân loại tác tử và sử dụng các tiêu chí phân loại cho phù hợp
Để hiểu rõ hơn về cách phân loại này, phần tiếp theo chúng ta sẽ xem xét chi tiết các loại tác tử này
đó quay trở lại báo cáo các kết quả đã đạt được cho người chủ Tập công việc này có thể ở mức đơn giản như truy xuất thông tin hoặc phức tạp như việc điều
Trang 11hành một mạng điện thoại Tuy nhiên nếu chỉ có tính chất di động thì cũng chưa
đủ cho thể hiện của một tác tử Các tác tử di động là tác tử vì chúng còn có tính
tự động và tính hợp tác, mặc dù khác với các tác tử hợp tác Ví dụ, chúng có thể hợp tác hoặc trao đổi thông tin thông qua một tác tử khác, chúng có các phương pháp biết được các tác tử khác Bằng cách này một tác tử có thể trao đổi thông tin với các tác tử khác mà không phải truyền đi tất cả các thông tin về mình Điều này hết sức quan trọng vì việc nhận biết công cộng về các tác tử cũng đồng nghĩa với các tác tử di động Các chức năng của tác tử di động được mô tả như trong hình vẽ 1.1
– Tác tử hợp tác
Các tác tử hợp tác nhấn mạnh vào tính tự động và cộng tác với các tác tử khác để thực hiện nhiệm vụ được giao Tác tử loại này cũng có thể học, nhưng khía cạnh này không là đặc điểm nổi bật trong hoạt động của chúng Để đảm bảo được tính hợp tác, các tác tử này phải thương lượng và có được sự chấp nhận của các tác tử khác về một số khía cạnh nào đó trước khi thực hiện công việc của mình
Một số tính chất chủ yếu của tác tử hợp tác: tính tự động, khả năng xã hội, khả năng hồi đáp và chủ động Do đó, tác tử loại này có thể hoạt động tự động
và nối tiếp trong môi trường đa tác tử Ngoài ra các tác tử hợp tác thường không thực hiện những quá trình học tập phức tạp
– Tác tử giao diện
Tác tử giao diện nhấn mạnh vào tính tự động và khả năng học tập để thực hiện nhiệm vụ Đặc điểm mấu chốt của tác tử loại này là chúng đóng vai chò như các trợ lý của người dùng, cùng hợp tác với người dùng trong cùng một môi trường làm việc Đây là điểm khác biệt với tác tử hợp tác, các tác tử hợp tác phải cộng tác với các tác tử khác để thực hiện nhiệm vụ Việc hợp tác với người dùng
Hình 1.1: Chức năng của các tác tử di động
User
Application
User’s Agent
Other Agent
Communicate Feedback
Asks
Interacts with
Interacts with
Observes Imitates
Trang 12không yêu cầu một ngôn ngữ trao đổi phức tạp như trong việc trao đổi thông tin giữa các tác tử
Chức năng của các tác tử di động được mô tả trong hình vẽ dưới Trong
đó điểm chủ yếu là các tác tử thuộc loại này cung cấp cơ chế hỗ trợ, thường là
để trợ giúp người dùng học cách sử dụng một ứng dụng nào đó, như các bảng tính hoặc hệ điều hành Tác tử của người dùng quan sát và điều hành các hành động của người dùng trên giao diện, học các phím nóng mới, và gợi ý các cách làm tốt hơn để giải quyết công việc Như vậy, tác tử của người dùng hoạt động một cách tự động, như một trợ lý cùng hợp tác với người dùng hoàn thành công việc trong ứng dụng Để có thể trợ giúp ngày càng tốt hơn cho người dùng, các tác tử giao diện học tập theo bốn cách:
+ Thông qua quan sát và bắt trước người dùng (học từ người dùng)
+ Thông qua các thông tin hồi đáp tích cực hoặc tiêu cực từ người dùng (học từ người dùng)
+ Thông qua việc nhận các lệnh thực hiện của người dùng (học từ người dùng)
+ Thông qua việc tham khảo lời khuyên từ các tác tử khác (học ngang cấp)
Việc hợp tác giữa các tác tử loại này, nếu có, chỉ giới hạn ở mức hỏi các lời khuyên, chứ không ở mức thương lượng như trong trường hợp của các tác tử hợp tác Các phương thức học cũng chỉ thường là học “vẹt” (học dựa trên trí nhớ) học thông qua các phương trình tham số
– Tác tử thông tin
Sự xuất hiện của các tác tử loại này là do nhu cầu về các công cụ trợ giúp trong việc khai thác lượng thông tin ngày càng lớn như hiện nay Các tác tử thông tin thực hiện các công việc như quản trị, xử lý hoặc sưu tập thông tin từ rất nhiều nguồn phân tán
Tuy nhiên phải lưu ý rằng rất có thể các tác tử loại này có các tính chất trùng lặp với những loại đã nêu trên, như tác tử giao diện hoặc tác tử hợp tác Điều này là không thể chánh khỏi vì khi đưa ra các định nghĩa trước về tác tử ta dựa trên câu hỏi “chúng là gì”, trong khi đó tác tử thông tin được định nghĩa với câu hỏi “chúng làm gì” Mặc dù tác tử thông tin và tác tử hợp tác có xuất phát điểm rất khác nhau, tuy nhiên với sự xuất hiện của world wide web và các dịch
vụ gia tăng trên mạng diện rộng mà bây giờ chúng có khá nhiều điểm trùng lặp với nhau
Trang 13– Tác tử phản xạ
Đây là loại tác tử đặc biệt, chúng không có các trạng thái trong, hay các
mô hình tượng trưng của môi trường, thay vào đó chúng hoạt động theo kiểu hồi đáp lại trước trạng thái hiện thời của môi trường Theo Maes, tác tử phản xạ có
ba đặc điểm nổi bật là:
+ Các chức năng được thực hiện độc lập
+ Nhiệm vụ được phân rã trước khi được giao cho mỗi tác tử + Các tác tử phản xạ có xu hướng hoạt động trực tuyến tương ứng với dữ liệu mà nó nhận được từ môi trường
– Tác tử lai
Trong các phần ở trên ta đã nhắc đến năm loại tác tử: tác tử di động, tác tử hợp tác, tác tử giao diện, tác tử thông tin và tác tử phản xạ Mỗi loại trong số chúng đều có những điểm mạnh cũng như các khó khăn riêng, các nhà phát triển luôn muốn tạo ra các thực thể có tối đa các lợi thế, đồng thời giảm thiểu các khó khăn Để thực hiện điều này người ta thường phải áp dụng mô hình tiếp cận kiểu kết hợp nhiều mô hình Vì vậy các tác tử được tạo ra theo phương pháp này là sự kết hợp của hai (hoặc nhiều hơn) mô hình tác tử
– Tác tử thông minh
Tác tử thông minh là các thực thể phần mềm thực hiện một tập hợp các thao tác nhân danh người sử dụng hoặc một chương trình khác với mức độ độc lập hoặc tự chủ nhất định, sử dụng một số tri thức và hình dung về mục đích và yêu cầu của người sử dụng
Việc phân chia thành các loại tác tử này cũng chỉ mang tính chất tương đối và được mô tả như trong hình vẽ 1.2
Hình 1.2: Phân loại tác tử [31]
cooperate learn
autonomous
collaborative Learning agent intelligent agent
collaborative agent
interface agent
Trang 14– Điều khiển giao thông, không lưu
Các nút giao thông được quản lý bởi các tác tử có khả năng trao đổi thông tin và tự đưa ra quyết định để tối ưu hoá lưu lượng Trong hàng không, mỗi máy bay được biểu diễn bằng một tác tử, các tác tử này có nhiệm vụ liên lạc với đài điều khiển và các máy bay khác để đưa máy bay hạ cánh an toàn
– Trong Y tế:
Trong y tế có thể ứng dụng tác tử để theo dõi tình hình người bệnh, phối hợp các bộ phận, các bác sỹ và nhân viên trong một chương trình điều trị chung
– Trong công nghiệp giải trí:
Tác tử được ứng dụng rất nhiều trong ngành công nghiệp trò chơi điện tử, đặc biệt một số game đối kháng như: bóng đá, cờ vua, cờ tướng, … trong đó mỗi nhân vật được mô phỏng bởi một tác tử
– Trong quân sự:
Trong quân sự tác tử thường được sử dụng để mô phỏng quân số, trang bị,
hệ thống chỉ huy, đồng bộ các đối tượng này theo kế hoạch tác chiến chung
Trang 15– Sự định hướng đối tượng không cung cấp một tập hợp các khái niệm,
cơ chế thực hiện đầy đủ, phù hợp cho mô hình hệ thống phức tạp: như trong các
hệ thống chúng ta phải đi tìm kiếm và xây dựng các đối tượng, các lớp và modul cung cấp những thuộc tính cần thiết song thiếu sự trừu tượng hoá
– Tác tử có các khái niệm về tính chủ động bền vững hơn so với đối tượng, và trong trường hợp riêng, chúng tự quyết định có thực hiện hay không một hành động nào đó từ một yêu cầu từ tác tử khác
– Tác tử thông minh: thể hiện ở tính phản xạ, tính chủ động, hành động hướng mục đích và linh hoạt
– Tác tử chủ động: một hệ thống đa tác tử vốn là hệ thống đa luồng, trong đó mỗi tác tử được giả thiết để điều khiển ít nhất một luồng
1.1.7 Lợi ích của công nghệ tác tử
Ứng dụng công nghệ tác tử sẽ có một số lợi ích chính sau:
– Làm giảm tải mạng
Tác tử di động cho phép người dùng gởi nó đến đích và thực hiện xử lý, trao đổi dữ liệu cục bộ tại đó Như thế sẽ góp phần làm giảm những dòng dữ liệu thô trên mạng Phương châm thực hiện của tác tử di động là 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 tình trạng trễ
Với các hệ thống với quy mô lớn thông qua mạng sẽ phải chấp nhận một
sự trễ hạn nhất định Nhưng tác tử di động có thể khắc phục được điều này nhờ vào việc các tác tử có thể được gửi đi từ một trung tâm điều khiển và hành động cục bộ, tự trị, trực tiếp thi hành các chỉ dẫn của người điều khiển
– Gói gọn các giao thức
Khi dữ liệu được trao đổi trong hệ thống phân tán, việc truyền và nhận dữ liệu phải được tuân theo các giao thức nhất định Các giao thức này được sở hữu bởi mỗi máy trong hệ thống Tuy nhiên, một khi các giao thức phải tiến hóa cho phù hợp với những yêu cầu phức tạp của người sử dụng thì chúng bắt đầu trở nên cồng kềnh, nặng nề và trở thành vấn đề nan giải Với giải pháp tác tử di động, các tác tử có thể mang trên mình các giao thức thích hợp và di chuyển tới các máy ở xa để thiết lập các kênh truyền nhận thông tin tương ứng
– Có thể thi hành tự trị và không đồng bộ
Trang 16Khi sử dụng tác tử di động, ta sẽ đưa các tác vụ cần thực hiện vào tác tử, rồi gửi lên mạng Sau khi được gửi đi, tác tử trở nên độc lập thi hành không đồng bộ và có khả năng tự trị Sau đó các thiết bị có thể kết nối trở lại để nhận tác tử về Như vậy sẽ khắc phục được các trường hợp các nút mạng bị gián đoạn tạm thời, và các lỗi do không đồng bộ
1.2.1 Khái niệm về hệ đa tác tử
Các tác tử có thể hoạt động và tồn tại trong một số môi trường Mặc dù có những trường hợp một tác tử có thể hoạt động có hiệu quả một mình, nhưng trong hệ thống các mạng máy tính, các tình huống như vậy rất hiếm gặp Thường gặp là trường hợp các tác tử tương tác với nhau Hệ thống hay môi trường mà các tác tử tương tác được với nhau gọi là hệ thống đa tác tử (multi-agent) Đây là một môi trường mạng gắn kết một cách tự do các tác tử để giải quyết một vấn đề mà từng tác tử riêng biệt không giải quyết được Việc sử dụng
hệ thống đa tác tử cho phép một vấn đề có thể được giải quyết một cách phân tán trên nhiều hệ thống phần mềm và phần cứng khác nhau Hiện nay, hệ thống
đa tác tử được coi là cách tốt nhất để mô tả và thiết kế các hệ thống tính toán phân tán [29]
1.2.2 Tương tác trong hệ đa tác tử
Trang 17Trong một hệ thống đa tác tử, các tác tử phải có hai khả năng cơ bản là tìm kiếm “đối tác”, tức là các tác tử khác, và hợp tác với chúng để thực hiện công việc
Việc hỗ trợ các tác tử trong việc tìm kiếm đối tác được thực hiện bởi các tác tử trung gian (middle agent) Các tác tử thông thường sử dụng tác tử trung gian để khai báo khả năng của mình hay tìm các tác tử khác cung cấp dịch vụ
mà chúng cần Một lợi thế của tác tử trung gian là chúng cho phép các hệ thống
đa tác tử có thể hoạt động một cách ổn định khi đối mặt với những vấn đề như
sự xuất hiện, biến mất hay chuyển động của các tác tử Dạng tác tử trung gian phổ biến có dạng “trang vàng” (yellow page) Dạng tác tử này hỗ trợ các tác tử thông thường trong việc tìm kiếm dịch vụ của các tác tử khác dựa trên những khả năng đã được đăng nhập
Tương tác là một trong những đặc trưng quan trọng nhất của một tác tử Các tác tử thường xuyên tương tác với nhau để chia sẻ thông tin và thực hiện nhiệm vụ chung Để tương tác, các tác tử phải sử dụng chung các ngôn ngữ và giao thức trao đổi, các cấu trúc chung về nội dung thông tin và cùng chia sẻ ngữ nghĩa
Ngôn ngữ trao đổi giữa các tác tử ACL (Agent Communication Language) chủ yếu là ngôn ngữ khai báo được phát triển dựa trên lý thuyết hành
vi ngôn ngữ (illocutionary acts) như yêu cầu, mệnh lệnh Ngôn ngữ khai báo được sử dụng phổ biến nhất hiện nay là KQML [15]
Cấu trúc ngữ nghĩa của thông điệp giữa các tác tử được định nghĩa bởi bản thể (ontology) Bản thể là các cấu trúc để mô tả khái niệm và quan hệ giữa chúng trong phạm vi vấn đề Bản thể mà các tác tử sử dụng để mô tả phạm vi vấn đề phải có cấu trúc giống nhau Một khi các tác tử trao đổi các bản thể chung, chúng sẽ sử dụng các bản thể này để hiểu nhau và thực hiện các hành vi xác định
1.2.3 Các lợi thế của các hệ thống đa tác tử
Hệ thống đa tác tử là các hệ thống tính toán phân tán, chúng có các đặc trưng nổi bật sau:
– Có tốc độ và hiệu quả xử lý cao: Các tác tử có thể hoạt động theo
kiểu không đồng bộ và song song có thể làm tăng tốc toàn bộ quá trình xử lý
– Chắc chắn và tin cậy: Sự hư hỏng của một vài tác tử sẽ không nhất
thiết làm cho toàn bộ hệ thống không còn hoạt động nữa vì các tác tử còn lại có thể tiếp quản các phần việc của chúng
Trang 18– Có tính điều chỉnh được và tính mềm dẻo cao: Hệ thống có thể bổ
sung thêm các tác tử khi phạm vi vấn đề được mở rộng và không ảnh hưởng đến
sự hoạt động của các tác tử khác
– Có chi phí hợp lý: Hệ thống đa tác tử có chi phí hợp lý hơn so với
các hệ thống tập trung do hệ thống đa tác tử có thể được ghép từ các hệ thống con đơn giản có giá thành thấp
– Có khả năng dùng lại: Một số tác tử cụ thể có thể được phát triển từ
đầu một cách riêng biệt bởi một số chuyên gia trong khi phần còn lại của hệ thống vẫn được tiếp tục sử dụng
1.2.4 Lĩnh vực áp dụng các hệ thống đa tác tử
Các hệ thống đa tác tử thích hợp cho các ứng dụng có những đặc trưng sau:
– Có tính phân tán cố hữu: các hệ thống có dữ liệu và thông tin được
xử lý ở các vị trí địa lý khác nhau, ở các thời gian khác nhau, được tổ chức thành các nhóm mà việc truy cập chúng cần các ngữ nghĩa và ngôn ngữ khác nhau (sự phân tán về ngữ nghĩa) hay được tổ chức thành các nhóm mà việc truy cập chúng cần các khả năng về nhận biết, tri thức khác nhau (sự phân tán về chức năng)
– Có tính phức hợp cố hữu: các hệ thống mà vấn đề chúng cần giải
quyết là quá lớn không thể xử lý được bằng một hệ thống riêng, tập trung do các giới hạn về công nghệ phần cứng và phần mềm Việc mở rộng các hệ thống tập trung là rất khó khăn, tốn thời gian, tiền của Hơn nữa việc mở rộng này rất không bền vững và sẽ không còn tác dụng khi phạm vi vấn đề lại tiếp tục được
mở rộng Trong trường hợp này giải pháp tốt nhất là xử lý chúng ở các hệ thống phân tán, khi này việc ứng dụng hệ thống đa tác tử là một trong những giải pháp hữu hiệu nhất
Kết luận
Tác tử và hệ đa tác tử là một lĩnh vực mới trong công nghệ phần mềm, các khái niệm, định nghĩa về chúng vẫn còn chưa thật đầy đủ Tuy nhiên trong chương này luận văn đã tìm hiểu và sưu tầm các khái niệm, định nghĩa về chúng
mà được cộng đồng nghiên cứu về tác tử đánh giá cao Phân tích các ưu điểm, nhược điểm, các lĩnh vực có thể áp dụng Đây là các kiến thức cơ sở, nền tảng rất quan trọng không thể thiếu được để chúng ta tiếp cận, tìm hiểu các vấn đề liên quan đến tác tử và hệ đa tác tử
Trang 19CHƯƠNG 2
KỸ NGHỆ PHẦN MỀM HƯỚNG TÁC TỬ
Trong chương này, chúng ta sẽ tìm hiểu về các phương pháp tiếp cận phát triển hệ đa tác tử để từ đó tìm ra các phương pháp phù hợp với các điều kiện, hoàn cảnh trong thực tế Ngoài ra trong chương này luận văn sẽ trình bày chi tiết phương pháp phát triển hệ đa tác tử MaSE (Multi Agent System Engineering), đây là một phương pháp phát triển các hệ đa tác tử dựa trên phương pháp phát triển các hệ thống hướng đối tượng, được sử dụng rất phổ biến và có nhiều ưu điểm
2.1 Cách tiếp cận phát triển hệ đa tác tử
Nhu cầu phát triển các ứng dụng phần mềm dựa trên công nghệ tác tử trong những năm gần đây đã dẫn đến sự ra đời của nhiều phương pháp luận, các
phương pháp luận này chủ yếu dựa vào ba cách tiếp cận [26]: Cách tiếp cận dựa
trên tác tử, cách tiếp cận phát triển từ hướng đối tượng và cách tiếp cận dựa trên công nghệ tri thức
Quá trình phát triển một hệ thống phần mềm thông thường bao gồm các
pha chính: Xác định yêu cầu, phân tích, thiết kế, cài đặt và tích hợp Trong các pha này thì phân tích và thiết kế hệ thống được xem là các pha chính thể hiện
quan điểm của người phát triển hệ thống Sau đây chúng ta sẽ xem xét đặc điểm của ba cách tiếp cận này:
2.1.1 Cách tiếp cận theo tác tử
Các nghiên cứu xây dựng phương pháp luận phát triển hệ đa tác tử theo các đặc trưng của tác tử xuất phát từ các nhận định sau:
- Tác tử có những đặc trưng riêng như tính tự chủ, tính chủ động và khả năng phản ứng Các đặc trưng này là khác hoàn toàn so với đối tượng và tạo cho tác tử khả năng tương tác chủ động và khả năng suy luận mà các đối tượng không có Vì vậy, không thể mô hình hóa tác tử bằng cách sử dụng các phương pháp luận dành cho hướng đối tượng
- Tác tử hoạt động như một xã hội với các luật chi phối riêng nên có thể xem xét tác tử từ khía cạnh xã hội và sử dụng các khái niệm trừu tượng mức
xã hội để mô hình hóa các tác tử trong hệ thống
Các khái niệm trừu tượng mức xã hội được sử dụng để mô hình hóa tác tử theo cách tiếp cận này bao gồm tác tử, nhóm, tổ chức, … Mức trừu tượng xã hội được xem như là một mức trừu tượng cao hơn so với mức đối tượng thông
Trang 20thường và phù hợp với việc biểu diễn các tác tử vì xã hội các tác tử bao gồm các thành phần có tính phản ứng, linh hoạt và tương tác chủ động
Dựa trên các khái niệm trừu tượng mức xã hội mà phương pháp luận này định nghĩa các bước, các pha của toàn bộ quá trình phát triển hệ thống Thông thường, với cách tiếp cận này, quá trình phát triển hệ thống được phân thành hai pha tách biệt: pha phân tích và pha thiết kế Pha phân tích tương ứng với mô hình tổ chức, pha thiết kế ứng với mô hình tác tử Tiêu biểu cho các phương pháp luận thuộc loại này là các phương pháp: Gaia, SODA, AALAADIN,…
2.1.2 Cách tiếp cận phát triển từ phương pháp hướng đối tượng
Khác với cách tiếp cận trên, cách tiếp cận phát triển từ phương pháp hướng đối tượng dựa trên quan điểm cho rằng các kỹ thuật đã được phát triển và được áp dụng rộng rãi cho kỹ nghệ phần mềm hướng đối tượng có thể được mở rộng cho các hệ phần mềm hướng tác tử
Cách tiếp cận này 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 Các công cụ sử dụng để biểu diễn đối tượng và phân tích thiết kế hệ thống hướng đối tượng như UML hoàn toàn có thể mở rộng để biểu diễn các đặc trương riêng của tác tử Các nghiên cứu xây dựng phương pháp luận phát triển từ phương pháp luận hướng đối tượng tập trung vào các công việc sau:
- Phát triển các công cụ dựa trên nền tảng sẵn có của hướng đối tượng
để áp dụng cho hệ đa tác tử, ví dụ như mở rộng UML thành AUML (Agent UML)
- Bổ sung các bước, các pha mang tính đặc trưng của tác tử và công nghệ tác tử như đích, vai trò và ontology
Tiêu biểu cho các phương pháp luận này là các phương pháp luận MaSE, MASSIVE, KGR, …
2.1.3 Cách tiếp cận dựa trên công nghệ tri thức
Dựa trên quan điểm cho rằng quá trình mô hình tri thức riêng của mỗi tác
tử và sự trao đổi tri thức giữa các tác tử trong hệ thống chính là cơ sở của mọi hoạt động của hệ thống Các nghiên cứu theo cách tiếp cận này sử dụng các khái niệm và quá trình trong công nghệ tri thức để xây dựng nên phương pháp luận cho hệ đa tác tử
Các phương pháp luận này tập trung vào các quá trình thu thập tri thức,
mô hình tri thức và lập luận được sử dụng bởi các thành phần tác tử trong hệ
Trang 21thống phần mềm Tiêu biểu cho cách tiếp cận này là các phương pháp CoMMAS, MAS-ComonKADS
Như vậy có ba cách tiếp cận trong phân tích và thiết kế hệ đa tác tử Mỗi cách tiếp cận lại có những ưu điểm, nhược điểm riêng Phần kế tiếp luận văn sẽ trình bày về phương pháp luận MaSE là một phương pháp sử dụng cách tiếp cận phát triển từ phương pháp hướng đối tượng Đây là một phương pháp có nhiều
ưu điểm nổi bật
2.2 Phương pháp MaSE
MaSE (Multi Agent System Engineering) là một trong những phương pháp luận phát triển phần mềm hướng tác tử được xây dựng dựa trên phương pháp triển phần mềm hướng đối tượng So với các phương pháp luận khác, phương pháp này có ưu điểm là dễ dàng hơn cho những người đã quen với phát trển phần mềm hướng đối tượng và tích hợp được phát triển ontology trong quá trình phát triển hệ đa tác tử [11]
2.2.1 Đặc điểm của phương pháp luận MaSE [7] [11]
MaSE là phương pháp luận để phân tích và thiết kế các hệ phần mềm hướng tác tử được phát triển bởi nhóm nghiên cứu thuộc viên công nghệ Hàng không Hoa Kỳ (Air Force Intistute of Technology - AFIT)
Trong cách tiếp cận xây dựng phương pháp luận phát triển hệ đa tác tử đã được trình bày ở phần trên, MaSE là một phương pháp luận được phát triển dựa trên cách tiếp cận hướng đối tượng Quan điểm xây dựng của phương pháp luận này là xem tác tử như mức trừu tượng cao hơn của một đối tượng: mỗi tác tử được xem là một đối tượng đặc biệt Khác với một đối tượng truyền thống trong
đó các phương thức có thể được gọi bởi các đối tượng khác, các tác tử tương tác với nhau thông qua hội thoại và hành động một cách tự chủ để hoàn thành mục đích của riêng mình cũng như mục đích chung của hệ thống Ngoài ra, các tác tử được xem như là một sự khái quát hóa đối tượng phù hợp với bài toán cụ thể, nó
có thể có hoặc không có khả năng thông minh Do đó, các tác tử và các thành phần không thông minh trong hệ thống được xử lý tương tự như nhau Việc quan niệm các tác tử như một mức trừu tượng cao hơn của đối tượng khiến cho việc phân tích thiết kế hướng tác tử có thể kế thừa từ các phương pháp luận phát triển phần mềm hướng đối tượng
Quá trình phát triển hệ đa tác tử theo MaSE bao gồm hai pha: pha phân tích và pha thiết kế:
Trang 22– Pha phân tích bao gồm các bước: Xác định Goal, Xác định các Use Case, Xây dựng Ontology và hoàn thiện Role
– Pha thiết kế bao gồm các bước: Xác định tác tử, Xây dựng hội thoại, Hoàn thiện tác tử và Triển khai hệ thống
Tuy nhiên, trong quá trình tiến hành, người thiết kế có thể chuyển đổi qua lại giữa các bước một cách tự do để có thể bổ sung các thiếu sót hay điều chỉnh lại các bước để đảm bảo tính nhất quán và toàn vẹn của hệ thống đang thiết kế Toàn bộ quá trình phân tích thiết kế hệ thống theo phương pháp MaSE được hỗ trợ bởi bộ công cụ Agent Tool Mỗi bước đều được biểu diễn bởi các sơ đồ tương ứng trong Agent Tool Bên cạnh đó, bộ công cụ này còn hỗ trợ người thiết
kế kiểm thử tương tác giữa các tác tử và sinh mã tự động cho hệ thống
Phần tiếp theo luận văn sẽ trình bày quy trình phát triển hệ phần mềm hướng tác tử theo phương pháp MaSE
Trang 23Triển khai hệ thống
Xây dựng ontology
Xây dựng
sơ đồ role
Xác định các lớp agent
Xây dựng các phiên hội thoại
Hoàn thiện các agent
Pha phân tích
Pha thiết kế
Hình 2.1: Các bước phát triển hệ thống đa tác tử
Trang 24+ Tập hợp đích:
Bước này thực hiện trích các yêu cầu chức năng có trong tài liệu đặc tả hệ thống, mỗi yêu cầu chức năng được mô tả bằng một đích Các yêu cầu chức năng được xác định bằng cách trả lời các câu hỏi: “Hệ thống phải làm gì” mà chưa cần quan tâm đến cách thức thực hiện nhiệm vụ đó như thế nào
Các đích đầu tiên được xác định một cách trực quan thông qua việc xác định mục tiêu cần đạt được của hệ thống Các đích tiếp theo được xác định thông qua đích trước bằng cách trả lời câu hỏi “muốn đạt được đích X thì cần phải có cái gì?” Quá trình này được gọi là quá trình phân rã, các đích được phân
rã từ các đích ban đầu sẽ trở thành các đích con Sự phân rã sẽ diễn ra với tất cả các đích đã được phát hiện nhưng chưa được phân rã
Quá trình phân rã sẽ dừng lại khi các chức năng con sinh ra không phải là nhiệm vụ mức hệ thống, nghĩa là không thể đóng vai trò đích của hệ thống Các đích không cần phân rã thêm có đặc điểm là khi cố gắng phân rã đích này ta sẽ phải trả lời câu hỏi “muốn hoàn thành việc này thì cần làm cái gì?”, tức là tìm ra một cách thức thực hiện đích đó chứ không phải là một đích con
+ Tổ chức cây đích
Bước con này có nhiệm vụ tổ chức các đích đã xác định trong bước con trước vào một sơ đồ phân cấp đích Một sơ đồ phân cấp đích là một đồ thị có hướng và không có chu trình Trong đó:
Các đỉnh biểu diễn các đích, có tên trùng với tên của đích mà nó biểu diễn
Các mũi tên chỉ ra quan hệ đích cha con và quan hệ với các đích khác
Có hai trường hợp xảy ra: Nếu đã xác định được đích tổng thể của hệ thống thì đặt nó ở gốc của cây đích; Nếu đích tổng thể không xác định được trực tiếp từ yêu cầu thì phải kết hợp các đích ở mức cao nhất lại thành một đích tổng thể cho hệ thống Các đích còn lại có thể phân cấp thành các quan hệ cha con hoặc ngang hàng bằng cách lặp lại các thủ thục sau:
Bước 1: Các đích được phân rã từ các đích khác trong bước con trước
phải là đích con với đích cha tương ứng
Bước 2: Nếu các đích không được phân rã từ bất kỳ một đích nào (các
đích được xác định ngay từ ban đầu), để xác định quan hệ cha - con, thì trả lời câu hỏi “chúng có thực hiện một phần nhiệm vụ cho một đích nào đó không?” Nếu có, nó sẽ trở thành đích con của đích mà nó hỗ trợ Nếu không, phải xem
Trang 25xét lại rằng đích đó có cần thiết cho hệ thống hay không Nếu không cần thiết thì
nó sẽ bị loại bỏ và ngược lại, nếu cần thiết thì nó sẽ tạo thành một nhánh mới ngay từ nút gốc của cây đích
Trong cây đích có thể có bốn loại đích sau:
Đích chung: là một đích được tạo ra từ các đích ngang hàng (thường là đích tổng thể của hệ thống)
Đích phi chức năng: là các đích không thực hiện trực tiếp một chức năng nào của hệ thống, nhưng là nhân tố kiểm tra tính đúng đắn của hệ thống Các đích này thường xuất hiện từ các yêu cầu phi chức năng chẳng hạn như độ tin cậy hay yêu cầu thời gian thực cho hệ thống
Đích được kết hợp: là các đích được tạo thành khi kết hợp hai hay nhiều đích có chức năng giống nhau hoặc tương tự nhau
Đích bị phân hoạch: là đích được phân hoạch hoàn toàn Theo đó, nếu tất
cả các đích con của nó được hoàn thành thì bản thân nó cũng được hoàn thành
mà không cần thực hiện thêm nhiệm vụ nào nữa
– Bước 2: Xây dựng use case
Use case có thể hiểu là các mô tả về hành vi mà hệ thống cần thực hiện trong một trường hợp cụ thể Các hành vi này được xuất phát từ mong muốn của người dùng
Mục đích của bước này là tạo ra một tập các use case và các sơ đồ dãy tương ứng nhằm hỗ trợ cho người phân tích hệ thống phát hiện được tập các role ban đầu và các đường truyền thông có thể có trong hệ thống
Việc sử dụng use case trong MaSE được kế thừa từ phương pháp phân tích hướng đối tượng Có hai loại use case khác nhau dựa vào hoàn cảnh mà chúng mô tả:
Use case chủ động: mô tả hành vi của hệ thống trong trường hợp lý tưởng, nghĩa là các điều kiện đều thỏa mãn
Use case bị động: mô tả hành vi mà hệ thống cần thực hiện trong trường hợp có lỗi, có ngoại lệ hoặc có sự cố nghiêm trọng
Bước này cũng bao gồm hai bước con là tạo các use case và xây dựng biểu đồ tương tác tuần tự
+ Tạo các use case
Trang 26Các use case có thể được trích ra từ nhiều nguồn khác nhau: Đặc tả yêu cầu của hệ thống, mong muốn của người dùng, bản mẫu nhanh Về nguyên tắc, mỗi một đích được xác định trong Bước 1 sẽ tương ứng với một use case, ngoại trừ các đích bị phân hoạch
Trong các use case tương ứng của mỗi đích cha, dãy hành động thuộc use case của đích con sẽ được coi là một hành động đơn, nghĩa là nó được xem tương đương với một hành động đơn bình thường khác và cũng được biểu diễn bằng một sự kiện đầu vào và một hành động được thực hiện
Các use case ứng với các đích thuộc lá của cây đích sẽ được trích dẫn trước, sau đó ngược dần lên phía gốc của cây đích và dừng lại khi gặp một đích
bị phân hoạch Đích bị phân hoạch sẽ không cần use case bởi vì use case tương ứng với nó chính là phép hợp đơn giản của các use case tương ứng với các đích con của nó mà không cần bổ sung thêm bất kì sự kiện hay hành động nào
+ Xây dựng biểu đồ tương tác tuần tự
Một biểu đồ tuần tự mô tả một dãy các sự kiện diễn ra giữa các role đã được tương tác giữa các role này với nhau Một biểu đồ tuần tự bao gồm:
Các role liên quan đến các use case cần biểu diễn, các role này được đặt phía trên của biểu đồ
Các đường nối từ các role thẳng xuống dưới là các đường biểu thị cho thời gian hoạt động của các role
Các mũi tên nối từ role này đến role kia biểu thị một tương tác giữa hai role, theo chiều mũi tên Nhãn kèm theo mũi tên sẽ biểu thị tên của sự kiện tương tác đó
Tuần tự các sự kiện xảy ra trong use case sẽ là tuần tự các mũi tên đi từ trên xuống dưới
Việc chuyển từ một use case sang một biểu đồ tuần tự có thể tiến hành trực tiếp như sau: Mỗi use case có thể tương ứng với một biểu đồ tuần tự Tuy nhiên, trong một số trường hợp mà use case quá phức tạp, nó có thể cần đến nhiều hơn một biểu đồ dãy để mô tả hoạt động Trong trường hợp này, cũng có thể tách use case thành các use case nhỏ hơn và đơn giản hơn, mỗi use case chỉ cần một biểu đồ dãy như trường hợp lí tưởng ban đầu
Việc xây dựng biểu đồ tuần tự được bắt đầu bằng việc xác định các role cần thiết phải tham gia vào biểu đồ Role có thể hiểu là một tập các nhiệm vụ có
Trang 27liên quan chặt chẽ đến nhau mà các tác tử trong hệ thống cần đảm nhiệm để đạt tới đích Mỗi role có thể thực hiện một hay nhiều đích của hệ thống
Để xác địch các role, người phát triển có thể sử dụng kỹ thuật trích danh
từ Từ các use case đã có trong bước trước, người phát triển sẽ tiến hành duyệt
và tìm ra các danh từ chỉ các đối tượng có chức năng cụ thể nào đó trong use case đó Tiếp theo, người phát triển sẽ xem xét lại danh mục các danh từ này và loại đi các danh từ chỉ cùng một đối tượng Các danh từ còn lại sẽ là các role sẽ
có mặt trong sơ đồ tuần tự tương ứng với use case đó Sau khi đã có các role thì trong bước tiếp theo người phát triển sẽ tiến hành biểu diễn tuần tự các sự kiện của sơ đồ tuần tự trong Agent Tool
– Bước 3: Xây dựng Ontology
Ontology có thể xem là một tập các khái niệm để biểu diễn thông tin và tri thức trong trao đổi giữa các tác tử Nói cách khác, ontology là một hệ tri thức chung giữa các tác tử, bao gồm các khái niệm được dùng trong một miền tri thức nhất định Theo quan điểm MaSE, ontology là tập các khái niệm có thể sử dụng như là các tham số chứa trong các thông điệp trao đổi giữa các tác tử
Trong MaSE, xây dựng ontology bao gồm bốn bước chính:
+ Xác định mục đích và phạm vi của ontology
+ Thu thập dữ liệu
+ Xây dựng ontology khởi đầu
+ Hoàn thiện ontology
Kết quả các quá trình này là một sơ đồ phân các các khái niệm có thể đáp ứng yêu cầu hoạt động của hệ thống Khi áp dụng kỹ thuật này trong các hệ thống tích hợp thông tin thì cần có những thay đổi cho phù hợp
Ontology được sử dụng trong hầu hết tất cả các bước tiếp theo của quá trình phân tích thiết kế hệ phần mềm đa tác tử Các tham số truyền qua lại giữa các tác tử trong bước xây dựng được xác định một cách tường minh bởi các kiểu
dữ liệu cơ bản của Java hoặc các kiểu được định nghĩa trong ontology của hệ thống Chính vì vậy, ở các bước sau của phần thiết kế, ta sẽ sử dụng ontology và qua đó hiệu chỉnh lại ontology nếu thấy cần thiết Sau đây, ta sẽ xem xét cụ thể từng bước của quá trình xây dựng ontology
Bước 1: Xác định mục đích và phạm vi của Ontology
Bước đầu tiên trong việc xây dựng ontology là xác định được lĩnh vực mà ontology cần biều diễn Nghĩa là người phân tích phải trả lời được câu hỏi tại
Trang 28sao ontology được xây dựng và phạm vi ý định sử dụng ontology của hệ thống Khi một hệ thống kế thừa ontology từ một hệ thống khác, ontology được kế thừa
đó phải được mô tả chi tiết và chính xác vì biểu diễn của nó Từ đó, người phân tích so sánh phạm vi này với phạm vi lĩnh vực của hệ thống mình đang xây dựng:
+ Nếu phạm vi của mình rộng hơn thì phải bổ sung thêm các khái niệm + Nếu phạm vi hẹp hơn thì phải loại bỏ các khái niệm không cần thiết
ra khỏi ontology được kế thừa
Để xác định phạm vi của ontology cần thực hiện các bước như sau:
+ Xem xét toàn bộ các use case đã được mô tả trong Bước 2 và sơ đồ đích của hệ thống trong bước một
+ Xác định toàn bộ các thông tin và kiểu dữ liệu mà hệ thống sẽ dùng, đồng thời xác định được mức độ chi tiết cần mô tả của các kiểu dữ liệu này
Người phân tích có thể sử dụng kỹ thuật khoanh vùng và thu hẹp dần các miền tri thức để xác định phạm vi của ontology Để xác định mức độ chi tiết của các tri thức và khái niệm, người phân tích tiếp tục sử dụng các kỹ thuật:
Phân rã miền tri thức ban đầu thành các miền con cho đến khi không thể phân rã thêm nữa
Khoanh vùng các miền tri thức có liên quan đến bài toán và loại bỏ các vùng không liên quan
Như vậy bước này tương ứng với pha đặc tả trong vòng đời phát triển ontology tổng quát
Bước 2: Thu thập dữ liệu
Sau khi xác định được các loại dữ liệu và mức độ chi tiết của chúng, người thiết kế phải lập ra một danh sách liệt kê tất cả các danh từ có mặt trong cây phân cấp đích và các use case Danh sách này được gọi là “Danh sách thuật ngữ” của hệ thống
Từ tập thuật ngữ này, người thiết kế phải chọn ra danh từ có thể biểu diễn một kiểu dữ liệu cần thiết cho hệ thống bằng cách xem xét tất cả các kiểu dữ liệu cần truyền đi trong các use case Bước này thực chất là tìm ra các khái niệm có trong các message và các khái niệm ở mức nhỏ hơn để các tác tử có thể hiểu được các message mà nó nhận được Sau bước này ta nhận được các khái niệm cần có trong ontology
Trang 29Bước này ứng với pha hình thành khái niệm trong phương pháp luận xây dựng ontology tổng quát
Bước 3: Xây dựng ontology khởi đầu
Để xây dựng được ontology khởi đầu, người thiết kế phải chuyển toàn bộ các khái niệm đã thu được trong phần trước vào tập các lớp và các thuộc tính của chúng Vấn đề chính là làm sao xác định được khái niệm nào là lớp và khái niệm nào nên là thuộc tính, điều này phụ thuộc vào việc xác định mức độ chi tiết của mỗi khái niệm Thông thường, các khái niệm biểu diễn mức độ chi tiết thấp nhất thì nên lấy làm thuộc tính, các khái niệm là tổ hợp của nhiều khái niệm con thì nên xem là lớp
Tuy nhiên, không phải mỗi khái niệm đều phải mô tả đầy đủ các thuộc tính như ý nghĩa thực tế của nó Trong ontology, chỉ các thuộc tính cần thiết để thực hiện các đích con và đích tổng thể của hệ thống mới được đưa vào làm thuộc tính cho các đối tượng tương ứng Để xây dựng được ontology khởi đầu, người phân tích có thể lựa chọn một trong hai cách:
+ Kế thừa từ một ontology của một hệ thống khác: người phân tích phải xác định rõ phạm vi biểu diễn của ontology của hệ thống được kế thừa và phạm vi tri thức của hệ thống mình đang xây dựng Nếu phạm vi tri thức của hệ thống được kế thừa rộng hơn thì loại bỏ các thông tin dư thừa và bổ sung các thông tin chi tiết hơn Nếu phạm vi tri thức của hệ thống được kế thừa nhỏ hơn thì phải bổ sung các tri thức về miền lĩnh vực mới
+ Xây dựng ontology từ đầu: người phân tích phải chuyển toàn bộ các khái niệm đã thu được trong phần trước vào tập các lớp và các thuộc tính của chúng Thông thường, các khái niệm biểu diễn mức độ chi tiết thấp nhất thì nên lấy làm thuộc tính, các khái niệm là tổ hợp của nhiều khái niệm con thì nên tạo thành lớp
Bước này ứng với pha hình thức hóa và pha cài đặt trong phương pháp luận xây dựng ontology tổng quát
Bước 4: Kiểm định ontology
Trong bước này, người phân tích phải chứng thực được rằng ontology vừa xây dựng đã thỏa mãn yêu cầu của hệ thống bằng cách xem lại toàn bộ các tình huống đã được mô tả trong các use case và sơ đồ tuần tự:
+ Nếu phát hiện thấy một thiếu sót nào đó thì khái niệm tương ứng phải được bổ sung ngay vào ontology
Trang 30+ Nếu phát hiện khái niệm nào không cần thiết phải loại bỏ ngay khỏi ontology
Quá trình này được lặp lại hoặc cho đến pha cài đặt hệ thống hoặc cho đến khi người thiết kế thấy rằng, ontology đã hoàn toàn thỏa mãn yêu cầu hoạt động của hệ thống
Bước 4 tương ứng với pha bảo trì trong phương pháp luận xây dựng ontology tổng quát đã nói ở trên
Kế quả của bước 4 này là một cây phân cấp ontology hoàn chỉnh, có thể đáp ứng được yêu cầu sử dụng trong các bước tiếp theo của quá trình phân tích thiết kế và đảm bảo đầy đủ các khái niệm cần cho tương tác của hệ đa tác tử
Những bước xây dựng ontology theo phương pháp luận MaSE là khá rõ ràng và tách biệt Tuy nhiên, trên thực tế các bước này đều nằm trong vòng đời phát triển ontology nên có thể được thực hiện lồng vào nhau Mặt khác, do đặt bước xây dựng ontology trong vòng đời phát triển chung của hệ thống nên nếu
có thay đổi trong use case và các biểu đồ dãy thì toàn bộ quá trình xây dựng ontology cũng phải thay đổi theo Và ngược lại, nếu cây phân cấp ontology thay đổi thì các bước sau của phân tích thiết kế cũng cần thay đổi cho phù hợp
– Bước 4: Xây dựng sơ đồ role
Role là khái niệm dùng để chỉ các thành viên thực hiện một hoặc một số vai trò nhất định trong hệ thống
Mục tiêu của bước này là chuyển tập các đích của hệ thống vào tập các role cùng với các nhiệm vụ của nó Thông thường, việc chuyển đổi từ đích sang role là tương ứng 1 - 1, nghĩa là mỗi role thực hiện một đích
Tuy nhiên, trong một số trường hợp, một role có thể tương ứng với nhiều đích khi các đích này có quan hệ chặt chẽ hoặc gần giống nhau Trong bước này, người phát triển hệ thống sẽ phải xem xét lại các role đã có trong bước xây dựng
sơ đồ tuần tự, thêm, bớt, sửa đổi cho phù hợp
Các giao tiếp với bên ngoài sẽ được xây dựng thành một role riêng biệt và hoạt động tương tự như một tương tác từ một nguồn tài nguyên bên ngoài với phần còn lại của hệ thống Các thành phần được coi là nguồn tài nguyên bên ngoài bao gồm: cơ sở dữ liệu, các file, hệ thống bổ sung và con người Sau khi xác định được các role phù hợp của hệ thống, phải xác định được tập các giao thức giao tiếp ban đầu giữa các role này Các tương tác này được trích từ các use case của bước 2
Trang 31Nếu giữa các role trong biểu đồ dãy có một hoặc một số sự kiện liên quan với nhau thì giữa hai role tương ứng trong biểu đồ này sẽ có một giao thức tương tcs, bên khởi đầu trùng với bên khởi đầu các sự kiện trong use case Sơ đồ role ban đầu này sẽ được chi tiết hóa bằng cách gán các task cho các role, Task
là một nhiệm vụ cụ thể, chi tiết mà các role phải thực hiện nhằm đạt được đích
mà nó có trách nhiệm phải thực hiện
Thông thường mỗi đích nên cho tương ứng với một task, bởi vì muốn đạt được một đích, thì ít nhất một task cần phải hoàn thành Trong trường hợp đặc biệt, đối với các đích phức tạp thì có thể cần đến hơn một task để giải quyết nó Nên tách đích đó thành các đích bé hơn, đơn giản hơn sao cho một task đã có thể giải quyết được Dựa vào các đích mà mỗi role phải thực hiện, các task được tạo
ra bằng cách trả lời câu hỏi “Role sẽ thực hiện các đích đó như thế nào?” Sau khi các task được gán vào các role xác định, các giao thức giữa các role trong sơ
đồ role ban đầu sẽ được xác định cụ thể bởi các task liên quan
– Sơ đồ bên trong task
Sau khi xác định được các role, các task sẽ được gán cho mỗi role để mô
tả cách mỗi role cư xử và hoạt động nhằm đạt được mục đích mà nó hướng tới Các role có thể hoạt động với hai loại tương tác:
Tương tác trong: Các tương tác giữa các task trong cùng một role
Tương tác ngoài: Các tương tác giữa các task của các role khác nhau Trong sơ đồ role chi tiết, các tương tác trong được biểu diễn bằng các mũi tên nét đứt, còn các tương tác ngoài được biểu diễn bởi mũi tên nét liền Các tương tác này sẽ định hướng cho việc thiết kế các conversation trong pha thiết
kế sau này Có hai loại task khác nhau:
Task chủ động: là task tự động bắt đầu khi role được sinh ra Task này không cần điều kiện kích hoạt ban đầu, nó tự động đi đến trạng thái ban đầu và thực hiện các hành động cho đến khi gặp trạng thái kết thúc hoặc role tương ứng của nó bị hủy bỏ
Task bị động là task chỉ thực hiện khi có sự kiện kích hoạt từ bên ngoài (Thường là một thông điệp từ task khác) Task này hoạt động cho đến khi gặp trạng thái kết thúc hoặc có một task khác yêu cầu nó kết thúc
Hoạt động bên trong của các task được mô tả theo sơ đồ máy trạng thái hữu hạn, bao gồm các trạng thái và các chuyển tiếp giữa các trạng thái Tại các trạng thái, các task được thực hiện thông qua các hàm cụ thể hoặc chờ cho đến khi một sự
Trang 32kiện nào đó xảy ra Cú pháp của các trạng thái chuyển tiếp là tùy thuộc vào kiểu tương tác mà chuyển tiếp đó tham gia là tương tác trong hay tương tác ngoài Các chuyển tiếp tham gia vào tương tác được mô tả theo cú pháp:
<trigger><[guard]><^transmissions>
Nghĩa là, nếu có sự kiện trigger xảy ra mà nó đang giữ điều kiện guard thì
nó sẽ gửi đi các thông điệp transmissions và chuyển sang trạng thái tiếp theo
Trong các sơ đồ task, có một số trường hợp các điều kiện chuyển tiếp đồng loạt được thỏa mãn, nghĩa là các chuyển tiếp có thể diễn ra đồng thời thì thứ tự
ưu tiên các chuyển tiếp cần thực hiện được xác định như sau:
+ Chuyển tiếp có điều kiện [guard] là một sự kiện thuộc loại tương
tác trong
+ Chuyển tiếp có transmission là một sự kiện thuộc loại tương tác
trong
+ Chuyển tiếp có receive() từ các role khác (tương tác ngoài)
+ Chuyển tiếp send() gửi thông điệp đến các role khác
+ Chuyển tiếp chỉ có điều kiện [guard]
Như vậy ưu tiên trước hết được dành cho các chuyển tiếp có trao đổi thông tin với task khác, mức thứ hai là các tương tác thuộc loại tương tác trong, mức thứ ba là các tương tác có nhận thông điệp được ưu tiên hơn tương tác gửi thông điệp
Kết quả các pha phân tích là một tập các role và các task tương ứng nhằm hoàn thành mục đích của hệ thống Hoạt động bên trong và các tương tác bên ngoài giữa các task là nhân tố quan trọng cho pha thiết kế sau này
b Pha thiết kế
– Bước 5: Xác định các lớp tác tử
Trong bước này, các lớp tác tử sẽ được tạo ra từ các role đã được xác định trong bước 4 của pha phân tích, bao gồm:
+ Phân chia các role cho các lớp tác tử
+ Xác định các phiên hội thoại xuất hiện giữa các lớp tác tử
Kết quả của bước này là sơ đồ các lớp tác tử Sơ đồ này mô tả hệ thống một cách tổng thể theo các lớp tác tử và các phiên hội thoại liên lạc giữa chúng
Trang 33Để đảm bảo các đích hệ thống đều được thực hiện trong pha thiết kế, mỗi role phải được đảm nhiệm bởi ít nhất một lớp tác tử, đôi khi cũng có các role được đảm nhiệm bởi nhiều lớp tác tử Trong trường hợp một lớp tác tử đảm nhiệm nhiều role thì các tác tử của lớp đó sẽ luân phiên đảm nhiệm công việc của từng role Trường hợp này xảy ra khi các role phục vụ cho các đích liên quan chặt chẽ với nhau hoặc có khối lượng tương tác với nhau lớn, chúng được xếp vào cùng một lớp tác tử nhằm giảm chi phí truyền thông Người thiết kế có thể dễ dàng thay đổi các role giữa các lớp tác tử, điều này cho phép họ điều chỉnh hệ thống theo mục đích của mình như sau:
Nếu giữa hai role có lưu lượng trao đổi thông tin lớn thì nên xếp chúng vào cùng một lớp tác tử để giảm chi phí truyền thông
Nếu cả hai role có khối lượng tính toán lớn và phức tạp thì nên xếp chúng vào hai lớp tác tử khác nhau để giảm khối lượng tính toán đồng thời tận dụng được khả năng xử lý đồng thời giữa các tác tử
Nhiệm vụ còn lại của bước này là xác định các phiên hội thoại xuất hiện giữa các lớp tác tử để hoàn thiện sơ đồ lớp tác tử của hệ thống Các phiên hội thoại được xác định từ các quan hệ giữa các role mà các lớp tác tử tương ứng cần thực hiện Chẳng hạn, hai lớp tác tử A và B lần lượt thực hiện các role 1 và
2 tương ứng Nếu giữa role 1 và 2 có một giao thức được xác định trong sơ đồ role thì giữa hai lớp tác tử A và B cũng xuất hiện một phiên hội thoại theo chiều tương ứng
Các phiên hội thoại biểu diễn tương tác giữa các lớp tác tử diễn ra ở mức ngữ nghĩa thông qua ontology Dựa vào ontology đã được xây dựng trong bước
3, các lớp tác tử có cách biểu diễn tri thức khác nhau sẽ trao đổi và hiểu được lẫn nhau dựa trên tri thức chung trong ontology
Việc chi tiết hoá các phiên hội thoại là nội dung của bước 6 và chi tiết hóa kiến trúc bên trong của các lớp tác tử là nội dung của bước 7 Hai bước tiếp theo này có thể được tiến hành song song
– Bước 6: Xây dựng các phiên hội thoại
Một phiên hội thoại biểu diễn một phiên liên lạc giữa hai tác tử, nghĩa là các tác tử sẽ tiến hành gửi đi các yêu cầu và đáp ứng lại các yêu cầu từ phía tác
tử kia Trong MaSE, mọi liên lạc giữa hai tác tử bất kỳ đều phải thông qua các phiên hội thoại được hoạt động theo cơ chế socket và cổng, với các chuẩn của giao thức TCP/IP