GIỚI THIỆU

Một phần của tài liệu Phát triển phần mềm hướng Agent (Trang 150 - 166)

Lịch sử tính toán cho đến nay đã được đánh dấu bởi năm xu hướng quan trọng và đang còn tiếp diễn:

• Tính toán mọi nơi • Kết nối lẫn nhau • Tính toán thông minh • Tính toán đại diện

• Tính toán hướng đến con người

Xu hướng thứ nhất, tính toán mọi nơi, nghĩa là giảm chi phí đầu tư vào khả năng tính toán bằng cách sử dụng sức mạnh xử lý vào những nơi được coi là không kinh tế. Không giống như các hệ thống máy tính thời kỳ đầu, các hệ thống máy tính ngày nay đã được kết nối với nhau để tạo thành một hệ thống phân tán lớn. Internet là một ví dụ. Hiếm có một máy tính nào sử dụng trong lĩnh vực thương mại và học thuật mà không có khả năng truy cập Internet. Ngày nay, các hệ phân tán và đồng thời là chủ đề của nhiều cuộc nghiên cứu và thực nghiệm để từ đó người ta

đánh giá lại nền tảng của khoa học máy tính và tìm kiếm những mô hình lý thuyết mới phản ánh thực tế tính toán tốt hơn: thực chất tính toán là một quá trình tương tác lẫn nhau.

Xu hướng thứ ba, tính toán thông minh, nghĩa là độ phức tạp của những tác vụ mà chúng ta có thể tự động hóa và giao phó cho máy tính đang ngày càng tăng. Khi đó, các kỹ sư máy tính có thể giải quyết được những nhiệm vụ phức tạp mà không được chỉ trong một thời gian ngắn.

Xu hướng tiếp theo là hướng đến tăng khả năng giao phó công việc cho máy. Ví dụ như hệ thống máy bay không người lái (ở đó, lời khuyên của chương trình máy tính được tin cậy hơn là những phi công dày dạn kinh nghiệm).

Cuối cùng, xu hướng tính toán hướng con người là một bước chuyển dịch lớn từ quan điểm lập trình hướng máy móc. Điều này được chứng minh ở cách mà chúng ta tương tác với máy tính. Thời kỳ đầu, tương tác được thực hiện thông qua việc tiết lập các switch trên panel của máy. Tiếp theo đó là các giao diện dòng lệnh. Sau khi có sự ra đời của giao diện đồ họa, người sử dụng có thể điều khiển thiết bị thông qua các icon một cách trực tiếp. Cùng với sự phát triển đó là các quan điểm lập trình cũng thay đổi theo: từ hợp ngữ, lập trình hướng thủ tục, lập trình hướng cấu trúc đến lập trình hướng đối tượng. Những sự phát triển đó cho phép người lập trình cài đặt phần mềm ở một mức trừu tượng cao hơn và hướng con người hơn.

Những thách thức đó đã thúc đấy quá trình phát triển các công cụ và các cơ chế cho phép xây dựng các hệ phân tán với khả năng sử dụng lại và tin cậy cao hơn. Do đó, lĩnh vực mới các hệ đa agent đã trở thành chủ đề thu hút nghiên cứu và phát triển mạnh mẽ trong khoa học máy tính ngày nay.

7.2 MỘT SỐĐẶC ĐIỂM CỦA NỀN TẢNG PHÁT TRIỂN AGENT 7.2.1 Một số nền tảng hỗ trợ phát triển hệđa agent

Có nhiều ngôn ngữ lập trình agent mà ẩn bên dưới là một platform cài đặt ngữ nghĩa của ngôn ngữ lập trình đó, ví dụ như JACK Agent Language (JAL), 3APL (An Abstract Agent Programming Language), IMPACT, AF-APL (Agent Factory Agent Programming Language). Tuy nhiên cũng có nhiều platform không phụ thuộc vào ngôn ngữ lập trình, mà thay vào đó là cung cấp sự hỗ trợ các khía cạnh như truyền thông/giao tiếp và phối hợp. Sau đây, tôi xin giới thiệu một số platform như vậy, trong đó, nổi bật nhất là JADE.

TuCSoN (Tuple Centre Spread over the Network) là một framework phối hợp các hệ đa agent. TuCSoN dựa trên một mô hình và một cơ sở hạ tầng cung cấp mục đích chung và các dịch vụ có thể lập trình được trợ giúp việc truyền thông và phối hợp của agent. Đây là một framework hoàn toàn dựa trên Java bao gồm các thành phần: runtime platform, tập các thư viện APIs, tập các công cụ. Lõi của TuCSoN là công nghệ tuProlog là một máy Prolog được tích hợp hoàn toàn với môi trường Java. Ngày nay, TuCSoN cũng được sử dụng để xây dựng các hệ thống dựa trên agent trong các dự án thuộc môi trường học tập, nghiên cứu.

