Методы и средства инженерии программного обеспечения

       

Агентное программирование


Понятие интеллектуального и программного  агента появилось более 20 лет назад,  их роль в программной инженерии  все время возрастает [25-–29]. Так, в [30]  Джекобсон отметил   перспективу для использования  агентов в качестве  разработчиков архитектуры системы из вариантов использования, менеджеров  проекта и др.  Использование агентов в этих ролях в ближайшем будущем  будет способствовать повышению производительности, качества и ускорению разработки ПС.

Основным теоретическим базисом данного программирования являются  темпоральная, модальная и мультимодельная логики, дедуктивные методы доказательства правильности свойств агентов и др.   Рассмотрим сущность основных  прикладных аспектов  агентной тематики.

С точки зрения программной инженерии,  агент  это самодостаточная программа, способная управлять своими действиями  в информационной среде функционирования  для получения  результатов  выполнения поставленной задачи и  изменения  текущего состояния среды.

Агент  может обладать  такими свойствами:

– автономность – это.  способность действовать без внешнего управляющего воздействия;

– реактивность – это способность реагировать на изменения данных и среды, и воспринимать их;

– активность – это способность ставить цели  и выполнять  заданные действия для достижения этой  цели;

– социальность – это способность к взаимодействию с другими агентами (или  людьми).

В задачи программного агента входят:

–  самостоятельная работа и контроль своих действий;

–  взаимодействие с другими агентами;

– изменение поведения в зависимости от состояния внешней среды;

–  выдача достоверной информации о выполнении заданной функции и т.п.



С интеллектуальным агентом связываются  знания типа: убеждение, намерение, обязательства и т.п.  Эти понятия входят в концептуальную модель и связываются между собой операционными планами реализации целей каждого агента. Для  достижения целей  интеллектуальные агенты взаимодействуют  друг с другом, устанавливают связь между собой через сообщения или запросы и  выполняют  заданные  действия или операции в соответствии с имеющимися знаниями. 


Агенты могут быть локальными  и распределенными. Процессы локальных агентов протекают  в  клиентских серверах сети, выполняют заданные функции  и не влияют  на   общее  состояние  среды функционирования. Распределенные агенты,  расположенные в разных узлах сети, выполняют автономно  (параллельно, синхронно, асинхронно) предназначенные им функции и могут  влиять на  общее состояние среды. В обоих случаях характер взаимодействия между агентами зависит от таких факторов: совместимость целей,  компетентность,   не стандартные  ситуации т.п. [27] (рис.5.5).



                         Рис.5.5   Пример взаимодействия  агентов в разных средах

Основу агентно–ориентированного программирования составляют:

– формальный язык описания ментального состояния агентов;

– язык спецификации  информационных, временных, мотивационных и функциональных действий агента в среде функционирования;

– язык интерпретации  спецификаций  агента;

–  инструменты конвертирования любых программ в соответствующие агентные программы.

Агенты  взаимодействуют  между собой с помощью разных механизмов    взаимодействия, а именно, координация, коммуникация, кооперация или  коалиция.

Под координацией агентов понимается  процесс обеспечения последовательного функционирования при согласованности их поведения и без взаимных конфликтов. Координация агентов определяется:

– взаимозависимостью целей  других агентов–членов коалиции, а также от возможного  влияния агентов друг на друга;

– ограничениями, которые принимаются для группы  агентов коалиции  в рамках  общего   их функционирования;

– компетенцией – знаниями условий среды функционирования и степени их использования.

Главным средством коммуникации агентов является транспортный протокол ТСР/IP  или  протокол агентов  ACL (Agent Communication Languages). Управления агентами  (Agent Management) выполняется с помощью таких  сервисов: передача сообщений между агентами, доступ агента к  серверу   и т.п.



Коммуникация  агентов базируется на общем протоколе,  языке  HTML и декларативном  или процедурном (Java, Telescript,  ACL и т.п.) языке описания  этого протокола.

Примером активного использования агентов является Интернет. В нем агенты обеспечивают доступ к информации, расположенной в информациооных ресурсах Интернет, анализ, фильтрацию  и передачу клиенту результат запроса. В результате выполнения  этих функций  агенты  создают некоторое поведение среды, которое в любой момент времени находится в некотором состоянии, а  агент,   выполняя заданные  действия, изменяет его  в целевое состояние и учитывает возможность  возникновения нерегулярных состояний (тупиков, отсутствия ресурса и др.).    

Одной из систем построения агентов, основанной на обмене сообщениями  в АСL, является JATLite. Она включает  Java–классы для создания новых агентов, ориентированных на вычисление функций в распределенной среде. Система  Agent Builder  предназначена для конструирования программных агентов,  которые описываются в языке  Java и  могут взаимодействовать на основе языка KQML (Knowledge Guery and Manipulation Language). Построенные агенты  выполняют функции: менеджера проекта и онтологий, визуализации,  отладки и др. На реализацию механизмов взаимодействий агентов ориентирована и система  JAFMAS.  Ряд мультиагентных систем описано в [44].

 


Содержание раздела