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

кандидата физико-математических наук
Дышлевой, Константин Викторович
город
Москва
год
1997
специальность ВАК РФ
05.13.11
Автореферат по информатике, вычислительной технике и управлению на тему «Организация взаимодействия объектов в неоднородной распределенной среде. Оболочечный подход»

Автореферат диссертации по теме "Организация взаимодействия объектов в неоднородной распределенной среде. Оболочечный подход"

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ г •>' ИМ. М.В. ЛОМОНОСОВА.

сь- Ф-Т ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ

-

>4

На правах рукописи УДК 681.3.513

ДЫНШЕВОЙ Константин Викторович

ОРГАНИЗАЦИЯ ВЗАИМОДЕЙСТВИЯ ОБЪЕКТОВ В НЕОДНОРОДНОЙ РАСПРЕДЕЛЕННОЙ СРЕДЕ. ОБОЛОЧЕЧНЫЙ ПОДХОД.

05.13.11 - МАТЕМАТИЧЕСКОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ МАШИН, КОМПЛЕКСОВ, СИСТЕМ И СЕТЕЙ.

Автореферат диссертации на соискание ученой степени кандидата физико-математических наук

Москза 1997

Работа выполнена на кафедре Системного Программирования факультета ВМиК МГУ.

Научный руководитель: профессор,

член-корреслоидонт РАН В.П. Иванников

Официальные оппоненты: профессор,

доктор физико-математических наук Э.З. Любимский

доцент,

кандидат физико-математических наук С. С. Гайслрян

Ведущая организация: Вычислительный Центр РАН.

Защита состоится Ае-^сС-^уг-^ 1997 Г. в 11 час.

в ауд. 685 на заседании диссертационного совета Д 053.05.38 при факультете ВМиК МГУ.

С диссертацией можно ознакомится в библиотеке факультета ВМиК МГУ.

Автореферат разослан " ¿- " 1997 г.

Ученый секретарь диссертационного совета профессор,

кандидат физико-математических наук

уЦи^, _Н.11. Трифонов

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Актуальность темы создания высокоэффективной и надежной среды, управляющей взаимодействием объектов разнородных распределенных приложений, очевидна и объясняется необходимостью согласования уже имеющегося и вновь создаваемого программного обеспечения, реализованного на различных языках программирования и разнообразных аппаратных платформах. Наблюдаемая в современном мире тенденция к повышению уровня доступности ПО для пользователей и уровня взаимодействия разработчиков ПО объясняет наличие потребности в обеспечении простого и удобного механизма организации совместной работы разнородного ПО.

Работа опирается на последние достижения в области организации совместной работы распределенных систем и управления поведением различных элементов таких систем. Так, предлагаемый в работе оболочечный подход использует в качестве реализационного базиса технологию СОИВА, развиваемую с 1995 года концерном ОМС. Предлагаемые в СОИВА механизмы организации удаленных вызовов и спецификации СОИВА сервисов, список которых постоянно расширяется, уже сейчас используются во многих современных программных продуктах.

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

В последнее время отмечается бурный рост скоростных возможностей вычислительной техники, а также существенное увеличение объемов как внешней, так и оперативной памяти ЭВМ. В связи с этим зачастую уходят на второй план такие аспекты, как размер программ и

даже скорость их работы. Вопрос же надежности программирования не только остается одним из главных, но и во многих случаях он начинает играть первостепенную роль. Так, при возможности выбора из большого числа предлагаемых систем, решающих сходные задачи, пользователь все чаще выбирает не ту, которая требует меньше дискового пространства или работает, скажем, на 10% быстрее, а ту, которая более надежна и вызовет, поэтому, наименьшее количество проблем при эксплуатации. Конечно же, это касается и систем программирования.

В связи с вышесказанным становится очевидным, что весьма актуальным является приводимый в работе анализ надежности программирования с использованием технологии СОИЗА и языка программирования С++. Конечно же, кроме описания проблем приводится и предлагаемый автором способ их решения.

Целью диссертационной работа являлась разработка в рамках объектно-ориентированного подхода и модели взаимодействия объектов "клиент-сервер" технологии создания среды обитания объектов приложений, выраженной в виде концепции оболочек, и предназначенной для обеспечения различных аспектов функционирования таковых объектов. В т.ч. управления временем жизни объектов, ил именования, обеспечения многопользовательского доступа к объектам и их постоянного хранения, организации удаленных вызовов и многих других. Одним из важнейших элементов работы была модернизация технику метаобъектных протоколов в целях применения ее для эффективного управления указанными аспектами. Кроме того, существенное место в работе занимает решение задачи повышения надежности программирования в рамкам предложенного подхода с использованием языке программирования С++.

