На главную страницу
Информационные системы и банки данныхУправление и принятие решений в сложных системахПрикладные информационные технологииКомпьютер в учебном процессеСетевые технологииПленарные доклады Карта сервераПобедители семинараИнформацияОбщее впечатлениеВаши отзывы
Назад к списку докладов

ПРЕДСТАВЛЕНИЕ ПРОГРАММ КАК ИЕРАРХИИ МАШИН

В.А. Барков, А.А.Дмитриев
(Владимирский государственный университет)

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

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

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

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

1) модуль ограничений может служить проектной документацией;

2) подход не зависит от конкретного языка программирования и может быть использовав для языков, не поддерживающих модульности. Автором был сконструирован анализатор первого типа для языка Оберон.

RLE Banner Network