Содержание к диссертации
Введение
Глава 1. О мультипаралигмснпой микроконтекстной компонентной технологии построения языков представления знаний и человеко-компьготерпого взаимодействия 34
1.1. Введение 35
1.2. Подходы к построению информационных сред 38
1.3. Анализ сложной информационной среды, как иерархии микросред 42
1.4. Концепция мультипаралигмснпой микроконтскстной компонентной технологии ...50
1.5. Замечания по микроконтекстной технологии 64
1.6. Модель оценки и оптимизации затрат в многоуровневых компонентных средах 67
Глава 2. Визуальные алгоритмические и синтаксические языки 81
2.1. Введение 82
2.2. Структурные визуальные представления алгоритмов в виде я-схем 84
2.3. Структурные визуальные представления синтаксических описаний 103
2.4. Структурные визуальные представления образов в задачах
распознавания 119
2.5. Технология адаптируемого языка-рабочие области и шаблоны 127
2.6. Технология интеграции элементов визуальных языков с внеязыковыми структурами данных и внешними средствами программирования 131
Глава 3. Интеграция ресурсов удаленных вычислителей на базе вычислительных посредников 135
3.1. Введение 136
3.2. Технология вычислительных посредников 139
3.3. Планирование загрузки вычислителей, мониторинг вычислений и расчет стоимости ресурса 146
Глава 4. Применение мультиязыковоп компонентной технологии и визуального подхода к построению сложных систем 167
4.1. Введение 168
4.2. Среды визуального программирования семейства ПУ0ЛГПРА 170
4.3. Среда J визуального программирования на языке Java 191
4.4. Среда визуальной сборки HypcrModcIlcr 214
4.5. Программный" комплекс «Вычислительный прокси-сервер» 223
4.6. Комплекс интернст-мсдиасрсдств на базе мультииарадигмеииой микроконтекстной компонентной технологии 245
Заключение 279
Литература 280
Приложение 1 298
Приложение 2 318
Детальное оглавление 326
- Подходы к построению информационных сред
- Структурные визуальные представления алгоритмов в виде я-схем
- Планирование загрузки вычислителей, мониторинг вычислений и расчет стоимости ресурса
- Среды визуального программирования семейства ПУ0ЛГПРА
Введение к работе
Разработана технология компонентного «слоистого» представления муль-тимстафорных компьютерно-ориентированных моделей сложных систем и построения соответствующих программных средств и вычислительных систем.
Разработаны визуальные языки как слои многокомпонентной модели. Разработана технология гштеграции вычислительных услуг удаичтых компьютеров в компонентную вычислительную систему. Разработаны архитектуры программных комтексов для многокомпонентных гетерогенных систем па базе ви-зуаіьпой сборки и компонентной мультиметафорной технологии. Разработаны архитектуры систем интернет-видеокоммупикаций на базе мультиметафорной технологии.
Для современных технологий характерен существенный рост сложности разрабатываемых и используемых систем. При этом дія сложных систем соответствующая модель может включать хотя и тесно связанные, но весьма разнородные (как по внутренней сущности, так и по принятым формам представления) части. Для описания каждой из частей общей модели могут применяться весьма различные средства (например, дифференциальные уравнения, алгоритмические, логические описания, семантические сети, структурные диаграммы, описания структур данных, описания пространственных сцеп и др.), что создаст проблемы при описании системы в целом.
Задача описания моделей сложных систем значительно усложняется при необходимости отображения этих моделей на компьютерные средства (для информационных систем, систем имитационного моделирования и др.). При этом возникает ряд значительных проблем, в частности - проблема дистанции между естественными для специалистов классами моделей, описывающими необходимые сущности предметной области в форме, привычной для этой области, и моделями, которые могут быть непосредственно «поняты» компьютерной средой.
13 связи с этим возрастает необходимость создания и развития компьютерно-ориентированных информационных моделей, ориентированных на конкретные предметные области, и соответствующих этим моделям средств человеко-комиыотерного взаимодействия, обеспечивающих достаточную эффективность работы прикладного специалиста. С другой стороны, увеличивающаяся сложность систем так или иначе влечет возрастание сложности программных средств, что требует предпринятия специальных мер для обеспечения работы пользователя-специалиста с весьма крупными программно-аппаратными системами, как с единъш целым. Особую важность приобретает оперирование моделями, отображенными па мул ьти компьютерную среду (например, па компьютеры, объединенные сетью Интернет).
Развитие методов построения моделей сложных многокомпонентных систем, средств их описания и компьютерной реализации является актуальной задачей, которой и посвящена данная работа.
Один из основных подходов к построению компьютерно-ориентированных средств представления моделей связан с развитием методов сведения моделей различного типа к моделям некоторой единой метафоры и представлением этой мономстафорпой модели па некотором универсальном компьютерном языке (в частности - языке программирования, например, языке в основном алгоритмической метафоры С, языке функциональной метафоры Lisp, языке логической метафоры [Genesereth, Ginsberg, 1985], Prolog и т.д.). Такой подход исходно был вы нужденним, единственно возможным, начиная с первого известного языка программирования реального компьютера «Plankalkul» (Konrad Zuse, 1945г.). Впоследствии, в связи со стремлением приблизить средства компьютерных моделей к языкам прикладных специалистов, возникли тенденции к постепенному увеличению мощи языковых компьютерных средств, однако подход «минимального языка» с минимумом метафор и сейчас многими исследователями видится, как наиболее разумный (Н.Вирт, Тыоринговская лекция), хотя современная «минимальность» уже весьма относительна.
Стремление найти наилучший язык представления компьютерных моделей для конкретной области привело к тому, что за каждый год компьютерной эры появлялось более 100 новых компьютерных языков; например, в перечне, опубликованном на http://people.ku.cdti/ nkinncrs/LangLKt/Fxlras/langlisi.him упоминается 2500 универсальных языков (см. также [Зслковин, Пратт, 2002J, [Себеста, 2001]). Весьма значимые достижения в области разработки языков программирования имелись в СССР - алгоритмический язык Альфа (Л.П.Ершов и др., 1960), Рсфал, базирующийся на концепции нормхлыюго алгорифма Маркова (В.Ф.Турчин, 1968), языки аналитических вычислений Аналитик (Глушков и др., 1968) и Сириус (1970), ряд языков работы с базами данных, язык копцептухтьиого программирования Утопист (Э.Х.Тыугу), язык Декарт (С.СЛавров), и др.
Такое обилие разработанных языков стимулировало многочисленные попытки создавать некие всеобъемлющие языки, уменьшить количество используемых языков слиянием основных идей некоторых из групп известных языков («в идеале» - слить почти все известное и получить некий универсальный мпогомстафорный «всеобъемлющий язык», объединяющий возможности многих языков). К таким попыткам можно отнести, например, проекты PL/1, ADA. Подобные усилия не прекращаются и до сих пор [Андреев, 2001]. Однако попытки создания «всеобъемлющего языка» (или хотя бы нескольких таких языков) наталкиваются на трудности, связанные с весьма большим разнообразием областей сочетания различных типов моделей для сложных систем. Для таких языков характерны громоздкость, сложность модификаций, сложность изучения.
Другой распространенный подход связан с разработкой для каждой прикладной области своих специализированных средств, позволяющих представлять модели из этой области с, по возможности, наименьшими усилиями. Одна из технологий конструирования таких языковых сред связана с так называемыми «Пакетами прикладных программ» (ППП). Данный подход обычно связан с достаточно узкой специализацией; проработка интерфейсных средств работы с ППП, как языков обычно незначительна; многие разработки ориентированы на сугубо местное использование (от «firmware» до «shelfwarc»). Массовость создания пакетов прикладных программ для частных областей такова, что количество их трудно поддастся оценке (возможно, их количество достигает миллиона).
Огромное количество имеющихся и продолжающих появляться языков, многие из которых не очень значительно отличаются друг от друга, создает еще и дополнительную задачу их классификации.
Данные проблемы отражаются и в проблемах отображения представлений моделей на архитектуры программных средств и вычислительных систем. Наличие этих проблем было одним из стимулов для развития компонентных технологий построения программных средств [Maurcr, 2000], [Kriegcr, Adicr, 1998]. Значительным этапом в развитии компонентных технологий являлась разработка компанией Microsoft технологий OLE 1 (1992), OLE 2 (1993), приведших к архитектурам СОМ (1995) и DCOM (1996) (включая спецификации составных документов ActiveDoc и компонентных вычислений ActiveX, с механизмами удаленного вызова RPC и Object RPC) и архитектуры CORBA (1991) [Schmidt D., Kuhns, 2000], разработанной объединяющий более 800 компаний консорциумом OMG (в которілй впоследствии вошла и Microsoft). Разрабатываются и другие подходы ([Griss, Pour, 2001], IBrcrcton, Budgen, 2000]). Компонентный подход широко используется при разработке приложений электронной коммерции [P.Fingar, 2000], банковской сферы [Bastcr et al, 2001], интеллектуальных бизнес-приложениях [Kim ct al, 2002] и др.
Развиваются подходы к построению программных средств и языковых средств взаимодействия с ними, основанных на знаниях, к том числе - иерархических ([Хорошевский, 1995], [Клсшсв, 1983], [Нарнньянн, Кондрашипа, 1986], [Кондрашипа и др., 1989], [Д.Л.Поспелов, 1996], [Тыугу, 1989]), в том числе алгебраические [Ефимова, Суворов, 1986] и фреймовые [Вольфеигагеи, Яцук, 1984], [Минский, 1979], моделировании поведения сложных систем с интеграцией различных парадигм [Осипов, 1998], [Floyd, 1979].
Рассмотрению проблемы построения «единого универсального языка» посвящена первая глава данной работы, в которой предлагается «микроконтскстнып» компонентшлй подход мультимстафорпых «слоистых» языков, основанный на представлении языка как сложной системы микроязыков. Проблема компонентного языка рассматривается в единстве с компонентным построением программных средств и компонентным построением вычислительных систем.
Для построения компонентных моделей существенно наличие удобных микроязыков, соответствующих некоторым метафорам, для использования и качестве слоев мультимстафорпой модели. Существенное значение для удобства работы с описаниями моделей имеет внешняя форма представления. При этом весьма удобны для использования в качестве слоев в компонентных языках (и особо - для компьютерной реализации подхода) графические языки.
Преимущества графических представлений перед текстовыми вызывают интерес исследователей к проблемам визуального представления знаний в различных областях [Papert, 1980], [Raeder, 1985], [Гофен, 1988], [Foster et al, 1999], [Chen, Paul, 2001], [Amant et al, 2000], [Бабурин и др., 2001], [Важспип, Мирсиков, 2001], [Falchuk, Karmouch, 1998].
При докомпьютерном проектировании графические описания всегда широко использовались. Скажем, для описания алгоритмов широко применялись и применяются схемы потоков исполнения [ГОСТ 19.002-80, ГОСТ 19.003-80, ГОСТ 19-701-90, ISO D1S 5807.2], структуро-граммы Несси-ШпсПдсрмана [DIN 65261 HCN 1422], Р-схемы Всльбицкого [Всльбицкий, 1987], HIPO-диаграммы IBM [Арефьева и др., 1978]. Однако указанные представления обладают рядом недостатков, например, схемы потока исполнения ориентированы на представление последовательности команд, а не на отражение структуры, структуро грам мы ориентированы на представление структуры, но могут быть применены только для представления весьма простых алгоритмов.
Для графического представления синтаксических описаний наиболее широко используются «синтаксические диаграммы» [Tailor, Turner, Waychoff, 1961]. Однако этот визуальный язык не ориентирован иа структурные представления описаний, кроме того, он позволяет определять только коитскстио-свободные грамматики; в то время как, например, почти вес языки программирования являются контекстно-зависимыми.
Вторая глава работы посвящена построению нескольких новых графических языков, и которых преодолены некоторые отмеченные недостатки, и которые, кроме того, удобно применять как элементы предлагаемой в главе 1 концепции «слоистого языка».
Реализация сложных компьютерных моделей может требовать привлечения высокопроизводительных вычислительных ресурсов. Достаточно резкое разделение возможностей компьютера пользователя и высокопроизводительных систем привело к развитию web-доступа к ресурсам высокопроизводительных компьютеров (напр., в отечественных системах WcbWS, системе САТУРН [Новонашип и др., 2002], в проекте OGSA [Талиа, 2003], позволяющей интегрировать службы и ресурсы распределенных гетерогенных динамических сред с помощью связывания технологий GRID и WEB, в системе Globus, где GRID-службы обеспечивают наполнение web-служб рехзьпым содержанием для поддержки функционирования распределенных организации), а также к формированию концепции «метакомпьютинга» [Smarr, Catlett, 1992], [Metacompuling Tomorrow], включая технологию GRID [Baraglia et al, 2000], [Foster et al, 1999] (напр., в проекте EU DataGrid глобальной европейской инфраструктуры в области физики высоких энергий, биологии и систем наблюдения над Землей [Ильин, 2002]). При этом компьютер пользователя выполняет основные функции по формированию вычислительной среды для конкретной модели, оказываясь «интегратором», объединяющим ресурсы мощных компьютеров, используемых для данного процесса, а также выполняет функции взаимодействия с пользователем. Взаимодействие компонент при такой интеграции удобно осуществлять с помощью средств, предоставляемых в рамках архитектур COM/DCOM и CORBA [Schmidt, Kuhns, 2000]). Значительным шагом в развитии технологий мстакомпыотипга являлась разработка открытой архитектуры Open Grid Services Architecture (OGSA) [Талиа, 2003], [Коваленко, Коряги и, 2003], инициированная фирмами Globus Project и IBM. Весьма полный обзор GRID-технологий приводится в [Воеводин, Воеводин, 2002].
При построении систем метакомпьютинга встает множество проблем: задания пользователем модели, реализуемой в такой среде, взаимодействия процессов в частях метасистемы, максимизации повторного использования компонент, включая старые разработки. Весьма существенное значение имеет проблема надежности всего комплекса, состоящего из многих компонент, в условиях возможных отказов частей или линий связи. В отношении повторного использования здесь следует отмстить и проблему переносимости программных средств, затрудняющую использование знаний, рехзпзованпых в виде текстов программ или откомпилированного машинного кода.
Третья глава работы посвящена разработке технологии использования в мстакомпыотин-говой системе вычислительных услуг удаленных вычислителен с помощью сервера-посредника (посредника между потребителем вычислительных услуг и вычислительной системой), предоставляющего средства накопления «актуализированных знаний». Технология способствует решению некоторых из отмеченных проблем интеграции высокопроизводительных систем в системы метакомпьютинга на базе компонентної"! технологии главы 1.
Применение компонентных подходов может быть плодотворно при реализации комплексов программ во множестве областей, например, в системах метакомпьютинга, моделирования, системах медиакоммуникации.
При этом в числе актуальных элементов программных комплексов, построенных по компонентной мультиметафорной технологии можно назвать системы интеграции компонент на базе визуальной сборки (близкие задачи решаются в системах HypcrSignal, MathCad и др.), системы организации библиотек вычислительных модулей и удаленного доступа к вычислительным ресурсам (напр., система WcbWS, обеспечивающая веб-доступ к высокопроизводительным ресурсам СПбГУ [Золотарев и др., 2002], система веб-доступа к вычислительным ресурсам ИПМ РАН им. Келдыша), системы медиавешания и медиаконферепций (такие, как, системы Microsoft MediaScrver/MediaPlayer, RealVideoServer/RealVidcoPlaycr), модели «медиа по запросу» [Wright, 2001], [Horn et al, 2001], средства маршрутизации медиапотоков [Fahmi ct a!, 2001], системы передачи видеопотоков научной визуализации (напр., система ВизАЭффскт с помощью технологии CORBA осуществляет часть визухчизации векторных и скалярных полей па удаленных серверах и передает итоговую информацию через интернет па клиентские машины [Лпиканов, 2002]).
Четвертая глава посвящена примерам приложения технологии компонентных языков и визуальных представлений к построению программных комплексов в различных предметных областях: визуального процедурного программирования, визуальной сборки распределенных приложений, предоставления вычислительных услуг удаленных вычислителей, видсообщения и передачи визуально интерпретированных результатов вычислений через интернет.
Основные результаты
Первая глава работы посвящена проблеме создания «наилучшего языка» для представления знании в какой-либо частной области. Проблема обсуждается с точки зрения противоречия между богатством описательных средств языка и его компактностью, гибкостью и универсальностью. Рассмотрен подход к организации языков представления знаний, челопеко-компьютерного взаимодействия, программных и аппаратных средств как иерархии независимых элементов. Этот подход основан на рассмотрении программных средств/оборудования как сложной системы с применением соответствующей методологии. Главное внимание уделяется примеру языков человеко-комныотерного взаимодействия, включая программирование.
В первом параграфе главы 1 дается общий обзор проблемы.
Во втором параграфе главы 1 рассматриваются различные известные подходы к построению информационных описаний. В третьем параграфе главы 1 проводится анализ сложной информационной среды, как иерархии. Обсуждаются статические мпкроязыковые структуры, разбиение сложных языков на меньшие части как первый шаг к открытой слоистой многоязыковой технологии. При этом любой компьютерный язык рассматривается как, прежде всего, средство представления некоторых информационных моделей, а не как средство задания процесса функционирования компьютера.
В качестве базиса, формирующего язык, рассматриваются нары {[набор базовых элементов], [набор средств композиции/декомпозиции]}. Примерами таких пар являются алгоритмические средства (базовые элементы - из некоторого набора действий, а средства композиции/декомпозиции - алгоритмические конструкции), функциональные (формульные) средства (базовые элементы — из некоторого набора функций, а средства композиции/декомпозиции -суперпозиция функций, условное определение функций, рекурсивное определение), логические (предикатные) средства (позноляющис строить сложные логические высказывания из примитивных), «геометрические» средства (позволяющие строить сложные графические элементы из простых посредством, скажем, сдвига-поворота, наложения с просвечиванием, и т.д.), правила создания сложных типов данных из простых (например, подъязык Хоара в Паскале), группа средств для работы со звуками и речью, средства синтаксических определений (позволяющие строить сложный синтаксический объект из примитивных).
Каждая такая пара может быть сопоставлена некоторому специфическому виду информационных моделей. Можно считать, что микроязыки, соответствующие каждому из этих наборов, - это инструменты композиции/декомпозиции, связывающие некоторые сущности с производными от них.
Плодотворным является рассмотрение сложных сущностей как композиции более простых с применением некоторых средств композиции. При повторении подобной процедуры можно получить представление сложной модели в виде структуры более простых моделей. При этом можно рассматривать описание на любом языке как сложную структуру или иерархию моделей. Идея «анатомирования» сложных языков полезна как сама по себе, так и для определения наилучших экземпляров реализации п каждой группе правил (на Фиг. 1 приведен пример «анатомирования» языка Pascal).
В четвертом параграфе главы I вводится концепция мультипарадигменной микроконтекстной иерархической «я-техпологии».
Описывается обобщение идеи разбора сложных языков, приводящее к микроконтекстному подходу. Прежде всего, дополнительно к описанному выше можно освободить связи между подъязыками, выделенными при анатомировании различных языков. Тогда эти подъязыки можно рассматривать как «сырье» для сборки новых языков. Это позволяет динамически строить ориентированный на задачу язык представления, наилучшим образом подходящий для конкретной частной проблемы (Фиг. 2). Кроме того, каждый из подъязыков может обладать наилучшей формой внешнего представления, например, в одном комплексе могут быть смешаны текстовые и визуальные подъязыки.
гимн модулями структуры (причем для человеко-компыотерпого взаимодействия в целом, а не только для области «программирования»).
В пятом параграфе главы 1 описываются основные характеристики предлагаемой технологии.
В шестом параграфе главы 1 исследуется возможность описания семантик языков программирования с точки зрения описанной пыше концепции компонентной технологии. Разработан математический аппарат для структурного описания больших языков программирования на основе тс-тсхнологии. В качестве иллюстрации приведен пример описания семантики Pascal-подобного языка программирования.
В седьмом параграфе главы 1 рассматривается модель оценки и оптимизации затрат в многоуровневых компонентных средах па базе экспертных оценок. Предложен аппарат оптимизации на основе динамического программирования, позволяющий выбрать оптимальный для конкретной задачи набор языков, оборудование, специалистов в случае фиксированных ресурсов. Исследовано обобщение подхода на нечеткий случай для учета степени уверенности и квалификации экспертов. Изучены вопросы теоретико-вероятностной интерпретации подхода в условиях неопределенности ресурсов. Рассмотрен простейший пример, иллюстрирующий предложенный подход к оптимизации затрат.
Вторая глава работы посвящена вопросам реализации визуальных микроязыковых слоен для технологии, описанной в главе I, соответствующих некоторым информационным парадигмам.
В первом параграфе главы 2 дается общий обзор проблемы.
Во втором параграфе главы 2 рассматриваются визухзьные языки представления алгоритмов.
Предлагаемый автором графический язык, в отличие от наиболее распространенного графического языка схем потока исполнения, ориентирован на изображение структуры, устройства алгоритма, а не последовательности исполнения команд, хотя последовательность исполнения операторов он полностью описывает. Этим данный язык идейно близок к языку «структу-рограмм» Несси-Шкейдермана, однако, как представляется, удобнее для изображения алгоритмов на бумаге и экране компьютера и нагляднее прсдстанляет структуру алгоритма. Язык 71-схсм ориентирован исключительно на структурный подход к алгоритмизации (неструктурный принципиально невозможен), на разработку алгоритмов (и возможность их изучения) «сверху вниз»; при этом термин «сверху вниз» приобретает буквальный смысл (Фиг. 7).
Такие элементы языка, как Подстановка , Синонимия , Склейка позволяют визуализировать понятия «условное значение», «значение составного оператора», «условное имя», «условная операция» и т.н.
Язык 71-схем может использоваться как средство наглядного описания алгоритмов при общении «человек-человек», скажем, алгоритмов технологических процессов, а также как язык описания алгоритмов в компьютерных системах (например, вычислительных алгоритмов, алгоритмов управления подключенным к компьютеру оборудованием, скажем, станком с ЧПУ и т.н.).
Подходы к построению информационных сред
Все, что обсуждалось выше для общей проблемы представления знаний, является актуальным и для области человско-компьютерного взаимодействия, а также и - еще более узко - для области языков программирования (компьютерных модслсії) с некоторыми отличительными особенностями. В этих областях добавляются проблемы обработки описания, связанные как с программным обеспечением, так и с аппаратными компьютерными средствами. Например, развитие сложных систем часто связывается с потребностью использовать как развитые средства человско-комиыотерпого взаимодействия, так и мощные вычислительные ресурсы и ресурсы данных. Очень трудно выполнить все эти пожелания, используя единственную аппаратную компьютерную среду.
Известны различные попытки создания единого универсального всеобщего языка программирования (как «единого ножа для Швейцарской армии») - как «всепоглощающий» PL/1, «универсальный единый язык» Ada, и др.).
При этом как в области компьютерных языков, так в области общих ЯПЗ можно выделить некоторые основные подходы к созданию «единого языка»
Первый распространенный подход предлагает использовать некоторый универсальный, независимый от области применения язык, базирующийся па некоторой зафиксированной для этого языка одной главной парадигме [Floyd, 1979]. Единственность базовой парадигмы обеспечивает небольшое количество базовых элементов такого языка. Это близко к идее «RISC» для микропроцессоров.
Действительно, при работе с узким классом ИМ проблема человеко-компьютерного взаимодействия решается наиболее успешно при использовании специализированной ИС, или языка и системы, ориентированных именно на этот класс.
Однако, ситуация меняется, если решаемая проблема сложна и включает много разнородных частей, которым наиболее адекватны ИО различной природы. В этом случае возможно использовать очевидный подход использования компактных монопарадигменных универсальных средств («притягивание» ИМ к имеющейся ИС).
В этом случае для конкретной области необходимо свести каждый объект, с которым имеют дело, к выбранной единственной парадигме (или к небольшому количеству парадигм) и единственному языку. Чтобы применять этот подход, требуется остановиться на выборе некоторой универсальной парадигмы (например, алгоритмической, функциональной, логической и т.п.), выбрать соответствующий компьютерный язык и соответствующую компьютерную среду, поддерживающую работу на этом языке. При этом необходимо применить определенные научные наработки (сведению разных видов моделей к алгоритмической парадигме посвящены целые области математики) и искусство, чтобы сводить задачи из различных областей к моделям в терминах выбранной парадигмы (языка). Самый популярный базис этого подхода-алгоритмическая парадигма.
Основные недостатки подхода монопарадигменных универсальных средств представляются следующими: использование мопопарадигменного подхода требует трудоемкой работы по сведению различных классов исходных моделей представления к неадекватной единой форме, работа с одной парадигмой деформирует сознание, затрудняя работу с представлениями в других парадигмах.
Для повышения удобства работы, большей адекватности частям решаемых задач монопа-радигмеппые универсальные системы «расширяют» вводом в каких-то количествах новых элементов, удобных для работ, которые исходно были нехарактерны для природы применяемого языка, соответствующих некоторым другим парадигмам, по облегчающих его использование. В результате получаются так называемые «интегрированные системы».
Некоторые из недостатков «расширенного» подхода: ориентированность универсальных систем на использование как правило какой-то одной формы внешнего представления информационных моделей; невозможность включить в универсальную систему все, что кому-то когда-то может понадобиться, в удобной форме; даже когда в язык включено не «все для всех», он оказывается громоздким как для разработки, так и для овладения; при множественности компонент «интегрированной системы» некоторые из них оказываются реализованы очень удачно, другие менее удачно. Но все они составляет единый неделимый комплекс и как правило пользователю системы никакие ее части заменить невозможно.
Еще одни распространенный подход предполагает использование большого мульпитара-дисченного языка с большим количеством включенных в пего парадигм (Budd, Pandey, 1995], [Floyd, 1979J, [Hailpcrn, 1986]. Этот подход подобен подходу «CISC» для микропроцессоров) (Фиг. 1). Как правило, структура связи элементов мультипарадигмеиного языка жестко зафиксирована разработчиками такой системы. В соответствии с этим подходом необходимо разработать огромное разнообразие специальных сложных языков (и систем) для различных областей применения, объединяя основные метафоры в различных комбинациях. Мультипарадиг-меиные системы могут оказаться узкоспециализированными и достаточно сложными в изучении, использовании и создании поддерживающих их программных сред.
Последний подход с точки зрения соответствия НС природе ИМ, безусловно, плодотворен. Но здесь, к сожалению, сохраняется большинство из недостатков универсальных систем. Добавляются и другие: создание таких систем весьма дорого для потребителя; программистское качество отдельных компонент может оказаться не столь высоким, как у массовых универсальных систем; такие системы, будучи менее универсальными, ставят потребителя в весьма зависимое положение; система позволяет манипулировать лишь в тех сферах и в том виде, как это предполагал ее разработчик.
Структурные визуальные представления алгоритмов в виде я-схем
Из известных графических алгоритмических языков в настоящее время наиболее распространены так называемые «граф-схемы алгоритмов и программ» [ГОСТ 19.002-80, ГОСТ 19.003-80, ГОСТ 19-701-90, ISO DIS 5807.2]. Однако конструкции «граф-схем» («flowchart») отражают концепцию алгоритма как потока команд, в то время как при использовании словесных языков более популярна концепция структурного программирования (структурной алгоритмизации). В связи с этим были разработаны иные, в большей степени ориентированные па структурный подход формы графического представления алгоритмов.
Простейшей «словесно-графической» формой структурной записи является, видимо, запись на словесном алгоритмическом языке «лесенкой», т.е. с отражением структурной иерархии количеством пробельных позиций в началах строк. Из специально разработанных графических «структурных» языков отметим языки семейства Р-тсхпологии [ГОСТ 19.005-85], [Всльбицкий, 1987] (которые можно трактовать и как некоторую дизайнерскую проработку нотации традиционных граф-схем алгоритмов). Определенную популярность приобрели «структурограммы» Несси-Шпейдсрмана [DIN 65261 HCN 1422], [Гофсн, 1988]. Некоторое распространение получили «HIPO-схсмы» фирмы IBM [Арефьева, 1978] (степень «графичпо-сти» которых, впрочем, вызывает сомнение).
Предлагаемый автором графический язык идейно близок к языку структурограмм Нссси-Шнейдермапа, однако, как представляется, удобнее для изображения алгоритмов па бумаге, нагляднее отражает структуру алгоритма. Язык л-схем ориентирован исключительно на структурный подход к алгоритмизации (неструктурный принципиально невозможен), на разработку алгоритмов (и возможность их изучения) «сверху вниз» [Reck, 1995]; при этом термин «сверху вниз» приобретает буквальный смысл. Отмстим также согласованность отражаемой л-схемой иерархической структуры алгоритма с традиционной иерархией данных.
Язык л-схем может использоваться как средство наглядного описания алгоритмов при общении «человек-человек», скажем алгоритмов технологических процессов (например, для описания процесса приготовления борща), а также как язык описания алгоритмов в компьютерных системах (например, вычислительных алгоритмов, алгоритмов управления подключенным к компьютеру оборудованием, скажем, станком с ЧПУ и т.п.).
Эффсктившлм является использование языка в качестве микроязыкового слоя микрокоп-текстпой мультиметафорной технологии. Компьютерную поддержку языка л-схем (включая управление оборудованием) обеспечивают среды визуального программирования ПУ0ЛГПРЛ и V, подробно описанные в четвертой главе диссертации. Дадим неформальное описание синтаксиса языка с помощью некоторого варианта синтаксических формул Наура-Бэкуса. Слова в угловых скобках обозначают металингвистические переменные (одинаково обозначенные переменные даже в пределах одной формулы могут иметь разные текущие значения). Символ «::=» означает «есть по определению»; «» - «или»; [х] означает х пусто ; (х) эквивалентно пусто (в фигурные скобки в синтаксических формулах заключаются комментарии). Запись «... х » или « х » означает возможный повтор конструкции типа х нуль раз или более; точка - конец синтаксической формулы. Попутно с описанием синтаксиса языка будем пояснять и семантику его конструкций. Всякая запись на л-языке является совокупностью описании одной или нескольких процедур: Описание иерархии описаний процсдур дает множество имеющихся описаний процедур, а также области возможного использования одних процедур для описания других (заданием семейства деревьев с очевидной семантикой). Вызов процедуры с указанием Имсни подсистемы - обращение к описанию процедуры, данному и терминах подсистемы с указанным именем (например, к описанию процедуры на паскале). В противном случае обращение будет атомом. Возможны рекурсивные обращения к процедурам. Оператор л-процедуры считается завершенным, когда завершено исполнение т.е. после завершения исполнения очередного оператора начинает исполняться следующий; если завершилось исполнение последнего в серии оператора, то оператор-серия считается завершенным. В последнем случае многоточие обозначает возможное повторение элемента справа, не включающего ветвь «Нет». Логический выборный оператор при исполнении эквивалентен: — для первого обозначения: если Условис истинно, то оператору-[Да}, если ложно -оператору-{Ист}; —- для второго: самому левому из тех операторов, для которых записанные над ними условия истинны, если таковые существуют, при ложности всех условий - оператору на линии {Нет}. (Многоточие обозначает возможное повторение элемента справа, не включающего ветвь «Нет».) Арифметический выборный оператор при исполнении эквивалентен тому из записанных в нем, для которого выданное генератором значение совпадает со значением (или принадлежит множеству значений), записанным в качестве селектора этого оператора; если такого оператора ист, то он эквивалентен оператору на линии [Нет}, если операторов с выполненными условиями селекции несколько, - самому левому из них. Генератором значений могут быть, например, идентификатор или какая-нибудь формула.
Планирование загрузки вычислителей, мониторинг вычислений и расчет стоимости ресурса
Реализация современных компьютерных моделей часто приводит к потребности использовать вычислительные ресурсы не только имеющегося у пользователя настольного компьютера, но и других вычислительных систем. Для этого может быть ряд причин.
Прежде всего, полноценное решение многих научных и промышленных задач требует применения мощных вычислительных ресурсов, подобных обеспечиваемым высокопроизводительными мейнфреймами (большими универсальными ЭВМ) компаний IBM, AMDahl, ICL, Siemens Nixdorf и др. или суперкомпьютерами фирмы Cray Research, кластерными системами Silicon Graphics, отечественными мультипроцессорами серии МВС и др. Даже при происходящем драматическом возрастании мощности персональных систем данная проблема остается актуальной. Однако значительная часть научных и производственных организаций как в России, так и за рубежом, лишена возможностей использовать более мощную технику, нежели персональные компьютеры, ввиду слишком высокой стоимости мейнфреймов и даже систем среднего класса. Недостаточность мощности компьютера, находящегося в распоряжении у пользователя программных продуктов, может представлять значительную проблему, сдерживая массовое применение высоких технологий при локализации средств обработки только па компьютере пользователя. Для преодоления этого затруднения приходится либо ограничивать потребности в вычислительных ресурсах за счет понижения сложности решаемых задач и/или понижения качества решения, либо требовать применения пользователем только компьютерных систем особо высокой производительности. Если рассматривать выполнение конкретной программной разработки, то ограничение сложности задач («иод компьютер») может резко снижать полезность этой разработки, вплоть до потери смысла ее применения, предъявление же специальных высоких требований к типу и мощности применяемой техники может резко сократить круг потребителей программного продукта и его коммерческую эффективность.
Другая причина, вызывающая стремление выполнять вычисления не на пользовательском компьютере, связана с желанием избежать передачи пользователю некоторых программных средств (для защищенности от несанкционированного распространения этих программных средств или извлечения из них каких-то «ноу хау»).
Далее, эксплуатация программных средств на компьютере пользователя, отличном от компьютера разработчика может создать массу трудностей как при разработке данного программного продукта (необходимость обеспечения высокой переносимости приложений), так и при его эксплуатации в связи с работой на другом оборудовании, нежели применявшееся при разработке и тестировании этих проірамм. Кроме того, в некоторых ситуациях по каким-то (например, историческим) причинам может возникать необходимость применения некоторой немассовой вычислительной техники (например, связанной с аппаратной ориентированностью на какой-то класс задач).
В то же время, эти факторы существуют в ситуации, когда пользователь в настоящее время всегда имеет желание выполнять все работы, непосредственно общаясь исключительно только со своим персональным компьютером.
В связи с отмеченным одно из весьма сильно развиваемых в настоящее время направлений исследований и разработок в области информационных технологии - в области распределенных систем и систем клиент-сервер в неоднородных сетях. При этом рассматриваются сети, включающие компьютеры разных фнрм-нроизводителей, базирующиеся на высоконадежных и мощных рабочих станциях и серверах.
Достижения последнего оремени в технологии доступа к удаленным ресурсам данных весьма значительны и хорошо известны. Прежде всего, мы имеем в виду веб-тсхнологию Интернет, позволяющую легко получить доступ к разнообразным многочисленным ресурсам данных почти из любой точки мира. Однако мы не обнаруживаем сравнимых достижений в технологии доступа (можно сказать, «демократического») к мощным вычислительным («операционным») ресурсам, включая суперкомпьютеры.
Для доступа к удаленным вычислительным ресурсам через Интернет в настоящее время широко применяется ряд способов (н том числе помимо технологии «клиент-сервер») [Псрс-возчикова, Сикарсико, 2001], [Berners-Lec, 1998]. В частности, достаточно широко используется простейший способ доступа («ручного» и из приложений) через удаленный пульт (например, с использованием «telnet»); при этом пользователь работает с процессором командной строки конкретной операционной системы удаленной машины (например, версии UNIX) или некоторым специальным приложением, зависящим от типа машины, операционной системы и учреждения. Такая работа требует специальной информации о конкретном вычислительном центре и индивидуальных соглашений между потенциальным пользователем и владельцем техники. Кроме того, данная форма работы ориентирована па профессионала-программиста, что тоже значительно сужает круг реальных потребителей вычислительных ресурсов. Достаточно сложным при этом является использование ресурсов удаленных компьютеров при построении гетерогенных систем, особенно когда речь идет не о создании комплекса длительного использования по имеющемуся техническому заданию, а когда в процессе работы исследователя система находится в постоянном изменении, включая существенные изменения архитектуры формируемого конкретной задачей многомашинного комплекса.
Применение систем, основанных на использовании удаленных компьютеров, наталкивается и на ряд других проблем. Так, для аренды ресурсов мошной вычислительной системы (и установки на ней каких-либо программных компонент) требуется решение административных вопросов с их владельцами, требуется изучение специфических интерфейсных средств конкретной системы и т.д.
Еще одна проблема использования мощных вычислительных систем связана с разработкой уникального системного и прикладного программного обеспечения таких систем, которое возможно было бы использовать в различных организациях. Данная проблема до некоторой степени решается обеспечением мобильности, обеспечиваемой в рамках модели «открытой среды» (например, модели OSE - Open System Environment).
При этом сложившаяся практика, когда чаще всего используются два варианта предоставления компьютерных ресурсов: продажа программ, которые будут работать на заранее не известном (в определенном смысле) компьютере, или продажа машинного времени на компьютерах, где будут работать заранее неизвестные (в определенном смысле) программы, влечет ряд осложнений.
Существует ряд подходов, таких, как CGI, CORBA, СОМ, агентные технологии и др., которые весьма удобно использовать, как основу технологии удаленных вычислений, в частности - при построении гетерогенных систем. Однако, непосредственное использование этих достаточно низкоуровневых протоколов удаленного доступа сопряжено с рядом проблем. Массового применения удаленных вычислительных ресурсов можно, вероятно, ожидать лишь при достижении уровня простоты их «вызова», сравнимого с достигнутым при работе с уда лепными ресурсами данных. Данные технологии предлагают решения для «низкоуровневой» стыковки компонент гетерогенной системы, не предлагая информационной поддержки для интеграции систем на мстауровме.
Следует отметить также, что применение традиционных подходов к использованию удаленных вычислительных ресурсов наталкивается па значительные проблемы обеспечения надежности распределенной системы в условиях ре&іьной ненадежности линий связи и плохо предсказуемой загруженности конкретного удаленного вычислителя, что может приводить к неполучению результатов за необходимое время и большим финансовым потерям.
Среды визуального программирования семейства ПУ0ЛГПРА
Построенная выше в разделе 2 модель взаимодействия вычислительного прокси-сервера с вычисляющим сервером хотя и является довольно общей, но может оказаться не вполне адекватной реальным условиям предоставления услуг вычисляющими серверами. Так, например, вычислитель может исключить возможность для клиента снимать задачу после се запуска до истечения базового времени Т, может отказаться выплачивать неустойки в случае превышения этого времени. Клиенту (вычислительному прокси-серверу) может оказаться недоступной промежуточная информация о ходе вычислительной обработки, а значит, станут невозможными и какие-либо прогнозы ожидаемого времени окончания вычислительной обработки. Заметим, что все эти уточнения укладываются в изложенную выше модель (так, например, если вычисляющий сервер не желает выплачивать неустойки, то он просто объявляет пулевой соответствующую функцию оплаты), но делают се мало пригодной для практического использования. Поэтому изменим модель взаимодействия вычислительного прокси-сервера с вычислителями таким образом, чтобы приблизить се к реальной действительности, а затем займемся исследованием оптимального поведения вычислительного нроксн в рамках этой модели. Без ограничения общности можно считать, что вычислительный (вычисляющий) сервер состоит из нескольких (в частности, конечно, он может состоять и из одного) "вычисляющих блоков" (процессоров). В каждый момент времени часть из этих процессоров может быть занята, а часть свободна. Из свободных процессоров для вычислительной обработки задачи могут выделяться блоки разного размера (домены), объединяющие различное число процессоров. Булем считать, что размер выделяемого для вычислительной обработки задачи домена определяет некоторое ожидаемое время, которое будет затрачено на вычисления задачи при использовании этого домена (например, время может быть обратно пропорционально размеру домена). Величина этого времени, возможно, будет учитывать некоторый допуск на возникновение и ликвидацию не очень серьезных аварий или просто некоторый запас, на случай, если время немного превысит среднее для данного класса задач. Допустимые размеры доменов и стоимость их использования (стоимость вычислительной обработки задачи за определенное время) устанавливаются вычисляющим сервером.
Таким образом, в распоряжении вычислительного прокси имеется конечный набор вариантов по запуску задачи на вычисляющем сервере, т.е. набор возможных базовых времен вычислительной обработки, определяемых размерами доменов, и набор соответствующих стоимостей вычислительной обработки.
Будем считать, что, заказав вычисления задачи па вычисляющем сервере, вычислительный прокси-сервер не может се спять н обязан оплатить за вычисления задачи в случае получения результата за требуемое время. В случае неполучения результата к сроку оплата услуг вычисляющего сервера, естественно, не производится, однако и неустойка вычисляющим сервером не выплачивается.
Кроме того, будем исходить из наиболее неблагоприятного для вычислительного прокси-сервера предположения и считать, что по ходу вычисления ему недоступна никакая информация о ходе вычислительной обработки. В частности, если задолго до окончания вычислительной обработки на вычисляющем сервере произошла авария, серьезность которой заведомо не позволяет закончить вычисления задачи клиента к требуемому времени, то вычислительный прокси-сервер узнает об этом, только не получив результат по истечении того самого базового времени 7 . Таким образом, вес, что остается в распоряжении вычислительного прокси-сервера, - это учет накопленной ранее статистики взаимодействия с данным вычисляющим сервером. Оставляя в стороне вопрос о способах учета этой статистики, будем считать, что в распоряжении вычислительного прокси-сервера имеются алгоритмы, позволяющие для каждого вычислительного прокси-сервера оценить вероятность P t) неполучения результата в срок при заказанном времени вычислительной обработки / на і-ом вычисляющем сервере.
Будем считать, что вычислительному прокси-серверу заранее известны функции C,(f) — стоимости вычислительной обработки на і-ом вычисляющем сервере данной задачи при заказанном времени
Вернемся к вопросу о том, когда имеет смысл параллельный запуск вычислительной обработки одной и той же задачи в нескольких экземплярах. Преимущество данного подхода, очевидно, состоит в повышении вероятности получения результата, недостаток же в том, что в случае успешного получения результата вычислительному прокси-серверу придется заплатить за обработку (возможно, даже не завершенную) несколько копий задачи, а не одной.
Нетрудно построить пример, когда параллельный запуск двух копий задачи оказывается лучше с точки зрения ожидаемой прибыли ВЕЛ числительного прокси-сервера, чем реализация выгодной одномерной стратегии. При этом чем дороже стоимость услуг вычисляющего сервера, тем менее выгодным будет запуск вычислительной обработки нескольких экземпляров задачи по сравнению с запуском одного экземпляра. Чем выше важность получения результата для клиента (что выражается достаточно большим значением М , когда клиент готов платить достаточно большие деньги за обеспечение надежности), тем больше смысла в распараллеливании вычислительной обработки. Распараллеливание целесообразно при высокой аварийности сервера Р(Т).