женерное проектирование программного обеспечения: / Пер. с англ. - М.: Радио и связь, 1985. - 512 с.
2. Six Sigma Producibility Analysis and Process Characterization, by M.J. Harry and J.R. Lawson, Motorola University Press, Chapter 6.
3. Баранов С.Н., Домарацкий А.Н., Ласточкин Н.К., Морозов В.П. Предотвращение дефектов при создании программных изделий. // Программные продукты и системы. - 1998. - №2. - С.2-6.
4. Баранов С.Н., Домарацкий А.Н., Ласточкин Н.К., Морозов В.П. Процесс разработки программных изделий. - М.: Наука, 2000. - 182 с.
5. Paulk M.C., Curtis В., Chrissis M.B., Weber Ch.V. Capability Maturity Model for Software, Version 1.1. CMU/SEI-93-TR-24; ESC-TR-93-177. Key Practices of the Capability Maturity Model, Version 1.1. CMU/SEI-93-TR-25; ESC-TR-93-178. - Pittsburgh: Software Engineering Institute, 1993. - 533 p.
6. Домарацкий А.Н., Домарацкий Я.А. Вероятность обнаружения дефектов во время тестирования программных изделий. // Программные продукты и системы. - 1999. - №4. - С.12-15.
7. "Семь инструментов" управления качеством. / Материалы проекта ISO 9000. http://www.iso9000.ru/.
ОРГАНИЗАЦИЯ И МОДЕЛИ СИСТЕМЫ МОБИЛЬНЫХ АГЕНТОВ
В.С. Фомичев, И.И. Холод
Многие авторы отмечают наличие аналогии между структурами программных систем и социальными структурами. Некоторые даже предлагают создать специальную научную дисциплину для изучения социальных структур - хамонику.
Примеры таких аналогий известны: отдел снабжения и система управления ресурсами компьютера, структура хранилища библиотек и файловая система, организация ограниченного доступа к секретным материалам и подсистема администрирования.
С появлением компьютерных сетей расширились возможности реализации децентрализованных распределенных систем. Прототипами таких систем в обществе являются: искатели, научные экспедиции, ревизоры, курьеры, коммивояжеры и т.д. Все они обладают способностью автономных действий и изменения местоположения. Аналогиями подобных децентрализованных структур в области программного обеспечения являются системы мобильных агентов.
Следует отметить, что в социальной среде централизованные и децентрализованные организации мирно сосуществуют, поскольку они, как правило, используются для решения различных классов задач. По-видимому, такое положение должно сохраниться и в области разработки и применения программных систем.
Мобильным агентом называется автономная программа, способная перемещаться с машины на машину в неоднородной среде. Выполняя свои задачи, она на каждой машине взаимодействует со служебными агентскими компонентами и другими ресурсами, по окончании работы возвращается вместе с результатами [2,6,9-11,17].
Возможность перемещения позволяет системам, использующим мобильных агентов, динамически перераспределять вычислительную нагрузку в зависимости от состояния сети. Если выполнение вычислений на одном из узлов стало не эффективно, агент может приостановить свою работу, переместиться на менее загруженный компьютер и продолжить работу на нем. Другим преимуществом данной технологии является возможность перемещения вычислительной нагрузки ближе к данным, над которыми производятся какие-либо операции (изменение, поиск, фильтрация и т.д.), что позволяет не только повысить эффективность работы, но и снизить загруженность
сети. Еще одним достоинством мобильных агентов является их автономность, то есть агент, наделенный некоторыми полномочиями, может в дальнейшем без участия пользователя выполнить поставленную перед ним задачу.
Преимущества технологии мобильных агентов позволяют использовать ее в самых разных областях человеческой деятельности.
Система Agent Tcl [2,4,8], разработанная в Дорт-мундском университете, в первую очередь используется в приложениях, осуществляющих распределенную выборку информации. Мобильный агент запускается на компьютере пользователя, принимает от него запрос на поиск, последовательно перемещается по узлам сети, где хранятся группы отчетов, и вступает во взаимодействие с местными специальными агентами, которые ищут для него необходимые документы. По мере продвижения агент объединяет и упорядочивает полученные материалы.
Агенту не обязательно посещать последовательно один за другим интересующие его узлы. Вместо этого он может клонировать множество дочерних агентов, которые будут выполнять свои функции параллельно. Как только главный агент получает в свое распоряжение материалы, выбранные из каждого архива документов, он объединяет и фильтрует их, а затем возвращается с окончательным вариантом на исходную машину.
С развитием инфраструктуры коммуникаций все большую популярность приобретает беспроводная связь, обеспечивающая качественно более высокий уровень мобильности и оперативности. И хотя для некоторых относительно несложных применений характеристики таких мобильных каналов связи вполне приемлемы, имеются области, в частности задачи, связанные с работой с корпоративными базами данных, в которых использование каналов связи сильно затруднено [2, 5].
Автономность, присущая мобильным агентам, позволяет им существовать и выполнять свои задачи без вмешательства со стороны пользователя. Это снимает необходимость постоянного соединения исходного компьютера с сетью. Подключение требуется лишь при пересылке агента в сеть и при его возвращении с результатами. При таком подходе к коммуникации компьютера с сетью предъявляются са-
7
мые минимальные требования, необходимые лишь для кратковременных подключений.
Еще одной перспективной областью применения технологии мобильных агентов является организация коммерции в глобальной сети Internet [3]. Одной из первых к реализации подобной системы приступила фирма General Magic (http://www.genmagic.com) на своем фирменном языке программирования Tele-script. В данном случае мобильные агенты используются как представители пользователей и могут выполнять задачи распространения и поиска нужной продукции. Имея необходимые сведения (имя пользователя, электронную подпись, номер кредитной карточки), агенты могут заключать договоры и производить взаиморасчеты от имени пользователя.
Описанная система может предоставлять дополнительные услуги, например, поиск наиболее оптимальных условий соглашения (цена, качество, сервис и т.д.). На основе анализа собранных данных может быть принято и осуществлено наиболее выгодное решение. Резидентное нахождение агента на одном из узлов участника договора позволяет своевременно оповещать пользователя и/или выполнять соответствующие действия при изменении каких-либо первоначальных условий (например, при изменении курса акций, задержки рейсов и т.д.) [18].
Технология мобильных агентов может применяться в любых других областях, требующих распределенной обработки данных, выполнения вычислений и автономной работы в сети.
Терминология и спецификации технологии мобильных агентов. Основными разработчиками спецификаций в настоящее время являются ассоциации OMG (Object Management Group) (http://www. omg.org) и FIPA (Foundation for Intelligent Physical Agents) (http://www.fipa.org). Ассоциация OMG разработала спецификации [7] по взаимодействию различных архитектур, реализации систем мобильных агентов и их интеграции с CORBA [15]. Подобную работу ведет и ассоциация FIPA. Свои усилия она сосредоточила на стандартизации компонентной технологии, взаимодействии между агентами и управлении ими.
Главным продуктом FIPA являются спецификации. В них описываются интерфейсы разных компонентов среды, с которыми агент может взаимодействовать.
Первый набор спецификаций FIPA был реализован в октябре 1997 года. Ежегодно ассоциация разрабатывает новые, дополняет и корректирует существующие документы. На сегодняшний день разработаны следующие разделы спецификации [10].
• Управление агентами. Описывает модель платформы агентов, которая включает службы маршрутизации сообщений и управления жизненным циклом, а также службы белых и желтых страниц. Служба белых страниц содержит информацию о связи глобальных идентификаторов агентов (GUID) с их адресами, а служба желтых страниц содержит информацию об услугах, предоставляемых агентами.
• Язык взаимодействия агентов (ACL). Приводится описание языка, предназначенного для ис-
пользования агентами разных систем и основанного на теории речевого действия (SAT - Speech Act Theory) [10].
• Взаимодействие с неагентскими программами. Рассматриваются способы подключения агентов к программному обеспечению, не использующему агентскую технологию, через "оболочки", включающие специфицированную онтологию и динамический механизм регистрации, и взаимодействия с человеком. Этот раздел специфицирует необходимые для общения человека с системой интерфейсы: сервис диалогового управления пользователя (UDMS) и сервис индивидуализации пользователя (UPS).
• Управление безопасностью агентов. В этом разделе идентифицируются ключевые угрозы безопасности в управлении агентом и описываются возможные средства защиты.
• Управление мобильными агентами. Рассматриваются дополнительные функции ("передать" и "запустить") агентской платформы, необходимые для работы с мобильными агентами.
• Сервис онтологии. В этом разделе описывается служба, обеспечивающая правильное понимание запросов, сообщений, терминов в контексте области применения (коммерции, медицины и т.д.).
• Области применения. Описываются приложения, использующие агентскую технологию: сетевой помощник, аудио/видео конференции, помощник планирования путешествий. С их помощью производится тестирование разработанных спецификаций.
В спецификациях FIPA также определенны термины и базовые понятия, на основании которых строятся спецификации.
Агент - программный компонент, взаимодействующий с платформой агентов, которая обеспечивает связь агента с внешней средой, транспортировку агента и изменение его состояния. Он действует автономно для и от имени человека или организации.
Платформа агентов - программный компонент, находящийся на компьютере. Он принимает запросы агента и взаимодействует с другими платформами агентской системы. Обеспечивает инфраструктуру, в которой могут выполняться агенты. Агент должен регистрироваться на платформе для того, чтобы взаимодействовать с другими агентами, находящимися на этой или на других платформах.
Домашняя платформа агента - платформа, на которой агент был создан и которая отвечает за идентификацию агента при его взаимодействии с другими агентами и платформами.
Имя агента - идентификатор агента может быть двух видов: либо глобально уникальный и неизменный идентификатор (GUID), либо комбинация адреса домашней платформы и уникального (на платформе) имени.
Канал связи агента - часть агентской платформы, которая использует информацию, предоставляемую системой управления агента, чтобы маршрутизировать сообщения между агентами в пределах платформы и агентами, которые находятся на других платформах.
8
Клонирование агента - процесс, с помощью которого агент создает свою копию на агентской платформе.
Локальная платформа агента - платформа, на которой располагается агент. Она является конечным местом назначения для сообщений, направленных к этому агенту.
Мобильный агент - агент, который не ограничивается исходной платформой и имеет возможность перемещаться между платформами.
Менеджер безопасности агентской платформы (APSM) - часть агентской платформы, которая отвечает за поддержание политики безопасности агентской платформы. Менеджер безопасности агентской платформы ответственен за обеспечение безопасности на транспортном уровне и контроль протокола создания агента. APSM контактирует с внутри- и междоменными сервисами безопасности другой APSM в соответствии с реализуемой архитектурой распределенных вычислений, таких как COR-BA, COM и DCE от имени агента в своей области.
Область - логическая группа агентов. Она состоит из менеджера области и мобильных агентов, которые регистрируются в ней. Функции менеджера области состоят в регистрации агентов и в поддержании единой политики управления. Области предоставляют пользователям агентов возможность обеспечить единую политику среди множества платформ.
Онтология - точное определение предметной области (коммерция, спорт и т.д.). Она включает в себя словарь (список логических констант и предикатных символов) для указания предметной области и набора логических утверждений, выражающих ограничения, существующие в области и ограничивающие интерпретацию словаря. Онтология поддерживает словарь для представления и обмена знаниями о некоторой теме и набор отношений и свойств, влияющих на понимание сущностей, включенных в словарь. В спецификациях FIPA определены онтологии агента, имени агента, сервера, платформы и др.
Политика - набор утверждений, в которых некие элементы (например агент) агентской системы объявляют правила взаимодействия с другими элементами.
Система управления агентом - часть агентской платформы, которая управляет созданием, удалением, деактивацией, возобновлением, аутентификацией и миграцией агентов на агентской платформе и обеспечивает службу белых страниц для всех находящихся на платформе агентов. Служба белых страниц хранит соответствие между глобально уникальными именами агентов (или GUIDs) и адресами локального транспорта, используемого платформой.
Система мобильных агентов - совокупность платформ агентов и самих агентов, обладающих способностью перемещаться между платформами, используя транспортные механизмы сети.
Служба каталогов - часть агентской платформы, которая обеспечивает службу желтых страниц для агентов. Служба желтых страниц хранит
описания агентов и услуги, которые они предоставляют.
Стационарный агент - агент, выполняемый только на платформе, на которой был создан.
На сегодняшний день можно насчитать несколько десятков систем, использующих технологию мобильных агентов. Рассмотрим наиболее известные.
Система Aglets Workbench (http://www.trl.ibm.co. jp/aglets) [1,12], разработанная в компании IBM, реализована на языке Java. Она позволяет пользователям создавать так называемые аглеты - мобильные агенты, реализуемые с помощью языка программирования Java. Система включает в себя средства разработки аглетов и платформу для их выполнения. Продукт основан на объектной модели, основными элементами которой являются аглеты, контексты и сообщения. Пересылка агентов, интерфейс с аглета-ми и контекстом определяются ATP (Aglet Transfer Protocol) и A-API (Aglet API).
Система Odyssey [18] разработана в компании GenMagic (http://www.genmagic.com/) с использованием языка Java и технологии RMI. Система включает в себя библиотеку классов языка Java. В состав системы входят платформа агентов и сами агенты.
Системы IBM Aglets и Odyssey реализованы на основе спецификаций OMG.
Система Concordia (http://www.meitca.com/HSL/ Projects/Concordia) [5] создана компанией Mitsubishi Electric с использованием языка Java и технологии RMI. Система является основой для разработки и управления эффективными сетевыми приложениями, использующими мобильных агентов. Система Concordia состоит из узлов сети, на которых установлены JVM и платформа агентов, называемая Server Concordia, а также из множества агентов, перемещающихся между ними. Для выполнения централизованного управления и администрирования в системе должен присутствовать только один менеджер администрирования.
Система Agent Tcl (http://www.cs.dartmouth. edu/~agent) [2,4,8], созданная в Дартмутском университете, представляет собой систему, основанную на применении мобильных агентов. Система Agent Tcl наделена обширными навигационными и коммуникационными возможностями, механизмами обеспечения безопасности, средствами трассировки и отладки. Основными элементами системы являются стационарный сервер агентов, выполняющий функции платформы, и сами агенты, которые могут быть написаны на языках Tcl, Java и Scheme. Реализованная подсистема залов ожидания позволяет агенту прозрачно покидать периодически подключаемый к сети компьютер (такой, как мобильный ПК-блокнот), а затем возвращаться на него снова даже в тех случаях, когда указанные подключения весьма кратковре-менны.
Среди систем, реализующих концепции мобильных агентов, можно выделить группу приложений, дополненных технологией мобильных агентов. Voyager (http://www.objectspace.com/Voyager) [14] является разработкой компании ObjectSpace. Она напи-
9
сана на языке Java и объединяет технологии распределенных вычислений RMI, CORBA, DCOM и VNM. Для выполнения операций, требующих высокой производительности, система Voyager использует технологию мобильных агентов.
Система Bee-gent (http://www.toshiba.co.jp/ c_right/index.htm) (Bonding and Encapsulation Enhance ment Agent) [1б] разработана компанией Toshiba и реализована на языке Java. Она позволяет существующим приложениям (Web-сервер, Oracle, Microsoft Access и др.) использовать агентов для переноса сообщений между ними. Таким образом, Bee-gent предоставляет возможность разработчикам строить гибкие открытые распределенные системы, которые оптимально используют существующие приложения. Система Bee-gent является FIPA-совместимой системой.
Еще одним видом приложений, основанных на использовании технологии мобильных агентов, являются приложения, ориентированные на конечного пользователя. К таким относятся, например, AgentWate и NewsTracker.
Система AgentWare фирмы Autonomy (http:// www.agentware.com) представляет собой автономную программу, в которой использованы приемы нейронных сетей, нечеткой логики и обработки текстов на естественном языке, и обладает значительной вычислительной мощностью для автоматизации многократно повторяемых операций поиска в Web. При построении нового агента ему назначается имя и описывается предмет поиска на естественном языке. Поиск проводится на одном из приспособленных для работы AgentWare серверов фирмы Autonomy.
Система NewsTracker компании Excite (http://nt.excite.com/), помимо поиска по заранее определенным категориям и ключевым словам, при просмотре каналов новостей использует персональный агент, сортирующий множество периодических изданий, имеющихся в настоящее время в Web. Хотя данный агент представляет собой пример реализации одной из самых простых технологий, NewsTracker извлекает новости из более чем 300 периодических изданий в Web [3].
Исследования в области агентных технологий начали проводиться в 80-х годах и были связаны с работами по искусственному интеллекту. На сегодняшний день насчитывается несколько десятков организаций, занимающихся разработками в этой области: ряд университетов, фирмы IBM, GenMagic, Mitsubishi Electric, Toshiba и др..
Основные направления исследований можно сформулировать следующим образом.
• Построение обобщенной модели архитектуры системы мобильных агентов, которая может служить основой для создания конкретных систем, ориентированных на решение практических задач в гетерогенной компьютерной среде. В данном направлении исследования ведутся в поисках наиболее оптимального варианта архитектуры, которая позволила бы достаточно гибко управлять пове-
дением мобильных агентов в условиях неоднородной, изменяющейся среды и в тоже время быть достаточно простой для реализации [2,4-6,10,12,16,18].
• Разработка системы безопасности. В этом направлении рассматриваются вопросы обеспечения секретности информации, передаваемой посредством агентов, и безопасности узлов, на которых выполняются агенты. В общем случае можно выделить четыре проблемы безопасности, которые присущи системам, использующим мобильных агентов: защита узлов от агентов, защита других агентов, защита агентов от узлов и защита самой сети [1,2,6,10,12].
• Создание унифицированных спецификаций, описывающих поведение, взаимодействие агентов и их взаимодействие со средой. Наличие таких спецификаций необходимо для совместимости систем, разрабатываемых различными организациями независимо друг от друга [6,10,13].
• Планирование деятельности агентов. Основной задачей этого направления является создание алгоритмов, позволяющих агентам принимать наиболее подходящие решения для выполнения своей работы в условиях гетерогенной и динамически изменяющейся среды [3,11,17].
• Исследование способов реализации систем мобильных агентов и анализ их эффективности. Критериями оценки различных способов реализации являются: простота, совместимость с другими подобными системами (СОЯБЛ, БСОМ и др.), временные показатели и показатели, характеризующие использование ресурсов [2,5,12,14,16].
Модели системы мобильных агентов. Анализ существующих систем мобильных агентов позволяет представить структуру в общем виде следующим образом (рис.1).
Приведенная структура состоит из множества компьютеров, на которых установлены платформы агентов, и самих агентов, имеющих возможность перемещаться с одного узла на другой, используя транспортные механизмы сети. При этом компьютеры могут работать под управлением разных операционных систем и на разных аппаратных платформах. Главным условием их принадлежности к систе-
10
ме является наличие на них платформ, обеспечивающих работу агента на конкретном узле.
В системе может присутствовать выделенный сервер, выполняющий функции диспетчера. Он отслеживает изменения, происходящие в системе, и перераспределяет вычислительную нагрузку, хранит информацию об агентах и платформах, обеспечивает сервис именования и управления агентами и т.д.
Другой способ организации системы состоит в отсутствии централизованного управления и администрирования. Каждая платформа имеет информацию лишь о платформах и агентах, с которыми она непосредственно взаимодействует в процессе работы. Таким образом, управление всей системой будет децентрализованным.
Множество компонентов, входящих в систему, может быть разделено на области. Членами области могут выступать как платформы агентов, так и сами агенты. Критерии разбиения системы на области могут быть разные: по географическому признаку, по принадлежности определенному домену Internet.
На членов области распространяется политика области, которая может состоять, например:
- в ограничении общения с агентами, не принадлежащими данной области;
- в требовании шифровки сообщений между агентами и агентскими платформами;
- в ограничении доступа к ресурсам членам области и т.д.
Кроме того, область может выступать как самостоятельный элемент системы при заключении каких-то соглашений с другими элементами: агентами, платформами агентов и другими областями. Предметом соглашения могут выступать алгоритмы шифрования сообщений между элементами, ограничения доступа к ресурсам и т.д.
Система мобильных агентов предназначена для работы в сети, представляющей собой динамическую среду, состав которой во времени может изменяться за счет добавления или выходов из строя как компьютеров, так и каналов связи. Чтобы показать влияние такой среды на работу системы мобильных агентов, построим формальное описание среды и определим перемещение в ней.
Структуру среды исполнения можно представить следующим образом:
E={N, р},
где N = {nh n2,....n„} - конечное множество всех узлов, составляющих сеть; p={(nk> nl )lnk е N & nl eN} - отношение, определенное на множестве узлов и описывающее физическое соединение между узлами.
Учитывая, что состав среды может изменяться во времени, структуру среды запишем следующим образом:
E(t)={N(t), р (t)}, где N(t) - множество всех узлов сети, работающих в t-й момент времени; p(t) - отношение, описывающее действительные соединения между работающими узлами в момент времени t; E(t) определяет структуру или состояние среды в каждый момент времени t.
Таким образом, жизненный цикл среды можно описать как бесконечную упорядоченную последова-
тельность состояний среды: TE={E(t1), E(t2), ..., E(ti), ...}.
Структуру системы мобильных агентов можно описать следующим образом:
M'={P, A, а},
где P = {pi,p2,----pm } - конечное множество всех агентских платформ, входящих в систему; A = {a1, а2,....ак} - конечное множество всех агентов, входящих в систему; а = { ( a, pj ) I ai e A & pj e P} - отображение, описывающее нахождение агента ai на платформе pj.
Учитывая, что состав мобильных агентов и их расположение на платформах может изменяться во времени, запишем определение системы мобильных агентов в виде:
M'(t)={ P(t), A(t), a(t)}, где P(t) - множество всех агентских платформ, работающих в t-й момент времени; A(t) - множество всех агентов, работающих в t-й момент времени; a(t) -отображение, описывающее нахождение агентов на платформах в момент времени t.
Последнее выражение задает расположение агентов на платформах системы в каждый момент времени, но оно не учитывает состояние среды. Принимая во внимание, что система мобильных агентов может использовать определенную часть сети, определим отображение т = { (pi, nj ) I pi e P & nj e N}, которое описывает нахождение платформы pi на узле nj.
Используя введенное отношение, систему мобильных агентов во взаимодействии со средой исполнения можно описать следующим образом:
M(t)={N(t), p(t), P(t), A(t), T(t), a(t)}.
В каждый момент времени t местонахождение агента в сети nk определяется составным отношением a(t)T(t), при условии, что компьютер nk подключен к сети и существует канал связи nk с компьютером, на котором агент находился в предшествующий момент времени.
Обозначим Ta траекторию перемещения агента as в последовательные моменты времени t1: t2, ..., tm между компьютерами сети. Она определяет множество компьютеров nkj, на которых находился агент в соответствующие моменты времени tj, и может быть записана в следующем виде: Tas = {nkj I (as, pi) e a(tj) & (pi, nk) eT(tj) & nk eN(tj) & (щ.ь nkjep(tj)}.
Последнее выражение показывает, что агент as находился на компьютере nk в момент времени tj, если он взаимодействовал с платформой pi, расположенной на компьютере nk, который в этот момент времени входил в состав сети и был соединен каналом связи с компьютером, на котором агент находился в предшествующий момент времени t-1.
Платформа агентов должна выполнять следующие функции: создавать, передавать, принимать, регистрировать агента; обеспечивать безопасность узла; обеспечивать устойчивую работу агентов (то есть обеспечивать выполнение агента даже в случае сбоя или перезапуска системы); взаимодействовать с агентами и другими платформами.
Все эти возможности могут быть реализованы как сервисы, предоставляемые агентам отдельными
11
компонентами платформы, которые, в свою очередь, могут быть реализованы как стационарные агенты, не перемещающиеся и потому заслуживающие большего доверия. Общая структурная схема платформы может быть представлена в виде, изображенном на рисунке 2.
Приведенная схема показывает связи агента с основными компонентами платформы.
Поведение агента, в свою очередь, можно описать с помощью модели конечного автомата: А={1, 8,
где I - набор действий, понимаемых и исполняемых агентом; 8 - набор состояний, в которых может находиться агент в любой момент времени; - начальное состояние агента; V- функции переходов агента из одного состояния в другое.
Примером такого описания является определение жизненного цикла агента, приведенного в спецификации ИРА [10] (рис. 3).
/ _ ^ —Возобновить 1 Ожидание \ 1 ) (resume) Уничтожить / (destroy) Неопределенное \
(suspended) уш___ / Активно ст Передать (move) ^—---V Создать (create)
( Передача N Инициализация
В Запустить (execute) ызвать (invoke)
Рис. 3. Жизненный цикл агента
На диаграмме переходов автомата дуги обозначены запросами, передаваемыми платформой агенту, а состояния определяют действия, выполняемые агентом.
Основной целью объединения компьютеров в единую сеть является комплексное использование их ресурсов: процессоров, памяти, дискового пространства. Правильное распределение вычислительной нагрузки между узлами затрудняется неоднородностью и динамичностью сети. Неоднородность объясняется присутствием в сети компьютеров с разной мощностью, работающих под разными операционными системами и на разных аппаратных платформах. Динамичность обусловлена изменением как производительности отдельных узлов, так и структуры самой сети (отключение и/или подключение компьютеров, разрывы линий и/или прокладка новых).
Концепция мобильных агентов позволяет преодолеть рассмотренные трудности. Переместившись на машину, где расположен требуемый ресурс, агент может работать с ним непосредственно. Перемещение на машину пользователя дает возможность аген-
ту быстро реагировать на его действия. Агент способен продолжать свое взаимодействие с ресурсом или пользователем даже при отсутствии соединения между машиной, запустившей его, и сетью.
Мобильные агенты позволяют традиционным клиентским и серверным компонентам перекладывать свою работу друг на друга в зависимости от того, насколько загружена в текущий момент каждая машина и каковы ее вычислительные возможности. Таким образом, мобильные агенты дают возможность приложению динамически распределять свои компоненты по произвольным узлам, ориентируясь на изменения обстановки в сети.
Модель мобильных агентов естественным образом вписывается в большинство распределенных приложений, так как такие агенты способны либо последовательно посещать заданные им группы машин, либо рассылать по ним дочерние агенты для параллельного охвата, либо оставаться на месте и взаимодействовать с ресурсами по сети. Допустимо и произвольное сочетание всех этих видов поведения. Распределенные приложения, использующие технологию мобильных агентов, работают эффективно и без больших затрат мощности даже в тех случаях, когда от них требуется чрезвычайно сложное поведение в условиях изменяющейся ситуации в сети.
Список литературы
1. Dany B. Lange Модель защиты для аглетов. // ComputerWeekly. - 1998. - №14. - С.38-40,41,46.
2. Kotz. D. Рынок программных средств: Agent TCL - технология программных агентов для мобильных компьютеров.
3. Ричард В. Дрейган Будущее программных агентов. // PC Magazine - март - 1997. - С.190.
4. Agent Tcl: A transportable agent system, Robert S. Gray Department of Computer Science Dartmouth College. http://www.dartmouth.edu/.
5. Concordia Version 1.1.2 Available. http://www.meitca.com/ HSL/Projects/Concordia.
6. CORBA Facilities: Mobile Agent System Interoperability Facilities Submission. MASIF Revision. Object Management Group Framingham Corporate Center, 03/1998. http://www.omg.org/pub/ docs/orbos/98-03-09.
7. Crystaliz Inc., General Magic Inc., GMD Fokus, IBM Corp.: Mobile Agent Facility. Specification. Joint Submission. Supported by: The Open Group, OMG TC Document, June 1997. http://www.omg.org/docs.
8. David Kotz Robert S. Gray Department of Computer Science / Thayer School of Engineering Dartmouth College Mobile Agents and the Future of the Internet. http://www.dartmouth.edu/.
9. Distributed Objects & Components: Mobile Agents. http://www.cetus-links.org/oo_mobile_agents.html.
10. FIPA - Foundation for Intelligent Physical Agents, Geneva, Switzerland. http://www.fipa.org.
11. IEEE INTERNET COMPUTING July- August, 1997. http://computer.org/internet/.
12. Mitsuru Oshima, Guenter Karjoth, and Kouichi Ono Проект спецификации системы Aglets 1.1. http://www.ibm.co.jp/trl/aglets.
13. OMG Request For Information Agent Technology in OMA. Object Management Group. Framingham Corporate Center, August, 1999. http://www.omg.org/pub/docs/ec/99-02-03.
14. Overview of Voyager: ObjectSpace's, Product Family for State-of-the-Art. Distributed Computing By Graham Glass, CTO ObjectSpace. 1999 ObjectSpace. http://www.objectspace.com/Voyager.
15. The Common Object Request Broker: Architecture and Specification. October 1999. http://www.omg.org/library/issuerpt.htm.
16. Tutorial Document for Bee-gent. Oct. 4th 1999. http://www.toshiba.co.jp/c_right/index.htm.
17. Stan Franklin Art Graesser Institute for Intelligent Systems -Institute for Intelligent Systems University of Memphis Is it an Agent,
Платформа мобильных
Система управления
(AMS - Agent Management System)
Белая страница
Зс
2
Сервис директории
(DF - Directory Facilitator)
Желтая страница
Р
Упр авляю щий
безопасностью
платформы
(APSM-Agent
Platform Security
-s Manager)
IE
(ACC - Agent Communication Channel)
Рис. 2. Структурная схема платформы агентов
12
or just a Program?: A Taxonomy for Autonomous Agents. I 18. Mobile Agents White Paper, General Magic, Inc. 420 North
http://www.msci.memphis.edu/~franklin/AgentProg.html. | Mary Avenue Sunnyvale. http://www.genmagic.com.
СТАТИЧЕСКАЯ ОБРАБОТКА СПЕЦИФИКАЦИЙ ПРОГРАММНЫХ СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ
В.В. Никифоров, М.В. Данилов
Автоматическое оборудование в связных и производственных системах, на транспорте и в быту все шире оснащается компьютерными системами реального времени (СРВ). Во многих случаях требования к своевременности выполнения функций этих систем являются не менее важными, чем требования логической корректности. Технология разработки таких систем должна гарантировать не только логическую корректность результатов выполнения функций системы, но и корректность распределения моментов получения этих результатов во времени [1]. Отсюда возникает необходимость составления детальных спецификаций свойств задач, образующих программную систему, составления явных и полных спецификаций межзадачных отношений. Технология разработки должна включать комплекс таких методов и средств статической обработки этих спецификаций, которые обеспечивали бы достижение требуемого уровня предсказуемости поведения программной системы.
Задачи статической обработки. В ряду задач статической обработки спецификаций СРВ выделяется подмножество, являющееся общим для программных систем произвольного назначения:
- преобразование текстов языков высокого уровня в исполняемые модули (компиляция и сборка);
- оптимизация кода в соответствии с выбранными критериями (по памяти, по быстродействию).
Другое подмножество составляют задачи, которые всегда актуальны для СРВ, и в некоторых случаях могут оказаться актуальными для более широкого класса систем. К таким задачам относятся: а) оценка объема аппаратных ресурсов, требуемых для выполнения прикладных задач, б) проверка логической корректности системы межзадачных взаимодействий. В качестве примеров, выделяемых задачам аппаратных ресурсов, можно указать: ресурс процессорного времени, требуемый для выполнения отдельной задачи; ресурс памяти, динамически выделяемой из общесистемного пула; требуемый объем стекового пространства.
Необходимая точность учета времени выполнения задач определяется жесткостью требований своевременности выполнения функций СРВ и высокой степени утилизации программной системой имеющегося ресурса процессорного времени. При разработке жестких СРВ с плотной загрузкой процессора возникает необходимость точной оценки наихудшего времени выполнения задачи (worst case execution time - WCET) и наилучшего времени (best
case execution time - BCET). Необходимость тщательного учета расхода динамически выделяемой памяти в случае СРВ обусловлена недопустимостью отказа задаче в выполнении ее запроса на выделение памяти.
Проверка логической корректности системы межзадачных взаимодействий актуальна для большинства многозадачных систем. В случае СРВ, в особенности СРВ жесткого типа, необходимо на этапе статической обработки убедиться в том, что в ходе работы системы обеспечивается:
- целостность разделяемых структур данных;
- должный порядок логически связанных действий, выполняемых различными задачами;
- отсутствие тупиков;
- отсутствие взаимных блокировок задач.
Традиционные методы обеспечения целостности
разделяемых структур данных опираются на защиту критических секций путем использования таких синхронизирующих механизмов, как семафоры и мю-тексы [6]. Для обеспечения нужного порядка действий, реализуемых различными задачами (например, когда одна задача обрабатывает данные, генерируемые другой задачей), используются те же семафоры, а также события, сигналы и тому подобные синхронизирующие механизмы. Однако при увеличении числа синхронизирующих связей возрастает опасность возникновения таких синхронизационных дефектов, как тупики и взаимные блокировки. Обнаружение потенциальной возможности возникновения синхронизационных дефектов на этапе статической обработки может оказаться трудной задачей. Поэтому разработчики многозадачных программных систем начинают ориентироваться на использование такого состава средств операционных систем реального времени (ОСРВ, которые упрощают проверку корректности программной системы на предмет невозможности возникновения такого рода дефектов.
Перечисленные задачи статической обработки актуальны как для СРВ, так и для программных систем произвольного назначения. Вместе с тем можно указать такие задачи статической обработки, которые являются специфическими для СРВ. К ним можно, в частности, отнести:
• статическое распределение приоритетов прикладных задач;
• составление статических графиков генерации системных событий;
• оценку продолжительности работы программной системы при блокированных прерываниях
13