БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Выпускная работа по«Основам информационных технологий» Магистрант факультета прикладной математики и информатики кафедры информатики Шалай Михаил Сергеевич Руководители: доктор тех. наук Буза Михаил Константинович ст. преподаватель Кожич Павел Павтович Минск – 2010 г. Оглавление Оглавление 3Список обозначений ко всей выпускной работе 4Реферат на тему «Применение ИТ в системах Мобильных агетов» 5 Глава 1. Введение 5^ Глава 2. Понятия технологии мобильных агентов 5 2.1 Основные понятия 5 Глава 3. Использование мобильных агентов 12 3.1 Классификация и свойства агентов 13 3.2 Области применения мобильных агентов 15 3.3 Объекты стандартизации 16 3.4 Требования к реализации АС 18^ Глава 4. Разработка информационной системы 20 4.1 Мобильные агенты в Java 20 4.2 Требования к системе 25 4.3 Постановка задачи 26 4.4 Классическое решение 26 4.5 Решение на основе мобильных агентов 28 Заключение 32 Список литературы к реферату 33Предметный указатель к реферату 35Интернет ресурсы в предметной области исследования. 36Действующий личный сайт в WWW 37Граф научных интересов 38Презентация магистерской диссертации 39Список литературы к выпускной работе 40Приложениe А 41 ^ Список обозначений ко всей выпускной работе RP удаленное программированиеRPC метод удаленного вызова процедурАС агентская система^ ИТ информационные технологииКИ коммуникационная инфраструктураМА мобильный агентМТ мобильные технологииСМА система мобильных агентов^ Реферат на тему «Применение ИТ в системах Мобильных агетов» Глава 1.Введение Технология мобильных агентов достаточно новая, поэтому системы программирования мобильных агентов существенно различаются по архитектуре и реализации. Эти различия препятствуют интероперабельности и быстрому внедрению систем мобильных агентов. Учитывая уже существующие системы, как объектные, так и не объектные, следует выделить аспекты, которые необходимо стандартизировать для обеспечения интероперабельности систем мобильных агентов.Интероперабельность достигается при стандартизации таких аспектов, как передача агентов и служебных используемых агентом классов или кода для необъектных систем между агентскими системами, а также управление агентами. Под управлением агентами подразумеваются функции администратора агентской системы, такие как создание агента заданного класса, его уничтожение, прерывание и возобновление деятельности агента, то есть соответствующем потоке управления.Поэтому основной целью данной дипломной работы была рассмотрение и реализация таких моментов как: разработать концепцию и программные интерфейсы системы мобильных агентов; выполнить программную реализацию агентной системы; выполнить программную реализацию системы на основе классического подхода клиент-сервер; исследовать эффективность использования агентной технологии в сравнении с классической клиент-серверной архитектурой.На следующем этапе следует стандартизировать действия агентских систем при пересечении агентом нескольких доменов безопасности, а также формат представления кода и состояния агента при его перемещении между агентскими системами разных типов.^ Глава 2.Понятия технологии мобильных агентов Основные понятия Для рассмотрения предметной области, в рамках которой выполнялась дипломная работа, введем понятия следующих сущностей, которые являются базовыми в технологии мобильных агентов.АгентАгент – это компьютерная программа или процедура, которая выполняет определенные действия на удаленной машине, причем агент действует в интересах некоторого конкретного клиента – пользователя или системы [1].Агент определяется как программа, выполняющаяся от имени некоторого владельца. Агент имеет собственный поток управления и в объектных агентских системах рассматривается как активный объект. Агент имеет код и состояние, причем в понятие состояния включается состояние выполнения, являющееся либо регистровым контекстом данного агента, либо набором значений атрибутов, определяющим деятельность агента при возобновлении его выполнения после миграции. Агенты однозначно идентифицируются следующим набором значений: владелец агента, имя агента и тип агентской системы, создавшей данного агента.^ Стационарный агентСтационарный агент выполняется только на той системе, на которой был инсталлирован и запущен. Для установления контакта с удаленным агентом или получения данных из другой системы стационарный агент использует, например, метод удаленного вызова процедур (RPC) [1].^ Мобильный агентМобильный агент – это программа, которая может перемещаться от одной сетевой машины к другой, выбирая самостоятельно время и место перемещения. При перемещении состояние мобильного агента запоминается и переносится на новую машину, что позволяет продолжить работу агента [4]. Применение мобильных агентов реализует идею удаленного программирования (RP). Клиент создает процедуру, которая способна выполнить требуемую работу на удаленной машине. Затем клиент передает эту процедуру для выполнения на удаленной машине (сервере).Мобильный агент не привязан к системе, на которой он был запущен. Он обладает способностью перемещаться посредством сети из одной системы в другую. Это представление является основополагающим для мобильных агентов. Способность к перемещению позволяет мобильному агенту попасть в систему адресат, содержащую объект, с которым агент должен осуществить взаимодействие. Кроме того, агент может воспользоваться сервисами, предоставляемыми системой адресатом. Тем не менее, современные распределенные системы ориентированы на коммуникационные потребности стационарных агентов и не отвечают потребностям мобильных агентов. Мобильные агенты обладают большими возможностями и потребностями, чем какая-либо из существующих распределенных систем. Состояние агентаВо время перемещения агента, его состояние и код транспортируются вместе с ним. В данном контексте, состоянием агента может быть: рабочее состояние; значения атрибутов агент;Под рабочим состоянием понимается его состояние выполнения, а под значением атрибутов агента – атрибуты определяющие последовательность действий, которые должны быть выполнены после возобновления работы агента в системе адресате [2]. Значения атрибутов агента включают системное состояние, ассоциированное с агентом, т.е. время жизни агента. ^ Рабочее состояние агентаРабочее состояние агента, это состояние его выполнения, включая счетчик команд и стековый фрейм [7]. Полномочия агентаПолномочия агента представляют персону или организацию, от имени которых выполняется агент. Технологией предоставляется возможность проверки полномочий агента системой адресатом [7].^ Имена агентовАгентам назначаются имена, которые можно использовать при выполнении управляющих операций и при поиске агента через систему имен. Агенты именуются исходя из их полномочий, уникального идентификатора и типа агентской системы. Идентификатор агента - уникальное значение в рамках полномочий, определяющее конкретную копию агента [1]. Комбинация полномочий, идентификатора и типа агентской системы является глобально уникальным значением. Поскольку имя агента является глобально уникальным и не может быть изменено, его можно использовать в качестве ключа в операциях, ссылающихся на конкретную копию агента.^ Местоположение агентаМестоположением агента является адрес места (также см. понятие "Место") [4]. Место находится внутри агентской системы. Следовательно, местоположение агента должно содержать имя агентской системы, внутри которой находится агент и имя места. Надо заметить, что если местоположение не содержит имени места, то адресуемая агентская система выбирает место по умолчанию.^ Агентская системаАгентская система - это платформа, которая может создавать, интерпретировать, запускать, перемещать и уничтожать агенты [1]. Также как и агент, агентская система ассоциируется с полномочиями, которые определяют организацию или персону, от имени которых работает система. Агентская система с полномочиями конкретного пользователя, реализует политику безопасности этого пользователя в плане защиты его ресурсов.Агентская система однозначно идентифицируется именем и адресом. На одной машине могут располагаться несколько агентских систем. Схема агентской системы отображена на рисунке 1.^ Рисунок 2.1 – Агентская системаАгентская система должна обеспечивать безопасное окружение для функционирования агентов, в том числе поддерживать концепцию региона. Для того чтобы обеспечить безопасность системных ресурсов, агентская система должна уметь идентифицировать и проверять права сущности (клиента), создавшей агента. Агент, также как и агентская система, может определять собственную концепцию безопасности. Конкретная концепция безопасности выбирается в динамике. Концепция безопасности может ограничивать права доступа и используемые ресурсы. При миграции и вызове методов агент может специфицировать требуемый уровень безопасности. Для безопасного взаимодействия агентов требуются: идентификация клиента, взаимная идентификация агентских систем, идентификация агентов и распространение их полномочий.^ Тип агентской системыТип агентской системы описывает совокупность параметров агента. Например, если типом агентской системы являются "аглеты", то это означает, что агентская система создана компанией IBM, поддерживает язык Java в качестве языка реализации агентов, и использует Java Object Serialization для преобразования агентов в последовательную форму.^ Связь между агентскими системамиВсе общение между агентскими системами происходит через коммуникационную инфраструктуру (КИ). Администратор сетевого региона определяет службы коммуникации для внутрирегионных и межрегионных взаимодействий. Рисунок 2 показывает связи между агентскими системами. ^ Рисунок 2.2 – Связь между агентскими системамиМестоКогда агент перемещается, он движется между стационарными процессами, называемыми местами. Место - контекст внутри агентской системы, в котором может быть запущен агент. Этот контекст может предоставлять набор функций, таких как контроль доступа [4]. Исходное место и адресуемое место могут находиться как в пределах одной агентской системы, так и в различных агентских системах, поддерживающих одинаковую совокупность параметров агента. Место сопоставляется с местоположением, агентская система может содержать одно или несколько мест и место может содержать одного или более одного агентов. Хотя место определяется как окружение, в котором запускается агент, если агентская система не реализует понятие места, то место определяется по умолчанию. Когда клиент запрашивает местоположение агента, то в качестве ответа он получает адрес места, где выполняется агент. РегионРегион - совокупность агентских систем обладающих общими полномочиями, но не обязательно принадлежащих к одному типу агентских систем. Концепция региона позволяет несколько агентских систем представлять одной персоной или организацией [5]. Регионы позволяют реализовать возможность масштабирования, поскольку можно распределить нагрузку между несколькими агентскими системами. Регион реализует уровень абстракции для клиентов, связывающихся из других регионов. Клиент, пожелавший установить контакт с агентом или агентской системой, может не знать местоположения агента. Вместо этого, у клиента есть адрес региона, что по существу является адресом агентской системы назначенной в качестве точки доступа региона, и имя агента или места. Этой информации достаточно для организации коммуникации с агентом или агентской системой. Агент может обладать теми же полномочиями, что и регион, в котором он находится и выполняется. Это означает, что агент представляет туже организацию или персону, что и регион. Обычно, настройка региона позволяет наделить подобные агенты большими правами, по сравнению с другими резидентными агентами, обладающими отличными полномочиями. Например, агенту с теми же полномочиями, что и у системы, могут быть назначены административные привилегии. Регион полностью связывает агентские системы, находящиеся внутри его границ и позволяет осуществлять обмен информации между ними посредством модели сетевого соединения point-to-point. Каждый регион содержит одну или несколько точек доступа, посредством которых регионы соединяются в некоторую форму сети. Архитектура регионов отображена на рисунке 3. Рисунок 2.3 – РегионыСвязь между регионамиРегионы соединяются посредством одной или более сетей и могут совместно использовать службу имен, организованную на основе соглашений между администраторами регионов и особенностях реализации регионов. Неагентские системы могут также связываться с агентскими системами в переделах региона, если обладают соответствующими разрешениями. Регион содержит одну или несколько агентских систем. Агентские системы и клиенты вне региона получают доступ к ресурсам внутри региона посредством агентских систем открытых для внешнего мира, подобно варианту с работой брандмауэра. Эти агентские системы определяются как точки доступа к региону. Агенты наделяются правами доступа соответствующими полномочиям региона, в котором они запущены. Используя это определение, можно рассматривать регион как домен безопасности в нотации CORBA. Рисунок показывает связь между регионами. ^ Рисунок 2.4 – Связь между регионамиСериализация / десериализацияВводят следующие понятия, которые вообще говоря и положили начало парадигме мобильных агентов:Сериализация - процесс сохранения агента в последовательной двоичной форме [6]. Десериализация - процесс восстановления агента из последовательной формы [1].При разработке и реализации МС одной из сложных задач является сериализация/десериализация мобильного кода. При перемещении мобильного агента необходимо передавать все объекты, составляющие этот агента, представив в виде массива байт для передачи на другой узел с последующей восстанволением объектов. Как правило, для десериализации необходимы также классы объектов представляющих агента.Ключ к перемещению агента лежит в сохранении его состояния в последовательной форме, достаточной для его последующего воссоздания. Надо заметить, что последовательная форма должна обладать возможностью определения и проверки классов, поля из которых в ней содержатся.^ Источник кодаИсточник кода определяет местоположение классов используемых агентом. Это может быть как агентская система, так и не распределенный объект, такой как Web-сервер. Если агентская система ответственна за предоставление необходимых классов, источник кода должен содержать достаточный объем информации для нахождения агентской системы. Такая АС называется провайдером классов.^ Коммуникационная инфраструктураКоммуникационная инфраструктура обеспечивает транспортные службы связи, например, RPC, службу имен и службу безопасности для АС. ЛокальностьВ случае мобильных агентов, локальность определяется как близость к адресату информации в пределах отдельной машины или сети. Итак, были рассмотрены базовые понятия, относящиеся ко всем реализациям агентских систем.^ Глава 3.Использование мобильных агентов В нотации мобильных технологий определим клиента как сущность, пользующуюся услугами агента. В нашем случае клиент также является владельцем агента. В случае мобильных агентов на каждом вычислительном узле должен существовать сервер (АС), то есть платформа, предоставляющая функциональность для создания/уничтожения, приема/передачи и среду для выполнения агентов. Эта среда должна быть безопасной. Для организации взаимодействия агентов должен существовать сервис именования, т. е. сервис, предоставляющий возможность работы с сущностью, зная только ее имя. Функции этого сервиса выполняет агентская система. Агентская система может иметь своего владельца. Агентская система имеет определенный тип, то есть агенты, управляемые ей, имеют некоторый профиль. Например, в понятие профиля агента могут входить: язык реализации агента, производитель, алгоритм сериализации агента. Профили необходимы для обеспечения взаимодействия различных систем - так, зная профиль агента, система в состоянии определить, может ли она обеспечить среду для выполнения этого агента. Агентская система может поддерживать понятие Места. В этом случае сеть компьютеров представляется как набор мест, предоставляющих сервисы. С другой стороны, место является контейнером и фабрикой агентов. Агент порождается в месте и умирает в месте. В течение жизненного цикла агент перемещается между местами. Сервисы, предоставляемые местом, используются агентами, находящимися в нем. Места могут существовать как на стороне клиента, так и на стороне сервера. Место может накладывать ограничения на ресурсы, которые используют агенты, находящиеся в нем, а также хранить "следы" посещавших его агентов, а агент может в свою очередь содержать "историю" своей жизнедеятельности, которая может использоваться для проверки поведения агента, например, для проверки ограничений безопасности, и для обучения агента на собственном опыте. Если понятие места не поддерживается, его функции берет на себя сама агентская система. Так же следует отметить, то агент может порождать других агентов. Таким образом, возникает проблема делегирования задач и полномочий, управления совокупностями агентов, имеющими общих предков ("поколениями" и "семьями" агентов). Что же касается аспекта безопасности, то агент может выполнять задание, если он располагает достаточными для этого ресурсами и имеет соответствующие права. В противном случае он может искать другого агента, способного выполнить это задание. Агент также может отказаться от выполнения задания, поскольку он перегружен в данный момент или очередь заданий этого агента переполнена.^ Классификация и свойства агентов Прежде чем сказать о применение мобильных агентов следует познакомиться с их некоторыми свойствами. Ключевыми и характерными свойствами МА являются: автономность, взаимодействие, мобильность. Кроме этого существуют и другие свойства агентов. Рассмотрим эти и другие свойства более подробно: автономность - агенты могут выполнять свои задачи без непосредственного вмешательства клиентов или других агентов; взаимодействие - при возникновении потребности агенты взаимодействуют с другими агентами или людьми с целью получения или оказания помощи в решении задачи; мобильность - способность перемещаться между различными узлами сети во время выполнения; агенты, не обладающие этим свойством, называются статическими.Как уже упоминалось, перечень свойств агентов можно расширить: реактивность - агенты реагируют на изменения среды в реальном времени, обычно их деятельность описывается следующим образом: WHEN event IF condition THEN action; проактивность - способность решать задачи и достигать цели; в отличие от реактивных агентов, они не просто реагируют на изменения среды, но и сами ее опрашивают; способность существовать как постоянно выполняющийся процесс, точнее, иметь собственный поток управления; способность выполняться от имени некоторого владельца; гибкость - действия агентов не фиксированы жестко; интеллектуальность или обучаемость - способность находить новые решения; такие агенты могут изменять свое поведение, используя как свой опыт, так и опыт других агентов. Что же касается классификации систем мобильного кода, выделяют несколько направлений:1) по источнику инициализации запроса на перемещение кода: источником кода; получателем кода; самим кодом.Примером, первого случая служат системы управления информационными системами, которые посылают мобильный код для выполнения в другом узле информационной системы с целью выполнения управляющего воздействия. Примером, второго случая служит уже приведенный пример загрузки JavaScript браузером. В третьем случае код называют программным мобильным агентом, а узлы, между которыми перемещается агент, называют узлами каркаса системы мобильных агентов.Стоит упомянуть, что согласно теории агентных технологии, под программным агентом понимается объект, который обладает собственным потоком управления, соответственно самостоятельно принимает решения о собственном перемещении. В первом случае, мобильный код также может называться агентом управления. 2) по уровеню мобильности: Слабо мобильные; Сильно мобильные. Слабая мобильность подразумевает перемещение только самого кода и его выполнение на новом месте. Сильная мобильность кроме перемещения подразумевает сохрание внутреннего состояни перемещаемого кода, а именно сегмента выполнения и внутренние переменные. Перемещаемый код также может сохранять ссылки на объекты узла, из которого он переместился, с целью последующего удадленного вызова методов этих объектов. Естественно сильная мобильность требует более сложного программного обеспечения чем слабая. Осевидно, что системы программных мобильных должны поддерживать сильную мобильность, в противном случае при перемещении агент будет терять состяние и соответственно, реализовать бизнес логику выполняемую распределенно не представляется возможным.Будем придерживаться определения, согласно которому первые три свойства являются обязательными для агента, а остальные - необязательными. Классификация же агентов - от "слабых" к "сильным", то есть по степени, в которой проявляются эти свойства. Как минимум агент - это сущность, которая взаимодействует со своим окружением. Пример работы агентов разных типов: один "большой", интеллектуальный агент посылает множество "маленьких", мобильных агентов, которые осуществляют поиск данных, а он сам - ее обработку. ^ Области применения мобильных агентов Рассмотрим в каких задачах могут применяться мобильные агенты: 1) Мобильные вычисления. Миграция агентов может поддерживаться не только между постоянно подсоединенными к сети узлами, но и между мобильными платформами, подключаемыми к постоянной сети на некоторые промежутки времени и возможно по низкоскоростным каналам. Клиент подсоединяется к постоянной сети на короткий промежуток времени с мобильной платформы, отправляет агента для выполнения задачи и отсоединяется; затем клиент подсоединяется к другой точке сети и забирает результаты работы агента. Второй вариант - сервер, на который должен переместиться агент, подсоединяется к сети, а затем отсоединяется. В этом случае агент должен уметь переместиться на такой временно подсоединяемый сервер и вернуться в постоянную сеть. 2) Задачи управления информацией: Поиск информации. Большие объемы информации на сегодняшний день сильно затрудняют поиск и обработку данных. Человек порой не в состоянии найти необходимую ему информацию и проанализировать ее. Использование же агента на основе мобильных технологий, который странствует по сети в поисках информации, лучше всего удовлетворяющей потребности человека. Поисковые агенты содержат сведения о различных информационных источниках, включая тип информации, способ доступа к ней, а также такие характеристики информационного источника, как надежность и точность данных; Отбор или как еще называют в нотации МТ обработка информации. Под отбором информации понимается процесс обработки из всех данных, приходящих к клиенту, только те данные, которые могут быть интересны клиенту. Более распространено использование обработки информации на основе мобильных агентов в комбинации с поисковыми агентами, когда сначала осуществляется поиск информации, а затем ее отбор согласно требованиям запроса; Мониторинг данных. Извещение пользователя об изменениях в различных источниках данных в реальном времени. Например, мобильный агент перемещается на вычислительный узел, на котором расположен источник данных. Этот подход эффективнее, чем использование статического агента, посылающего запросы источнику данных; Универсальный доступ к данным. Агенты - посредники для работы с различными источниками данных, имеющие механизмы для взаимодействия друг с другом. Например, агент создает несколько агентов, каждый из которых работает со своим источником данных. Вообще говоря, агентные технологии находят все большее применение в современном информационном мире и используются в таких направлениях как управление, мониторинг, конфигурирование информационных систем. И как уже отмечалось, яркими примерами использования агентов может быть поиск информации (data mining, когда агенты взаимодействуют с серверами баз данных и хранилищами данных), электронная коммерция и др.^ Объекты стандартизации Технология мобильных агентов достаточно новая, поэтому системы программирования мобильных агентов существенно различаются по архитектуре и реализации. Эти различия препятствуют интероперабельности и быстрому внедрению систем мобильных агентов. Учитывая уже существующие системы, как объектные, так и не объектные, следует выделить аспекты, которые необходимо стандартизировать для обеспечения интероперабельности систем мобильных агентов.Важнейшей целью технологии является достижение взаимодействия между системами агентов различных производителей. Возможность взаимодействия становится более реальной, если стандартизировать такие общие для всех агентских систем операции как перемещение агента, перемещение класса агента, и управление агентами. Таким образом, в первую очередь стандартизуются следующие моменты: управление агентами; перемещение агентов; имена агентов и агентских систем; типы агентских систем; синтаксис местоположения.Рассмотрим их более подробно.Управление агентами или стандартизация операцийВопрос стандартизации управления агентами вызывает большой интерес в среде разработчиков систем мобильных агентов. Необходимо предусмотреть возможность управления различными системами мобильных агентов посредством стандартных операций, чтобы облегчить работу администратора подобных систем.Должен быть определен следующие аспекты: стандартный путь создания агентов из данных для агента классов; операция приостановки потока управления агента; операция восстановления работы приостановленного потока управления; операция завершения работы агента.Определение общих управляющих функций позволит одному администратору управлять системами мобильных агентов разных типов.^ Перемещение агентовСуществуют две причины, по которым локальное взаимодействие двух агентов предпочтительней сетевому: количество сетевых транзакций и мониторинг данных. Эффективность локального взаимодействия достигается посредством перемещения агента из локальной агентской системы в удаленную систему.Следует отметить, что если участок сети между двумя агентами обладает низкой пропускной способностью, поиск информации через сеть становится накладным занятием по сравнению с локальным перемещением данных. Например, в случае, если два агента используют технологию RPC для коммуникационных нужд, то передача информации между агентами требует многократных сетевых транзакций.Мониторинг данных - это задача, которая выполняется ежечасно. Например, наблюдение за состоянием определенной машины и группы машин. В таком случае предпочтительней послать агента на платформу, которая предоставляет необходимые данные, чем использовать локального агента, который будет периодически слать запросы к удаленной платформе. Для подобного типа приложений мобильность является ключевым свойством МА, ведущем к снижению затрат и более эффективному использованию ресурсов. Имена агентов и агентских системПомимо стандартизации операций необходимых для достижения способности к взаимодействию между агентами, следует определить семантику различных параметров агента. Особо следует отметить следующие параметры: имя агента; имя агентской системы; местоположение.Для применения управляющего воздействия к агентам, необходимо идентифицировать агента, к которому данное воздействие применяется. Поэтому нужно стандартизировать синтаксис имен агентов. Введение подобного синтаксиса позволит получить еще несколько положительных моментов, например, агентская система сможет сразу определить, поддерживает ли она тип входящего агента, а два агента смогут идентифицировать друг друга по именам. ^ Тип и местоположение агентской системыНеобходимо также стандартизировать синтаксис местоположения, так чтобы агент смог получить информацию о типе удаленной системы, а локальная и удаленная агентская система смогли идентифицировать друг друга. Если удаленная система поддерживает данный тип агента, то можно производить операцию перемещения агента в эту систему.Также важно присвоить каждому типу агентской системы уникальное имя, обычно присваивается фирмой разработчиком МС. Гарантия уникальности подобных имен позволит избежать путаницы между различными типами агентских систем.Итак, были рассмотрены основополагающие аспекты МТ, такие как свойства МА, области применения и использования мобильных агентов, основные требования для реализации и стандартизации агентной системы в нотации МТ.^ Требования к реализации АС При разработке и реализации мобильных систем приходится решать несколько сложных проблем: Обеспечение переносимости кода на различные платформы; Доступность на множестве платформ; Обеспечение атомарности выполнения и перемещения агентов; Поддержка сетевого взаимодействия; Обеспечение безопасности; Многопоточная обработка; Сериализации и десериализация объектов, загрузка классов.Рассмотрим подробнее каждую из проблем с точки зрения нотации мобильных технологий.^ Обеспечение переносимости кода на различные платформыПонятие мобильности неразрывно связано с понятием переносимости. Переносимость кода можно обеспечить двумя различными способами. Можно реализовать ее посредством использования интерпретируемых языков, таких как, например, Perl, Tcl и др., обеспечив каждую вычислительную машину соответствующим интерпретатором, можно использовать один из языков, поддерживающий раздельную компиляцию, например, Java, Oberon и др. Кроме того язык должен поддерживать механизмы посылки, передачи, получения и выполнения мобильного кода.^ Доступность на множестве платформЭто требование является продолжением предыдущего. Мобильные агенты должны осуществлять свою работу в гетерогенной компьютерной среде. Любой компьютер должен уметь принять и обеспечить работу мобильного агента. Обеспечение атомарности выполнения и перемещения агентов. При перемещении мобильного агента необходимо обеспечивать атомарность выполнения агентов, т.е. при перемещении мобильного агента следует перемещать все объекты, составляющие его, а также обеспечивать уничтожение потока агента лишь только после успешного перемещения. Сложность обеспечения атомарность заключается в том, что мобильный агент самостоятельно вызывает свое перемещение, по крайней мере, он должен обладать такой возможностью. Соответственно, когда агент делает вызов на перемещения поток, агента выполняется. Таким образом, если выполнить сериализацию в этот момент, то переменные могут иметь неправильные значения, кроме того обеспечить атомарность перемещения уже невозможно, так как необходимо выполнить.^ Поддержка сетевого взаимодействияПомимо операций непосредственно связанных с перемещением между агентскими серверами, агент должен обладать средствами для коммуникации с другими агентами и доступа к удаленным ресурсам. Поэтому поддержка сетевых услуг должна включать в себя широкий спектр возможностей, таких как служба имен, RPC, OLE, CORBA, RMI и т.д. ^ Многопоточная обработкаДля реализации одновременного выполнения нескольких действий агентская система должна включать в себя поддержку параллельного выполнения функций агента и поддержку средств синхронизации. БезопасностьМобильные агенты, приходящие из сети, могут содержать потенциально опасный, вредоносный код. Поэтому система должна поддерживать средства обеспечения безопасности достаточные для ее нормальной работы.Иначе говоря, необходимо обеспечить безопасность узла информационной сети от разрушительный действий принимаемых агентов, а также защитить агентов друг от друга. Первое, как правило, заключается в ограничении доступа агента к средствам узла и операционной системе, а также проверке достоверности происхождения агента, что реализуется с использованием системы безопасности операцинной системы (ограничение процесса узла каркаса) и виртуальной машины со внутренней системой безопасности. Проверка происхождения мобильного агента обеспечивается путем подписанием кода и передаваемых сериализованных объектов и защищенной коммуникацией на основе криптографических алгоритмов.^ Глава 4.Разработка информационной системы Мобильные агенты в Java Платформа J2SE прекрасно подходит для организации систем мобильного кода, что подтверждается большим количеством платформ мобильных агентов на данном языке. В большая часть программного обеспечения ориентирована на платформу Java. Популярные системы мобильных агентов Tryllian ADK и DIET построены на основе J2SE.Рассмотрим, средства Java обеспечивающие популярность данной платформы среди разработчиков систем мобильного кода. Многопоточность и синхронизация. Платформа J2SE обладает средствами для создания многопоточных систем. Легко создать и запустить новый поток. Потоки могут использовать. Объекты могут иметь синхронизированные методы и атрибуты. Начиная с Java 5 Tiger многопоточные средства были расширены за счет пакетов java.util.concurrent, которые включили средства для атомарных операций, различные семафоры, классы для организации очередей, и создания задач, выполняемых по расписанию и т.п.;Сериализация объектов. Платформа J2SE включает средства для сериализации объектов в поток байт. Естественно не все объекты могут быть сериализованы, например, сокет TCP или дескриптор файла. Сериализованный объект Java сохраняет все сериализуемые атрибуты, таким образом сериализуется так называемая «звезда» объектов;Динамическая загрузка классов. При необходимости классы Java могут быть загружены в виртуальную машину из любого источника, путем расширения базовой функциональности системных загрузчиков классов;Система безопасности. Как известно, Java код выполняется в среде виртуальной машины, что с одной стороны позволяет избавить программистов от рутинных и сложных моментов по выделению памяти и сборке мусора. С другой стороны выполнения кода позволяет ограничить выполняемый код в доступе к ресурсам операционной системы и другому выполняемому коду. Java 2 Security обеспечивает динамическое определение прав, а разграничение прав по источнику кода;Кроссплатформенность. Платформа Java изначально разрабатывалась с учетом возможности выполнения в любой среде. Точнее J2SE есть набор стандартов, определяющих какие средства д