Để đạt được đích này, phương pháp luận MaSE đã sử dụng một số mô hình dựa trên đồ thị để mô tả các loại agent trong hệ thống và giao diện của chúng với các agent khác, cũng như những địn
Trang 1Phân tích và thiết kế phần mềm hướng agent sử dụng phương pháp luận MaSE và công cụ agentTool
Scott A.DeLoach
Học viện công nghệ Không quân
Khoa kỹ thuật máy tính và điện tử
Căn cứ Không quân Wright – Patterson, OH 45433-7765
Sdeloach@computer.org
Tóm tắt
Bài báo này cung cấp cái nhìn tổng quan về công việc đang được thực hiện tại Học viện công nghệ Không quân về phương pháp luận kỹ thuật các hệ đa agent và công cụ xây dựng kèm theo là agent Tool Nghiên cứu tập trung vào tìm hiểu các phương pháp và kỹ thuật để xây dựng các hệ đa agent cụ thể Nghiên cứu sử dụng
sự trừu tượng được đưa ra bởi các hệ đa agent để xây dựng các hệ thống phần mềm phân tán và thông minh
Giới thiệu: Các hệ đa agent đưa ra nhiều nguyên tắc để nỗ lực xây dựng các ứng dụng mạnh mẽ, thông minh và phân tán Tuy vậy, các cách nghĩ và thiết kế phần mềm truyền thống không phù hợp với mô hình đa agent Trong vài năm qua, đã có một vài nỗ lực để xây dựng những hệ thống phần mềm như trên ((Iglesias, Garijo
& Gonzalez 1998) Tuy nhiên, hầu hết các công cụ và các phương pháp luận đều tập trung vào các kiến trúc agent cụ thể hoặc là không đủ chi tiết để hỗ trợ việc thiết kế các hệ thống phức tạp Trong nghiên cứu của chúng tôi, chúng tôi đã phát triển cả phương pháp luận về một chu trình hoàn chỉnh và đưa ra một môi trường
hỗ trợ việc phân tích, thiết kế và phát triển các hệ thống đa agent hỗn tạp Phương pháp luận mà chúng tôi xây dựng được gọi là phương pháp luận MaSE (DeLoach, Wood, & Sparkman 2000) và công cụ chúng tôi xây dựng để hỗ trợ cho phương pháp luận đó là công cụ agentTool (Wood & DeLoach 2001)
Trong nghiên cứu của mình, chúng tôi không đưa ra cách nhìn nhận về trí tuệ nhân tạo của agent theo đó một agent phải có tính tự trị, tính chủ động, tính phản xạ và tính xã hội Đối với chúng tôi, agent chỉ là những tiến trình phần mềm đơn giản giao tiếp với nhau để đáp ứng được đích chung của hệ thống Thường xảy ra
Trang 2trường hợp mà các nhiều agent không phức tạp có thể tương tác với nhau như kiểu
nó là hệ thống có hành vi thông minh Chúng tôi xem các agent như là khái niệm trừu tượng mà có thể thông minh hoặc không thông minh Theo cách xem xét này, chúng tôi xử lý những thành phần thông minh và không thông minh của hệ thống
là ngang bằng nhau trong cùng một framework Công việc của chúng tôi hướng đến vấn đề lớn hơn đó là xây dựng các hệ thống có khả năng linh động, phân tán và phức tạp mà sẽ trở nên phổ biến trong ngành tính toán tương lai Để xây dựng được những hệ thống phức tạp này, các agent phân tán phải làm việc một cách hợp tác với các agent khác trong một môi trường không đồng nhất
Sycara (Sycara 1998) mô tả 6 vấn đề trong các hệ đa agent đó là:
1 Vấn đề phân rã và giao nhiệm vụ cho các agent riêng rẽ
2 Phối hợp hoạt động điều khiển và giao tiếp của agent
3 Làm cho các hệ đa agent hoạt động một cách chặt chẽ
4 Lập luận về các agent khác và trạng thái phối hợp
5 Hòa giải xung đột về đích giữa các agent
6 Xây dựng các hệ thống agent trong thực tiễn
Nghiên cứu của chúng tôi nỗ lực trả lời cho 6 vấn đề nêu trên, tìm cách để xây dựng các hệ đa agent thực tế và tạo nên một framework 5 vấn đề đầu tiên Chúng tôi sử dụng các khái niệm trừu tượng được đưa ra bởi các hệ đa agent để xây dựng các hệ thống phần mềm phân tán và thông minh Để đạt được đích này, phương pháp luận MaSE đã sử dụng một số mô hình dựa trên đồ thị để mô tả các loại agent trong hệ thống và giao diện của chúng với các agent khác, cũng như những định nghĩa độc lập với kiến trúc trong thiết kế bên trong agent
Kỹ thuật xây dựng hệ đa agent
Nói chung, nghiên cứu của chúng tôi tại Học viện Không quân tập trung vào việc phát triển các phương pháp luận, các kỹ thuật và các công cụ để xây dựng các hệ
đa agent cụ thể Cuối cùng, chúng tôi đã xây dựng nên phương pháp luận MaSE về việc xây dựng các hệ thống đa agent Phương pháp luận MaSE định nghĩa các hệ
đa agent dưới dạng các lớp agent và cách thức tổ chức của chúng Chúng tôi định nghĩa cách tổ chức của chúng về mặt mà những agent nào có khả năng giao tiếp sử dụng hội thoại Có hai pha trong phương pháp luận MaSE: pha phân tích và pha
Trang 3thiết kế Ở pha phân tích bao gồm 3 bước: Xác định các Goal, xác định các use case và hoàn thiện các Role
Bước đầu tiên, xác định Goal tiếp nhận các yêu cầu người dùng rồi chuyển những yêu cầu đó thành các Goal ở mức cao nhất của hệ thống Sau khi đã định nghĩa được các Goal mức hệ thống, chúng ta trích xuất ra những use case mức hệ thống
và định nghĩa ra các sơ đồ tuần tự trong bước xác định use case này Bước này cũng định nghĩa tập khởi tạo các Role của hệ thống và các đường giao tiếp Sử dụng các Goal hệ thống và các Role được xác định trong các use case, chúng ta hoàn chỉnh và mở rộng tập Role khởi tạo và định nghĩa ra những tác vụ để đạt được mỗi Goal trong bước hoàn thiện Role
Hình 1 Các bước trong phương pháp luận MaSE
Trang 4Trong pha thiết kế, chúng ta chuyển đổi các mô hình phân tích sang những kiến trúc hữu ích cho việc thực hiện cài đặt thực tế hệ đa agent Pha thiết kế gồm có 4 bước: tạo lớp agent, xây dựng các phiên hội thoại, hoàn thiện các agent và thiết kế
hệ thống Ở bước đầu tiên trong pha này, tạo lớp agent, chúng ta định nghĩa các lớp agent cụ thể từ những Role đã được xác định ở bước 3 trong pha phân tích Sau khi xác định được số lượng và các loại lớp agent, chúng ta có thể xây dựng hội thoại giữa những lớp agent này hoặc là định nghĩa những thành phần bên trong mà bao gồm các lớp agent Sau khi đã hoàn thành định nghĩa cấu trúc hệ thống, chúng ta định nghĩa việc hệ thống được triển khai như thế nào Trong bước này, người thiết
kế định nghĩa ra số lượng các agent, vị trí của chúng, và những đối tượng cụ thể của hệ thống
Xác định các Goal
Bước đầu tiên trong phương pháp luận MaSE là xác định các Goal Bước này tiếp nhận những yêu cầu ban đầu của hệ thống và chuyển nó thành một tập có cấu trúc bao gồm các Goal hệ thống Cấu trúc này được thể hiện trong một mô hình phân cấp Goal (hình 2) Trong phương pháp luận MaSE, một Goal luôn được định nghĩa
là một mục tiêu mức hệ thống Các mức thấp hơn có thể kế thừa hoặc chịu trách nhiệm về các Goal, nhưng các Goal luôn có ngữ cảnh mức hệ thống
Trang 5Hình 2 Sơ đồ phân cấp Goal
Có 2 bước trong bước xác định Goal là: xác định các Goal và phân cấp Goal Một nhà thiết kế có thể xác định các Goal bằng cách rút ra những điều cần thiết trong tập các yêu cầu Những yêu cầu này có thể bao gồm các tài liệu kỹ thuật chi tiết, các yêu cầu người dùng hoặc những đặc tả đã được hình thức hóa Khi đã xác định
và phát biểu được một cách tường minh thì các các Goal có khả năng ít thay đổi hơn ở những bước chi tiết và các hoạt động để đạt được chúng ((Kendall, lanivelan
& Klikivayi 1998) Tiếp đó, người phân tích phân tích và tạo cấu trúc phân cấp Goal vào sơ đồ phân cấp Goal dựa trên những Goal đã được xác định Trong sơ đồ phân cấp Goal, người phân tích thực hiện sắp xếp chúng dựa trên độ quan trọng của Goal Ở mỗi mức bao gồm những Goal tương đương với nhau về phạm vi Người phân tích cũng xác định các Goal con cần có để đạt được Goal cha Thậm chí, người phân tích sẽ phải kết hợp mỗi Goal với một Role và một tập các lớp agent chịu trách nhiệm hoàn thành Goal đó
Xác định các use case
Bước xác định use case là một bước quan trọng trong việc chuyển đổi các Goal thành các Role và các tác vụ liên quan Ở bước này, người phân tích thực hiện vẽ
ra những use case từ những yêu cầu hệ thống và người sử dụng Use case là những
mô tả về chuỗi các sự kiện mà định nghĩa ra hành vi mong muốn có của hệ thống Chúng là các ví dụ về việc hệ thống sẽ hoạt động như thế nào trong một trường hợp cụ thể Để giúp cho việc xác định các giao tiếp thực tế cần phải có trong một
hệ đa agent, người phân tích tổ chức lại các use case vào biểu đồ tuần tự (hình 3) Một biểu đồ tuần tự mô tả chuỗi các sự kiện giữa các Role và định nghĩa ra số lượng tối thiểu giao tiếp diễn ra giữa các Role Các Role được định nghĩa ở bước này tạo nên một tập các Role ban đầu và sẽ được sử dụng để định nghĩa hoàn chỉnh các Role hệ thống ở các bước sau Bước tiếp theo, người phân tích sẽ sử dụng các sự kiện được xác định tại đây để định nghĩa ra các tác vụ và thậm chí là các hội thoại
Hoàn chính các Role
Bước 3 trong phương pháp luận MaSE được đưa ra để đảm bảo chúng ta đã xác định được tất cả các Role và để xây dựng những tác vụ định nghĩa những mẫu giao tiếp và hành vi Các Role đã được định nghĩa trong biểu đổ tuần tự là những Role
Trang 6được xây dựng trong suốt bước xác định use case cũng như bước xác định các Goal Chúng ta đảm bảo tất cả các Goal hệ thống đều được tính đến bằng cách kết hợp mỗi Goal với một Role cụ thể mà được thực hiện bởi ít nhất một agent trong thiết kế cuối cùng Một Role là một mô tả trừu tượng của một hàm kỳ vọng của thực thể, nó tương tự như khái niệm một diễn viên trong vở kịch hoặc một cơ quan trong một tổ chức (Kendall 1998) Mỗi Goal được ánh xạ sang một Role đơn lẻ Tuy nhiên, có những trường hợp chúng ta cần kết hợp nhiều Goal trong một Role đơn để cho thuận tiện và hiệu quả Chúng tôi đựa trên các ý tưởng xây dựng phần mềm tiêu chuẩn như hàm, giao tiếp, thủ tục hoặc sự gắn kết về thời gian Các yếu
tố khác bao gồm sự phân bổ tự nhiên nguồn lực cho các vấn đề đặc biệt
Các Role được xác định trong mô hình Role như hình 4:
Hình 4: Mô hình Role Khi Role đã được định nghĩa, thì tác vụ được tạo Phần thú vị nhất và cũng là khó nhất trong việc áp dụng phương pháp luận MaSE là việc chuyển đổi các role thành các lớp agent và việc định nghĩa các hội thoại và các hành vi nội tại của agent Để hoàn thành được công việc này, chúng ta cần có khả năng định nghĩa ra những tác
vụ ở cấp cao mà có thể chuyển đổi được thành những chức năng cụ thể của agent Chức năng này giúp chúng ta định nghĩa được các thành phần bên trong của agent cũng như chi tiết của các hội thoại mà các agent tham gia Hình 5 chỉ ra phiên bản chi tiết của mô hình Role theo phương pháp luận MaSE Các hình bầu dục bên dưới mỗi Role biểu thị các tác vụ mà Role đó cần phải thực thi để có thể đạt được
Trang 7goal của nó Đường nối giữa các node là giao thức giữa các tác vụ Các giao thức này định nghĩa một loại các thông điệp giữa các tác vụ cho phép chúng hoạt động hợp tác với nhau Mũi tên ở mỗi giao thức chỉ từ tác vụ khởi tạo sang tác vụ đáp ứng
Hình 5: Mô hình Role trong MaSE Chúng ta định nghĩa những tác vụ đồng thời (DeLoach 2001) như là một máy trạng thái hữu hạn mà chỉ ra những thông điệp được gởi giữa các Role và các tác vụ Các tác vụ đồng thời cũng cho phép chúng ta chỉ ra việc xử lý bên trong thông qua những hoạt động ở các trạng thái Sử dụng những tác vụ đồng thời, chúng ta có thể định nghĩa các giao thức tương tác phức tạp và ở mức cao hơn mà cần có sự phối hợp giữa các agent Chúng ta cũng chỉ ra rằng chúng ta thực sự có thể kiểm tra những hành động đúng của những giao thức tương tác trên dựa vào các tác vụ đồng thời (Lacey & DeLoach 2000a) Một ví dụ về sơ đồ tác vụ đồng thời trong MaSE
mà định nghĩa ra tác vụ Notify User của role AdminNotifier được thể hiện ở hình
6
Trang 8Hình 6 Sơ đồ tác vụ đồng thời Cấu trúc của sự biến đổi được thể hiện dưới đây
trigger(args1)[guard]/transmission(args2)
Sự biến đổi trên được hiểu là nếu sự kiện trigger được nhận với tham số args1 với điều kiện biến đổi guar, thì việc chuyển thông điệp sẽ được gởi với tập các tham số args2 Tất cả các tham số đều là tùy chọn Lấy ví dụ, một chuyển đổi với chỉ một điều kiện [guard] là hợp lệ cũng như một chuyển đổi chỉ có 2 tham số trigger/tranmission Ta có thể sử dụng nhiều biến đổi được viết phân tách bởi dấu
„;‟ Các hành động sẽ được thực hiện theo trạng thái và được viết như là những hàm
Tạo lớp agent
Trong bước tạo lớp agent, các lớp agent được xác định từ các Role và được trình bày trong sơ đồ lớp agent được chỉ ra ở hình 7 Sơ đồ lớp agent mô tả các lớp agent như những hộp chứa và các hội thoại giữa chúng là những đường nối giữa các lớp agent Tương tự với các Goal và Role, chúng ta định nghĩa một cách tổng quan ánh
xạ 1-1 giữa các Role mà được liệt kê dưới tên của lớp agent Tuy nhiên, người thiết
kế có thể kết hợp nhiều role trong một lớp agent đơn hoặc ánh xạ một role đơn tới nhiều lớp agent Do các agent kế thừa đường giao tiếp giữa các role nên bất kỳ đường giao tiếp nào giữa 2 role trở thành hội thoại giữa các lớp tương ứng Do đó,
tổ chức tổng quát của hệ thống được định nghĩa khi người thiết kế gán các role cho
Trang 9các lớp agent Để làm cho tổ chức hiệu quả hơn, ta thường kết hợp 2 role mà chia
sẻ một lượng lớn lưu lượng thông điệp Khi xác định kết hợp các role thì sự gắn kết
và khối lượng lưu lượng thông điệp là những khái niệm quan trọng cần phải cân nhắc
Hình 7: Sơ đồ lớp agent
Xây dựng hội thoại
Người thiết kể có thể thực hiện 2 bước tiếp theo là xây dựng hội thoại và hoàn thiện agent một cách song song với nhau Hai bước này có mối liên kết gần gũi, bởi vì kiến trúc agent được định nghĩa trong bước hoàn thiện agent phải thực hiện các hội thoại và các phương thức được định nghĩa trong bước xây dựng hội thoại Một hội thoại trong phương pháp luận MaSE định nghĩa một giao thức phối hợp giữa hai agent Cụ thể là, một agent bao gồm 2 sơ đồ lớp giao tiếp, một cho lớp khởi tạo và một cho lớp trả lời Một sơ đồ lớp giao tiếp là một cặp các máy trạng thái hữu hạn mà định nghĩa một hội thoại giữa 2 lớp agent tham gia Một bên của cuộc hội thoại được chỉ ra ở hình 8 Bên khởi tạo luôn bắt đầu cuộc hội thoại bằng cách gởi thông điệp đầu tiên Cú pháp dùng trong sơ đồ lớp giao tiếp là tương tự như cú pháp của sơ đồ tác vụ đồng thời Sự khác nhau chính giữa các hội thoại và các tác vụ đồng thời là ở chỗ các tác vụ đồng thời có thể bao gồm nhiều hội thoại giữa nhiều role khác nhau và các tác vụ mà hội thoại là các trao đổi nhị phân giữa các agent
Trang 10Hoàn thiện agent
Ở bước này, những thành phần bên trong agent được tạo ra Robinson (Robinson 2000) mô tả các chi tiết của bước hoàn thiện agent từ một tập tiêu chuẩn hoặc từ các kiến trúc người dùng được định nghĩa Quá trình này được đơn giản hóa bằng cách sử dụng một ngôn ngữ mô hình kiến trúc mà kết hợp sự trừu tượng của ngôn ngữ mô tả kiến trúc truyền thống với ngôn ngữ ràng buộc đối tượng cho phép người thiết kế chỉ ra các chi tiết ở mức thấp
Hình 8 Sơ đồ lớp giao tiếp
Triển khai hệ thống
Bước cuối cùng trong phương pháp luận MaSE định nghĩa ra cấu hình của hệ thống cụ thể sẽ được thực thi Hiện tại, chúng ta chỉ xem xét các hệ thống tĩnh, không di động mặc dù chúng ta đang nghiên cứu đặc tả và thiết kế các hệ thống agent di động và linh động Trong phương pháp luận MaSE, chúng ta định nghĩa kiến trúc hệ thống một cách tổng quát sử dụng sơ đồ triển khai để chỉ ra số lượng, các loại, và vị trí của agent trong hệ thống
Bước triển khai hệ thống cũng là bước mà tất cả những quyết định cài đặt chưa được định nghĩa trước đó như ngôn ngữ lập trình sử dụng hoặc framework để giao tiếp phải được thực hiện Trong đó, theo ý nghĩa về kỹ thuật phần mềm đơn thuần, chúng ta thực hiện những quyết định trên ở bước này nhưng cũng có lúc quyết định trên được thực hiện sớm ở bước yêu cầu hệ thống
agentTool