Научная новизна работы состоит в следующем:

• предложен оболочечный подход для решения -задачу организации совместной работы разнородны> распределенных систем;

• предложен новый подход работы с метаобъектными протоколами, направленный на повышение эффективности управления поведением объектов;

• предложено альтернативное стандарту ССЖВА отображение языка спецификации интерфейсов ЮЬ в язык программирования С++. Это отображение направлено на решение проблемы повышения надежности.

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

программирования С++, основанный на использовании предлагаемого в диссертации альтернативного стандарту ССЖВА отображения ЮЬ/С++, а также компилятор языка ТЬ, предложенный в работе в качестве средства спецификации метаобъектного контроля.

Апробация работы. Работа была представлена на заседании объединенного научно-исследовательского семинара кафедр Автоматизации Систем Вычислительных Комплексов, Алгоритмических Языков и Системного Программирования 21 мая 1997 г.

Кроме того, основные результаты работы неоднократно докладывались на семинарах в. Институте Системного Программирования РАН.

Публикации. Представленные к защите результаты опубликованы в работах [1-6].

Объ ем я структура диссертации. Работа состоит из введения, четырех глав, заключения, списка литературы и трех приложений. Общий объем диссертации составляет 100 страниц машинописного текста, в том числе 10 рисунков и. список литературы из 29 наименований.

КРАТКОЕ СОДЕРЖАНИЕ РАБОТЫ

Во введении обосновываются дели и задачи данной работы, ее актуальность, научная новизна и практическая значимость. Приводится краткое содержание работы.

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

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

Для организации различных аспектов деятельности множества объектов предлагается представлять его покрытым множеством специального вида подмножеств оболочек. Каждая оболочка содержит некоторую совокупность семантически взаимосвязанных объектов. Оболочка также представляет собой особого вида объект.

Любое взаимодействие двух удаленных объектов поддерживается прозрачным образом оболочками,

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

Для подключения прикладных объектов к метаконтексту используется специализированный метаобъект

интерфейсный объект (ИО), играющий роль посредника между объектом приложения и системой.

Таким образом, для организации совместной работы элементов распределенной совокупности ■ объектов используется техника метаобъектного контроля

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

Описываемый в работе подход предусматривает на этапе проектирования оболочек (т.е. проектирования метаконтроля) использование трех языков: языка реализации (например, С++),• языка спецификаций интерфейсов (IDL) и языка описания метаобъектных связей (TL) .

Во втором разделе главы описываются наиболее известные на сегодняшний день разработки, базирующиеся на использовании техники метаобъектного контроля. В частности, рассматриваются языки CLOS и Iguana, проект аспектно-ориентированного программирования, стандарт Meta Object Facility OMG, модель SOM IBM, Orbix (реализация CORBA) и операционная система Tigger.

Во многих работах в области метаконтроля используются такие ключевые термины, как рефлексия, реификация и метаобъектные протоколы (МОП).

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

(метаинформации) . Подобная . информация обычно

представляется в виде совокупности специальных объектов (метаобъектов) , участвующих некоторым образом в работе

основных объектов. Таким образом, метаобъекты осуществляют метаконтроль основных объектов. Подобное овеществление метаинформации в виде совокупности метаобъектов принято называть реификацией

(reification).

Конкретная реализация рефлективной объектной модели называется метаобъектным протоколом {МОП) ._ МОП определяет объекты метауровня (метаобъекты), которые необходимы для реализации этой объектной модели.

В последнем разделе первой главы рассматривается архитектура CORBA консорциума OMG, послужившая реализационным базисом предлагаемого подхода.

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

В модели, предложенной в CORBA, интерфейсы объектов отделены от реализаций. Интерфейсы описываются на языке определения интерфейсов IDL (Interface Definition Language), являющегося частью этого стандарта.

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

Последние построены в соответствии с требованиями CORBA и при общении между собой используют протокол GIOP (General InterORB Protocol). Таким образом, система подобных брокеров позволяет унифицированно организовать взаимодействие удаленных объектов, относящихся к различным системам программирования (т.е. объектов разнородной среды).

Во второй главе подробно, на основе многочисленных примеров, описывается предлагаемый оболочечный подход.

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

метаинформации. В частности, от оболочки можно получить информацию об интерфейсах ее объектов, о типах данных, с которыми они работают.

На этапе выполнения программы оболочка - это среда существования и функционирования объектов,

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

Для выполнения различных своих функций оболочка использует различные входящие в нее служебные сервисы.

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