Jadex là một framework để tạo các agent hướng đích tuân theo mô hình belief-desire- intention (BDI). Framework này được cài đặt thành một tầng nằm trên đỉnh của một cơ sở hạ tầng middleware như JADE và cho phép phát triển agent với các công nghệ đã có sẵn như Java, Phát triển hệ đa agent với Phương pháp luận MaSE và JADE 164 

XML. Máy suy luận của Jadex giải quyết những giới hạn của các hệ BDI truyền thống bằng cách giới thiệu các khái niệm mới như mục đích rõ ràng và cơ chế cân nhắc mục đích, làm cho kết quả của việc phân tích và thiết kế hướng goal có thể dễ dàng chuyển sang giai đoạn cài đặt. Jadex được sử dụng để xây dựng các ứng dụng trong các lĩnh vực khác nhau như mô phỏng, lập lịch và tính toán di động. Ví dụ, Jadex được sử dụng để phát triển một ứng dụng đa agent trong đàm phán lịch chữa trị ở bệnh viện.

DESIRE (DEsign and Specification of Interacting REasoning components) là một phương pháp phát triển gộp cho các hệ đa agent dựa trên kiến trúc gộp. Trong đó, việc thiết kế agent dựa trên những khía cạnh chính sau: gộp tiến trình, gộp tri thức và các quan hệ giữa gộp tiến trình và gộp tri thức. Việc đặc tả quan hệ gộp liên quan đến khả năng trao đổi thông tin giữa các thành phần và cấu trúc điều khiển để kích hoạt các thành phần. DESIRE được sử dụng cho những ứng dụng như cân bằng tải của các hệ thống chuẩn đoán và phân phối điện.

JADE (Java Agent DEvelopment Framework) như đã trình bày trong các Chương trước, Jade là một Java framework để phát triển các ứng dụng đa agent phân tán. Nó cung cấp một tập các dịch vụ sẵn có và dễ sử dụng cũng như một vài công cụ đồ họa để gỡ lỗi và kiểm thử. Một trong những mục tiêu chính của JADE là hỗ trợ khả năng phối hợp hoạt động bằng cách tuân theo một cách nghiêm ngặt đặc tả FIPA về kiến trúc cũng như cơ sở hạ tầng truyền thông. Ngoài ra, JADE cũng khá mềm dẻo và có thể thích nghi để sử dụng trên các thiết bị giới hạn về tài nguyên như PDAs và mobile phones. JADE đã được sử dụng rộng rãi trong những năm qua trong các tổ chức công nghiệp cũng như các tổ chức học thuật từ những hướng dẫn giảng dạy trong các khóa học liên quan đến agent đến các bản mẫu công nghiệp. Một ví dụ điển hình là việc Whitestein sử dụng JADE để xây dựng một hệ thống hỗ trợ ra quyết định ở các trung tâm cấy ghép nội tạng.

7.2.2 Một sốđặc điểm nổi bật của JADE

Như đã trình bày ở các chương trước, JADE là một nền tảng phần mềm cung cấp chức năng cơ bản cho tầng giữa. Nó độc lập với các ứng dụng cụ thể và đơn giản hóa việc cài đặt các ứng dụng phân tán – những ứng dụng khai thác sự trừu tượng của các agent phần mềm. Một đặc điểm đáng chú ý của JADE là nó thực thi sự trừu tượng này trên ngôn ngữ hướng đối tượng Java, cung cấp một API đơn giản và thân thiện. Những lựa chọn thiết kế đơn giản hóa của JADE đều bị ảnh hướng bởi sự trừu tượng của agent. Do đó, JADE đã được cài đặt để cung cấp cho các nhà lập trình các chức năng cốt lõi cho phép sẵn sàng sử dụng và dễ dàng tùy biến:

• Hệ thống hoàn toàn phân tán cho phép các agent cư trú trên đó, mỗi agent hoạt động như là một luồng riêng biệt, và có khả năng giao tiếp một cách trong suốt với agent khác. • Tuân thủ đầy đủ các đặc tả của FIPA. Nền tảng JADE tham gia thành công vào tất cả các

