WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

загрузка...
   Добро пожаловать!

Pages:     | 1 | 2 ||

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

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

В завершение второй главы в разделе 2.5 приведен законченный пример использования языка TreeDL для описания графовой структуры. В качестве примера выбран абстрактный синтаксис широко известного формального языка описания BNF грамматики. В Приложении IV приведен более сложный пример – описание абстрактного синтаксиса самого языка TreeDL.

3. Инструментальная поддержка языка TreeDL В третьей главе описана разработанная автором данной работы инструментальная поддержка языка TreeDL.

Для обработки описаний графовых структур данных на языке TreeDL разработан инструмент treedl, реализованный на языке Java.

Основным назначением этого инструмента является:

• Анализ корректности описания структуры данных и операций над ними на языке TreeDL.

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

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

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

• Готовая платформа для создания дополнительных анализаторов и генераторов кода необходимых компонентов по описанию структуры данных на языке TreeDL.

В завершение третьей главы сведены в таблицу размеры основных компонентов разработанного комплекта инструментов. Из таблицы видно, что сгенерированное описание абстрактного синтаксиса языка TreeDL составило около 15% общего количества строк разработанного вручную кода инструмента. Использование языка TreeDL позволило примерно в 5 раз сократить объем ручной работы по описанию абстрактного синтаксиса.

4. Апробация языка TreeDL В четвертой главе анализируется опыт практического использования языка TreeDL. Различные версии языка описания абстрактного синтаксиса, послужившие основой для языка TreeDL, были использованы в ряде проектов в 1995-2005 годах.

В 1996-1998 годах в рамках проекта по тестированию на основе формальных спецификаций был разработан транслятор [1] исполнимого подмножества языка спецификации RSL в процедурный язык PROTEL.

Для реализации этого транслятора был разработан простейший формат описания дерева абстрактного синтаксиса и инструмент gentree для перевода этого описания в целевой язык программирования.

Сгенерированное описание абстрактного синтаксиса языка RSL составило около 25% общего количества строк разработанного вручную кода инструмента. Использование специализированного языка описания графовых структур данных позволило примерно в 10 раз сократить объем ручной работы по описанию абстрактного синтаксиса.

В 2000-2002 годах было создано спецификационное расширение языка Java [2] и транслятор этого расширения в язык Java.

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

Сгенерированное описание абстрактного синтаксиса спецификационного расширения языка Java составило около 30% общего количества строк разработанного вручную кода инструмента. Использование специализированного языка описания графовых структур данных позволило примерно в 15 раз сократить объем ручной работы по описанию абстрактного синтаксиса.

В 2002-2003 годах было создано спецификационное расширение языка C# [3] и транслятор этого расширения в язык C#.

Сгенерированное описание абстрактного синтаксиса спецификационного расширения языка C# составило около 18% общего количества строк разработанного вручную кода инструмента. Использование специализированного языка описания графовых структур данных позволило примерно в 6 раз сократить объем ручной работы по описанию абстрактного синтаксиса.

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

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

В проекте OTK разработан способ итерации моделей [4], структура которых задана на языке TDL (который является ранней версией языка TreeDL). По каждой из полученных моделей строятся тестовые данные, соответствующие этой модели. Обычно тестовые данные представляют собой текст, который создается по модели при помощи той же техники генерации на основе шаблонов.

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

Успешное применение OTK для создания тестов оптимизирующих модулей компиляторов, показало, в частности, что использование языка TDL не вызывает у пользователей затруднений при описании структуры данных.

Язык TreeDL используется для описания структуры абстрактного синтаксиса языка Java в проекте по созданию открытого анализатора языка Java.

Результатом работы анализатора является граф абстрактного синтаксиса языка Java, который может быть использован для специализированной обработки языка Java.

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

Количественные оценки использования языка описания графовых структур в перечисленных проектах сведены в итоговую таблицу в завершение четвертой главы.