интерфейс оболочек, от которого должны наследоваться интерфейсы всех оболочек этапа выполнения.

Собственно для организации взаимодействия различных элементов оболочки между собой и с внешним миром в каждой оболочке предусмотрено коммуникационное ядро (часть объекта-оболочки, не обязательно выделенная в отдельный объект). Такое ядро обеспечивает прозрачность взаимодействия объектов: способ вызовов методов объектов не зависит от их взаимного расположения.

Как уже было упомянуто, задаваемый в ИО метаконтроль описывается на языке TL (template language), предлагаемом в рамках данной работы. TL -это общий для всех оболочек язык, с помощью которого можно единообразным, не зависящим от приложения и среды программирования образом, описывать различные варианты организуемого в оболочках метаконтроля для разных типов клиентской и серверной среды.

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

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

которых влияет на схему метаконтроля для одной или более операций. Каждый такой кластер получает свой собственный идентификатор. Множество идентификаторов кластеров и есть перечислимый тип - тип атрибута ИО.

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

В рамках языка ТЬ особенности работы с некоторым мётаобъектом, метасервисом или группой метасервисов предлагается описывать в виде параметризованных шаблонов. Эти шаблоны отражают специфику использования метаобъектов и позволяют описывать метаконтроль, включающий работу с разными метасервисами, с помощью композиции таких шаблонов.

При проектировании метаконтроля для работы с сервисами из другой оболочки программист имеет возможность получить из этой оболочки параметризованные шаблоны для работы с нужным сервисом. В результате нет необходимости переписывать одни и те же тексты программ и вдаваться в детали вызовов объектов этого сервиса. Кроме того, наличие библиотек шаблонов для метасервисов позволяет ортогонализовать, то есть обособить, сделать независимым использование различных сервисов при описании метаконтроля. Программист теперь может, абстрагируясь от деталей организации обращений к методам сервисов, мыслить в терминах композиций конкретизаций шаблонов, каждый из которых

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

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

В третьей главе обсуждается вопрос о том, как, опираясь на механизмы CORBA, организовывать описанный механизм работы с оболочками и использовать метаконтроль.

Пожалуй, ключевым вопросом здесь является реализация механизма интерфейсных объектов (ИО) на основе механизмов ORB (брокера объектных запросов, удовлетворяющего стандарту CORBA). Для реализации ИО весьма существенно, что архитектура CORBA уже предусматривает использование посреднических объектов при организации работы через объектные ссылки. На стороне клиентского объекта таким посредником является стаб, на стороне сервера - скелетон. Единственное назначение этих посредников - обеспечение прозрачности по расположению объектов (location transparency).

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

Однако, клиентские объекты-посредники (стаб и клиентский ИО) не могут быть совмещены в одном объекте. Стаб также воспринимается клиентом как объектная ссылка; идентифицирующая объект. Такая ссьшка зачастую используется лишь как значение параметра, а не для работы с методами объекта. Поскольку реальная необходимость использования ИО проявляется лишь при первом обращении клиента через стаб, механизм работы

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

Важно отметить, что поскольку ORB и подготавливаемые компилятором IDL/C++ посредники (стабы и- скелетоны) не является частью самого приложения (они фактически представляют собой часть системы программирования), метаконтроль реализуется без внесения изменений в приложение. Это происходит за счет расширения системы программирования даже для приложений, изначально не ориентированных на работу с метаконтролем (своего рода legacy).

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

Описанный подход расширяет предусмотренные в CORBA базовые механизмы выполнения вызовов объектов, которые как на клиентской, так и на. серверной стороне не содержат ничего кроме организации, вообще говоря, удаленных вызовов объектов. Механизм оболочек и интерфейсных объектов обеспечивает возможность не только модифицировать на стороне сервера поведение приложения: он дает возможность симметрично (равноправно!) разнести дополнительные состояния и функциональности приложения, как на серверную, так и на

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

Четвертая глава посвящена рассмотрению проблемы обеспечения надежности программирования при

использовании отображения из языка спецификаций IDL в язык программирования С++.

В первом разделе этой главы выделены 12 проблем зафиксированного в CORBA отображения IDL/C++.

Основную массу этих проблем можно охарактеризовать следующим образом. Для работы со стандартным отображением пользователь должен хорошо ориентироваться во множестве различных ограничений и требований, зафиксированных в стандарте. Проверка со стороны системы (ORB) правильности действий пользователя на этапе выполнения программы не предусматривается. Однако, за ошибки, связанные с невыполнением требований стандарта, пользователю приходится платить довольно существенной потерей времени на кропотливую отладку программ. Также, конечно же, существенно падает надежность программ.