sự kiện phối hợp hoạt động của FIPA và được sử dụng như là tầng giữa của nhiều nền tảng trong mạng lưới Agentcities. Điều này đã tạo nên sự đóng góp lớn lao của nhóm JADE vào quá trình chuẩn hóa của FIPA.

• Phương tiện vận chuyển hiệu quả của các thông điệp không đồng bộ thông qua một API không bị phụ thuộc về vị trí. Nền tảng JADE lựa chọn các phương tiện sẵn có tốt nhất của Phát triển hệ đa agent với Phương pháp luận MaSE và JADE 165 

truyền thông. Khi đi qua ranh giới giữa các nền tảng, các thông điệp tự động được biến đổi từ cách biểu diễn bằng Java bên trong của JADE sang các cú pháp, cách giải mã và các giao thức vận chuyển tuân theo FIPA.

• Thực thi cả 2 dịch vụ white-page và yellow-page. Hệ thống có thể được cài đặt để biểu diễn các miền và các miền con như một đồ thị các thư mục.

• Quản lý vòng đời agent đơn giản nhưng hiệu quả. Khi các agent đã được tự động gán một định danh toàn cục duy nhất và một địa chỉ vận chuyển được sử dụng để đăng ký với dịch vụ white-page của nền tảng. Các API đơn giản và các công cụ đồ họa cũng được cung cấp để quản lý vòng đời agent vừa từ xa và vừa cục bộ, như tạo, đình chỉ, phục hồi, đóng băng, tan băng, di chuyển, lặp lại và xóa.

• Cung cấp tính di động của agent. Cả mã và trạng thái của agent đều có thể di chuyển giữa các tiến trình và các máy. Sự di chuyển được tạo ra để các agent giao tiếp một cách trong suốt mà có thể tiếp tục tương tác thậm chí là trong suốt quá trình di chuyển.

• Một cơ chế đặt trước (subscription) cho mỗi agent, và thậm chí là cả các ứng dụng bên ngoài, mà muốn đăng ký với nền tảng để được thông báo về tất cả các sự kiện của platform, bao gồm các sự kiện có liên quan đến vòng đời và các sự kiện trao đổi thông điệp.

• Một tập các công cụ đồ họa để hỗ trợ người lập trình khi debug và monitor. Chúng đặc biệt quan trọng và phức tạp trong các hệ thống đa luồng, nhiều tiến trình, nhiều máy ví dụ như một ứng dụng JADE điển hình.

• Hỗ trợ các Ontology và các ngôn ngữ nội dung. Việc kiểm tra ontology và việc mã hóa nội dung được thực hiện tự động bởi nền tảng, các nhà lập trình có thể lựa chọn các ngôn ngữ nội dung và ontologies yêu thích. Những người lập trình còn có thể cài đặt những ngôn ngữ mới để thực hiện các yêu cầu ứng dụng cụ thể.

• Một thư viện của các giao thức tương tác: cái mô hình các kiểu mẫu đặc trưng của truyền thông nhằm đạt được một hoặc nhiều mục đích. Các skeleton độc lập vứi ứng dụng là một tập các lớp Java có sẵn và có thể được tùy. Các giao thức tương tác cũng có thể được thể hiện và được cài đặt như một tập các máy trạng thái đồng thời.

• Sự tích hợp với các công nghệ khác nhau dựa trên Web bao gồm các công nghệ JSP, Servlet, applet và Web Service. Nền tảng cũng có thể được cấu hình một cách dễ dàng để xuyên qua tường lửa và sử dụng các hệ thống NAT.

• Hỗ trợ nền tảng J2ME và môi trường không dây. JADE run-time có thể dùng cho các nền tảng J2ME – CDC và J2ME-LCDC thông qua một tập không đổi của các API che phủ cả 2 môi trường J2ME và J2SE.

• Một giao diện tiến trình bên trong (in-process) cho việc khởi chạy và điều khiển platform và các thành phần phân tán của nó từ một ứng dụng bên ngoài.

• Một nhân có thể mở rộng được thiết kế để cho phép những người lập trình mở rộng các chức năng của nền tảng thông qua việc bổ sung các dịch vụ phân tán mức nhân.

Như vậy, có thể nói JADE có rất nhiều điểm mạnh trong việc xây dựng các ứng dụng đa agent phân tán dựa trên các lựa chọn thiết kế đơn giản của sự trừu tượng hóa của agent. Phần tiếp theo, chúng ta sẽ tìm hiểu phương pháp luận MaSE để thấy được sự kết hợp của nó với JADE.

