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

Тип работы:
Реферат
Предмет:
ТЕХНИЧЕСКИЕ НАУКИ


Узнать стоимость

Детальная информация о работе

Выдержка из работы

УДК 519. 711
ПРИНЦИПЫ эволюционного СОЗДАНИЯ ФУНКЦИОНАЛЬНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ
ЛЕВЫКИНВ.М., ЧАЛЫЙ С. Ф, БОРОВСКОЙ Д.Н.
Рассматривается задача создания и эволюции программного обеспечения распределенных информационных систем. Формулируются принципы создания функционального программного обеспечения на основе эволюционного подхода. Обосновывается выбор среды программирования для эволюционной разработки программного обеспечения информационных систем.
1. Двухмерный подход к эволюции программного обеспечения
Функциональное программное обеспечение (ФПО) информационной системы в процессе ее создания и эксплуатации претерпевает революционные и эволюционные изменения. Революционные изменения радикально преобразуют ФПО, однако, при правильном проектировании системы, потребность в них возникает достаточно редко. Основной объем затрат приходится, как правило, на эволюционные изменения. Эволюция программного обеспечения идет относительно небольшими шагами (транзакциями). На каждом шаге имеющийся код-результат предшествующей транзакции — изменяется незначительно, но к нему добавляется компонент, реализующий новую функциональную возможность. При этом возникает проблема согласования вновь включаемых компонентов и существующей структуры прикладной программы [ 1].
Для решения этой проблемы А. Л. Фуксманом [2] было предложено представление структуры прикладной программы в виде схемы, состоящей из горизонтальных и вертикальных слоев. Горизонтальные слои — необходимая, неотъемлемая часть программы, поскольку в каждом из них локализуется какой-либо аспект ее функционирования. Напротив, вертикальные слои (компоненты) расширяют возможности программы. Тем самым их реализацию при создании ФПО распределенной информационной системы можно отложить на последующие этапы разработки (эволюции) системы. В соответствии с указанным подходом, на первом этапе разработки программного обеспечения создаются предельно упрощенные версии прикладных программ, остающиеся после удаления из них всех вертикальных слоев. Затем, при последующих транзакциях, реализуются и добавляются все новые и новые вертикальные слои. С технологической точки зрения заметное преимущество данной стратегии состоит в том, что при отладке любой промежуточной (без некоторых вертикальных слоев) версии программного обеспечения тут не требуются «заглушки» — имитаторы недостающих частей, без которых не могут обойтись популярные стратегии «сверху вниз» или «снизу вверх».
Любая транзакция, расширяющая программу, имеет вполне определенную структуру: она представима в форме серии расширений имеющихся горизонтальных слоев. Некоторые из них транзакция может вовсе не затрагивать, в некоторые слои добавлять один модуль, в некоторые — несколько модулей. Далее этот однородный набор модулей превращается в пригодный для трансляции текст на языке программирования. При этом горизонтальный слой может принимать форму любой однородной языко -вой конструкции. Таких конструкций в существующих языках имеется достаточно много. Однородны, например, константы в массиве констант, ветви в операторе выбора и др. Даже самая массовая языковая конструкция — группа параллельно или последовательно выполняемых действий — составлена из однородных частей -операторов [ 1 ].
Рассмотрим основные преимущества двухмерного подхода к проектированию и эволюции ФПО.
Во-первых, двухмерные конструкции позволяют эффективно отобразить внутреннюю структуру ФПО. Вертикальные слои (компоненты) характеризуют многообразие внешних функций прикладных программ, а горизонтальные — интегрируют алгоритмическое ядро и пользовательский интерфейс.
Во-вторых, дополнение нового компонента базируется на унифицированных интерфейсах модулей, размещаемых в отдельных горизонтальных слоях.
В-третьих, исключение компонент из системы может выполняться аналогично их подключению, на основе стандартных интерфейсов, без коррекции остального кода программного обеспечения. Любая транзакция, обслуживающая эволюцию ФПО, распадается на ряд подключений новых однородных модулей к существующим горизонтальным слоям. Каждое такое подключение происходит безболезненно: модуль просто помещается в базу данных программного проекта и снабжается атрибутом принадлежности к определенному горизонтальному слою.
В-четвертых, двухмерная стандартизация процесса подключения и удаления модулей особенно важна для распределенной информационной системы: она автоматически обеспечивает ее целостность в процессе различных эволюционных изменений.
Наряду с достоинствами двумерный подход к эволюционному развитию ФПО обладает в настоящее время одним существенным недостатком: двухмерные программы достаточно сложно реализовать с помощью традиционных инструментальных средств разработки. Для этого имеются следующие причины: с одной стороны, инструментальные средства разрабатывались без учета двухмерно-сти ФПО, а с другой — их внутренняя структура закрыта по коммерческим соображениям, что не позволяет создать соответствующие надстройки.
Одним из путей преодоления указанного недостатка является использование метода генетического программирования при разработке программного обеспечения распределенной информационной системы.
152
РИ, 2001, № 2
2. Парадигма генетического программирования при создании ФПО информационной системы
Метод генетического программирования (ГП) основан на использовании эволюционных алгоритмов в области создания прикладных программ. Эволюционный алгоритм представляет собой оптимизационный метод, основанный на эволюции популяции «особей». Каждая особь содержит набор генов и характеризуется приспособленностью-многомерной функцией ее генов. Набор генов обычно описывается в виде символьных строк фиксированной длины. В процессе моделирования эволюции выполняется максимизация функции приспособленности с помощью многократного выполнения операций отбора, рекомбинации («кроссинговера») и мутации геномов особей. На каждом шаге эволюции происходит отбор большинства (но не всех) особей с высоким значением функции приспособленности и, таким образом, в целом качество популяции особей на каждом шаге возрастает [3].
В области ГП объекты, из которых состоит популяция, представляют собой не строки фиксированной длины, кодирующие возможные решения проблемы, а программы, которые после своего выполнения являются кандидатами на решение пробле -мы. При этом для ГП программа представляется не просто как набор строк кода, а в виде дерева синтаксического разбора и соответствующей структуры данных. Фактически программа в ГП уже имеет двухмерный характер.
Такая программа состоит из элементов функционального и терминального наборов. Функциональный представляет собой набор операторов, используемых в программе, и отображает внутренние вершины дерева синтаксического разбора. Терминальный набор соответствует терминальным вершинам дерева синтаксического разбора, например, переменным, константам или функциям без аргументов.
В генетическом программировании используется оператор кроссинговера, при котором скрещиваются поддеревья дерева синтаксического разбора программ — особей популяции. Оператор мутации в ГП используется достаточно редко.
Реализация рассмотренного представления программ в ГП естественным образом формируется с помощью интерпретируемых языков Lisp и Schema.
Эволюция генетических программ включает следующие шаги.
— Г енерируется начальная популяция программ, представляющих собой композиции функций (арифметических, логических и других операций) и терминаторов (переменных и констант), взятых из функционального и терминального наборов, относящихся к решаемой проблеме.
— Каждая программа выполняется и для нее опре -деляется значение функции приспособленности.
— Создается новая популяция компьютерных программ за счет копирования в нее наилучших программ старой популяции, создания новых программ с помощью скрещивания существующих и, возможно, создания новых программ с помощью мутаций. Операция скрещивания реализуется пуРИ, 2001, № 2
тем обмена случайно взятых поддеревьев двух особей, которые выбраны в соответствии с их полезностью.
— Все программы популяции снова выполняются и цикл повторяется до тех пор, пока не будет получен необходимый результат
Метод генетического программирования показывает хорошие практические результаты. В частности, в настоящее время на рынке представлена коммерческая система PolyAnalyst[4] российской фирмы «Мегапьютер», реализующая подход эволюционного (генетического) программирования в сфере автоматического анализа числовых баз данных и обнаружения в данных ранее неизвестных, нетривиальных, практически полезных и доступных пониманию закономерностей, необходимых для принятия оптимальных решений. В соответствии с информацией разработчика именно применение ГП обеспечило системе PolyAnalyst сочетание высокой производительность «больших систем» с низкой стоимостью, присущей программам для Windows.
Реализация генетического программирования в рассматриваемой системе состоит в формировании гипотез о зависимости целевой переменной от других переменных в виде автоматически синтезируемых программ, выраженных на внутреннем языке программирования. Использование универсального языка программирования позволяет выразить практически любую зависимость или алгоритм.
Процесс производства внутренних программ (гипотез) организуется как эволюция в пространстве программ. Когда система находит гипотезу, описывающую исследуемую зависимость достаточно хорошо, то начинается применение разнообразных незначительных модификаций такой программы и отбор лучшей дочерней программы, полученной в данном процессе, которая в наибольшей степени повышает точность предсказания. Таким образом, система создает некоторое число генетических линий программ, конкурирующих друг с другом по точности, статистической значимости и простоте выражения зависимости.
Когда наилучшая программа (гипотеза) будет найдена с желаемой степенью точности, специальный модуль системы преобразует обнаруженную зависимость с внутреннего языка в ясную и понятную человеку форму: математические формулы, предсказательные таблицы и т. д. Это позволяет пользователю понять суть полученной зависимости, проконтролировать ее, а также получить графическую визуализацию результатов.
Таким образом, в основу эволюционной разработки ФПО распределенной информационной системы целесообразно положить следующие принципы:
— эволюция ФПО на основе метода генетического программирования-
— двухуровневый подход к построению программного обеспечения-
— использование интерпретируемого языка программирования.
153
3. Выбор языка программирования
Сформулируем требования к языку программирования, обеспечивающему эволюционное развитие программного обеспечения распределенной информационной системы:
1) возможность реализации двухмерного подхода к проектированию программ-
2) возможность изменять программу без ее перекомпиляции-
3) кросс-платформенность-
4) возможность интеграции с существующим программным обеспечением-
5) возможность взаимосвязанной работы модулей системы в сетевой среде.
Первые два требования необходимы для двухмерного «выведения» программ на основе генетического программирования. Они однозначно определяют интерпретируемый характер языка. Им хорошо удовлетворяют и старый, известный Lisp, и современный Schema. Кросс-платформенностью и возможностью работы в сетевой среде характеризуется Java. В то же время у всех указанных языков возникают проблемы при интеграции с уже существующим, наработанным программным обеспечением. В связи с этим целесообразно рассмотреть возможность применения системы Tcl/Tk.
Tcl/Tk представляет собой кросс-платформенную систему, включающую в себя интерпретатор языка программирования Tcl и его расширения под названием Tk. Tcl расшифровывается как Tool command language (язык управления инструментами). Tk расшифровывается как Tool kit — набор инструментов. Фактически инструменты Tk представляют собой гибкие и удобные в использовании примитивы пользовательских графических интерфейсов, управление которыми осуществляется средствами языка Tcl.
Система Tcl/Tk успешно используется компанией CPU (www. cpu. com) при реализации проектов класса «mission-critical». В частности, система управления морской буровой платформой стоимостью более 1 млрд. долларов интегрируется на основе технологии Tcl/Tk и состоит менее чем из 200 программных модулей, каждый из которых содержит в пределах 1000 строк кода. В состав модулей входят, в частности, геоинформационная система, разнообразные базы данных, подсистемы управления реального времени. Все модули обладают полноценным графическим интерфейсом.
В среде Tcl/Tk реализованы пользовательский интерфейс и интегрирующая среда системы управления производственными процессами реального времени на заводах BMW.
Все серверы фирмы AOL используют Tcl как встроенный язык программирования, что обеспечивает указанной фирме динамическое формирование контента Web-сайтов и расширенные сервисы.
Tcl /Tk используется также в системах тестирования фирмами Cisco, HP.
Tcl/Tk обладает следующими особенностями:
— интерпретируемый язык расширений Tcl позволяет разработчикам объединять уже существующие компоненты в сложные приложения-
— встроенный Tk обеспечивает простые механизмы создания графических пользовательских интерфейсов-
— совместное использование Tcl/Tk представляет собой мощное дополнение к программным репозиториям-
— Tcl/Tk является расширяющейся системой, допускающей включение новых компонент-
— Tcl/Tk — расширяющая система, допускающая включение ее самой в повторно используемые компоненты.
Система Tcl/Tk реализует идеологию, существенно отличающуюся от традиционно принятых методов разработки программного обеспечения с интенсивным использованием графического интерфейса пользователя. Все задачи взаимодействия с пользователем реализуются интерпретирующей частью программы на Tcl. Если для интерактивных потребностей задачи не хватает возможностей встроенных графических примитивов Tk, разработчик может расширить саму Tk-подсистему. Ресурсоемкие модули, реализующие базовые функции, создаются на компилируемых языках программирования. В процессе своей работы такие модули генерируют скрипы (строки данных) на Tcl/Tk и передают их с помощью механизмов межпроцессного взаимодействия интерпретатору Tcl.
Указанный подход сочетает преимущества компиляторов и интерпретаторов и позволяет получить мобильные и достаточно быстрые программы, логика функционирования которых может быть изменена в процессе их работы.
Система Tcl/Tk реализована для всех наиболее распространенных платформ, включая Unix и Windows.
Приведенные особенности интерпретатора Tcl обеспечивают кроссплатформенность, интеграцию с существующим программным обеспечением (в том числе и в сетевой среде), а также возможность использования генетического программирования для развития программного обеспечения распределенной информационной системы.
Литература: 1. Горбунов-Посадов М. М. Как растет программа. Препринт Института прикладной математики им. М. В. Келдыша РАН, 2000, N50. 16с. — http: // www. keldvsh. ru/dpt 19/grow. htm. 2. Фуксман А. Л. Технологические аспекты создания программных систем. М.: Статистика, 1979. 184с. 3. Redko V.G. Applied Evolutionary Modeling. -htpp: //pespmc 1. vub. ac. be/cgi-bin/ APPEVMOD. htm, 1999. 4. Все о PolvAnalvst. -http:// www. megaputer. ru/PolvAnalvst/pasvstem. html.
Поступила в редколлегию 31. 01. 2001 Рецензент: д-р техн. наук, проф. Петров Э. Е.
Левыкин Виктор Макарович, д-р техн. наук, профессор, заведующий кафедрой информационно-управля-ющих систем ХТУРЭ. Адрес: Украина, 61 166, Харьков, пр. Ленина, 14.
Чалый Сергей Федорович, канд. техн. наук, доцент кафедры искусственного интеллекта ХТУРЭ. Научные интересы: эволюционное моделирование. Адрес: Украина, 61 166, Харьков, пр. Ленина, 14, тел. 40−93−35.
Боровской Денис Николаевич, студент группы ИИС-96−1 ХТУРЭ. Адрес: Украина, 61 162, Харьков, ул. Ньютона, 127, кв. 26.
154
РИ, 2001, № 2

ПоказатьСвернуть
Заполнить форму текущей работой