Размер Сокращение Размер кода, Доля описания ручной работы, Размер сгенерированного подсистемы, на языке сгенерированные Проект проекта, по описанию описанной TreeDL, строки / строк кода на языке TreeDL, на языке строк рукописные строк кода TreeDL, % кода строки Транслятор языка RSL 40000 1000 10000 25 Транслятор спецификационного 72000 1500 22000 30 расширения языка Java Транслятор спецификационного 105000 3000 19000 18 расширения языка C# Открытый анализатор 30000 1200 14000 47 языка Java Транслятор языка 19880 600 3100 15 TreeDL рис. 8. Количественные оценки использования языка TreeDL Заключение В заключении представлены результаты, полученные в рамках настоящей диссертационной работы. Основным результатом является создание нового языка TreeDL для объектно-ориентированного описания графовых структур данных и нового метода разработки программных систем, использующих графовые структуры данных. При проектировании языка TreeDL были проанализированы необходимые возможности языка описания структуры данных и учтены недостатки существующих языков такого рода.

Кроме того, получены следующие новые научные и практические результаты:

• Предложена общая схема трансляции этого языка в современные объектно-ориентированные языки общего назначения.

• Для языка TreeDL реализована платформа c открытой архитектурой, которая позволяет подключать дополнительные модули, осуществляющие обработку описания структуры данных, в частности генерацию кода на языке программирования.

• На базе этой платформы реализованы модули генерации, обеспечивающие совместное использование языка TreeDL с языками программирования Java и C#.

• Реализована интеграция языка TreeDL в среду разработки на платформе Eclipse.

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

В Приложении II приведена лексическая грамматика языка TreeDL.

В Приложении III приведены синтаксическая грамматика и контекстные ограничения языка TreeDL.

В Приложении IV приведено описание абстрактного синтаксиса языка TreeDL на самом языке TreeDL.

Благодарности Эта работа возникла в рамках создания инструментальной поддержки технологии тестирования UniTesK, разрабатываемой в группе RedVerst Института Системного Программирования РАН. Автор выражает признательность своим коллегам, которые участвовали в апробации языка TreeDL, за энтузиазм, терпение и массу важных замечаний. Автор особо благодарен • А.С.Косачеву, который помог более широко взглянуть на проделанную работу;

• А.А.Монахову за отличные идеи по развитию языка;

• С.А.Зеленовой и С.В.Зеленову за расширение области применения языка;

• М.В.Архиповой за прототип, послуживший основой для реализации модуля интеграции языка TreeDL со средой разработки на платформе Eclipse.

Работы автора по теме диссертации 1. А.Демаков, Исполнимое подмножество языка спецификации и его трансляция. Приложения системного программирования: Вопросы кибернетики, Научный совет по комплексной проблеме «Кибернетика» РАН, Москва, 1998, вып.4, 17-28.

2. I. B. Bourdonov, A. V. Demakov, A. A. Jarov, A. S. Kossatchev, V. V. Kuliamin, A. K. Petrenko, and S. V. Zelenov. Java Specification Extension for Automated Test Development. Proceedings of PSI'01. LNCS 2244, pp. 301-307. SpringerVerlag, 2001.

3. А.Демаков, Применение технологии UniTesK для тестирования.NET компонентов, доклад на конференции Технологии Microsoft в научных исследованиях и высшем образовании, Москва, 15–17 июня 2003.

4. А.В. Демаков, С.В.Зеленов, С.А. Зеленова, Генерация тестовых данных сложной структуры с учетом контекстных ограничений, Труды ИСП РАН, т. 9, 2006.

5. А.Демаков, Язык описания абстрактного синтаксиса TreeDL и его использование, Препринт ИСП РАН, №17, 2006.

6. Демаков А.В. TreeDL: язык описания графовых структур данных и операций над ними. Вычислительные методы и программирование, Том 7, 2006.

Pages:     | 1 | 2 ||






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»