Остальная часть главы посвящена тому, как можно по-другому подойти к вопросу отображения IDL в С++ так, чтобы не возникло указанных проблем. В процессе изложения предложенного автором подхода обосновывается, что все 12 проблем, указанных в предыдущей части главы решены в этом подходе.

Описываемый новый подход идеологически весьма близок рассмотренной в предыдущих главах технике оболочек и интерфейсных объектов. Можно сказать, что механизм оболочек и интерфейсных объектов предназначен

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

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

Предлагается следующий вариант изменений в отображении IDL/C++. Для любого составного типа Т (структур, объединений, массивов, и т.д.) вводится в использование специальный класс T_cvr г оболочка (посредник) . Главное в этом подходе то, что при работе с ORB пользователю предлагается проводить все необходимые манипуляции с данными только через подобных посредников. При использовании такого отображения пользователю не придется изучать и запоминать множество требований к работе с памятью, как это зафиксировано в стандарте CORBA. С помощью оболочек акцент в работе с памятью переносится с организации передачи данных в методах (как клиентом, так и сервером) на однотипную работу с оболочками, их заполнение и получение (просмотр) данных с их помощью. Аспекты работы с памятью, необходимой для параметров и результатов, при вызовах объектов скрываются внутренними механизмами оболочек и, таким образом, не затрагивают пользователя.

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

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

В первом подходе пользователь может себе представлять оболочки как "умные" контейнеры, содержащие данные соответствующего составного типа. Основой концепции работы с памятью здесь является тезис о том, что память, содержащаяся в оболочках никогда не доступна самому пользователю. То есть, оболочки сами создают память под данные и уничтожают ее. Пользователь может лишь указать, откуда скопировать данные в эту память, может посмотреть ее содержимое, и может изменять значения элементов составных данных, хранимых в оболочке.

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

В заключение четвертой главы приводятся размышления о том, каково возможное применение предложенного отображения IDL/C++. Отмечается, в частности, что оно может быть полезно для решения проблемы унаследованных систем (legacy), поскольку предоставляет гораздо более гибкий по сравнению с CORBA механизм работы с памятью.

ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ

1. Разработан оболочечный подход к решению задач организации взаимодействия объектов распределенных неоднородных систем;

2. разработана технология Интерфейсных Объектов для реализации метаобъектного протокола;

3. предложен и реализован подход к повышению надежности программирования при работе с ССЖВА и языком С++;

4. на языке программирования С++ на основе технологии ССЖВА создана подсистема управления вызовами объектов (СЖВ) .

Автор приносит свою искреннюю благодарность своим коллегам по работе над тематикой распределенных систем Л.Б. Соловской, А.Н. Винокурову, В.Е. Каменскому, С.Г. Манжелею и В.А. Омельченко.

Особую благодарность хотелось бы выразить моему научному руководителю В.П. Иванникову.

По теме диссертации опубликованы следующие работы:

1. Дышлевой К. В. IDL С++ меппинг. CORBA и возможная альтернатива // Вопросы кибернетики. Приложения системного программирования. Вып. 3. Москва, 1997 г.

2. Иванников В.П., Дышлевой К.в.,' Задорожный В. И. Спецификация метанаращиваний для эффективного метаобъектного контроля. // Программирование, N 4. Москва, 1997 г.

3. Дышлевой К.В., Каменский В.Е., Соловская Л.Б. Маршалинг данных в распределенных системах: сравнение двух подходов // Вопросы кибернетики. Приложения системного программирования. Вып. 3. Москва, 1997 г.

4. Иванников В.П., Винокуров А.Н., Дышлевой К. В., Каменский В.Е., Климов А.В., Манжелей С.Г., Омельченко В.А., Соловская Л.Б. Методология разработки распределенных приложений на основе модели оболочки // Вопросы кибернетики. Приложения системного программирования. Вып. 3. Москва, 1997 г.

5. Ivannikov V.P., Dyshlevoi K.V., Kamensky V.E., Klimov A.V., Manzheley S.G., Omelchenko V.A., Solovskaya L.B., Vinokurov A.A., Methodology for Development of Distributed Applications Based on Cover Model. // Proceedings of CSIT'97 Conference. September 25-29 1997, Yerevan, Armenia.

6. Ivannikov V.P., Dyshlevoi K.V., Kamensky V.E., Klimov A.V., Manzheley S.G., Omelchenko V.A., Solovskaya L.B., Vinokurov A.A., Model: a Framework for Design and Execution for Distributed Applications // Proceedings of ISPAN'97 Conference. December 1997, Taipei, Taiwan