7.3 PHƯƠNG PHÁP LUẬN MaSE 7.3.1 Tổng quan về các pha trong MaSE 7.3.1 Tổng quan về các pha trong MaSE

Những khó khăn trong việc xây dựng các hệ thống đa agent phức tạp: • Xác định nhiệm vụ mà hệ thống phải thực hiện.

• Xác định thực thể nào trong hệ thống đóng vai trò là agent. • Định nghĩa các tương tác giữa các agent.

• Đặc tả các giao thức phức tạp và đầy đủ

• Định nghĩa tương tác giữa hệ thống với môi trường • Định nghĩa những hành vi liên quan đến các agent

Các phương pháp luận có nhiệm vụ giúp cho người thiết kế giải quyết các vấn đề này và phải quản lý được sự phức tạp này, ngoài ra còn phải làm dễ dàng tiến trình kỹ nghệ phần mềm bằng cách cung cấp một tiến trình nghiêm ngặt cho phép tạo ra các mô hình miêu tả các khía cạnh khác nhau của phần mềm. Federico Bergenti et al. các tác giả cuốn sách “Methodologies and software engineering for agent systems – The agent-oriented software engineering handbook” đã đưa ra một tổng kết về các giai đoạn phát triển chung cho các phần mềm hướng agent gồm:

• Phân tích

- Miêu tả vấn đề (thu thập yêu cầu)

- Xem xét role của các agent trong việc phân tích goal - Ngôn ngữ đặc tả sử dụng các khái niệm của agent - Công cụ hỗ trợ cho các ngôn ngữ

• Thiết kế

- Kiến trúc phần mềm - Các thành phần - Các hành vi mong đợi

- Cách xây dựng agent từ đầu và sử dụng môi trường phát triển agent • Cài đặt

- Đề xuất một số ngôn ngữ hướng agent, các thư viện, framework và các công cụ hỗ trợ. • Test

- Kiểm tra sự thỏa mãn yêu cầu ban đầu - Phần mềm có lỗi hay không?

7.3.2 Phân tích và thiết kế với MaSE

Phương pháp luận này tập trung vào các giai đoạn phân tích và thiết kế - hai trong số bốn giai đoạn phát triển phần mềm hướng agent chung.

Giai đoạn Mô hình 1. Phân tích a. Xác định các Goal b. Áp dụng các Use case c. Làm mịn các Role Goal Hierarchy

Use cases, Sequence Diagrams Concurrent Tasks, Role Model

2. Thiết kế

a. Tạo các lớp Agent

b. Xây dựng các phiên giao tiếp c. Lắp ráp các lớp Agent d. Thiết kế hệ thống

Agent Class Diagrams Conversation Diagrams Agent Architecture Diagrams Deployment Diagrams

Tuy các bước được biểu diễn một cách tuần tự, nhưng trên thực tế, phương pháp luận này là một phương pháp lặp. Mục đích của nó là giúp người thiết kế có thể tự do di chuyển giữa các bước và các pha sao cho với mỗi lần di chuyển thành công thì có thêm các chi tiết được bổ sung vào và cuối cùng, một thiết kế hệ thống hoàn chỉnh và thống nhất được tạo ra.

Một điểm mạnh của MaSE là khả năng lưu vết những thay đổi trong suốt toàn bộ tiến trình. Mỗi đối tượng được tạo ra trong các pha phân tích và thiết kế có thể được lưu vết tiến hoặc lùi qua nhiều bước khác nhau với các đối tượng có liên quan khác.

7.3.2.1 Phân tích

Pha phân tích của MaSE tạo ra một tập các role và task miêu tả cách mà hệ thống thỏa mãn các mục đích (goal) của nó. Mục đích là một sự trừu tượng của yêu cầu và đạt được bởi các role. Thông thường, một hệ thống có một mục đích toàn cục và một tập các mục đích con. Goal được sử dụng trong MaSE vì chúng sao chụp lại điều mà hệ thống đang cố gắng đạt được và có tính ổn định qua thời gian hơn là chức năng (function), tiến trình (process) hoặc các cấu trúc thông tin. Role miêu tả một thực thể thực hiện một số chức năng trong hệ thống. Trong MaSE, mỗi role có trách nhiệm đạt được hoặc giúp đỡ để đạt được goal.

Cách tiếp cận pha phân tích của MaSE là định nghĩa các goal của hệ thống từ tập các yêu

Một phần của tài liệu Phát triển phần mềm hướng Agent (Trang 150 - 166)

Tải bản đầy đủ (PDF)

(166 trang)