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

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 07.03.2019
Размер файла 231,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Поволжский государственный технологический университет

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

Ванясин Никита Вадимович

аспирант

кафедра информатики и вычислительных систем

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

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

Поэтому возникает идея ограничивать редактирование исходного кода в редакторе таким образом, чтобы было невозможно написать некорректный исходный код программы. Редакторы, позволяющие это реализовать, получили название семантических редакторов [5].

Примерами сред, в которых используется семантическое редактирование, являются Unison, JetBrains Meta Programming System, Whole Platform.

Обзор существующих проектов с поддержкой семантического редактирования кода

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

Unison [10] это открытая программная платформа, задача которой - переосмыслить способ взаимодействия пользователей с программами, методы разработки и проектирования интерфейса. Проект собрал вместе лучшие идеи компьютерных наук за последние 40 лет.

Платформа состоит из трех основных компонентов:

Типизированный, функциональный язык программирования Unison

Семантический редактор, с поддержкой web

Unison Node: реализация компилятора и программного интерфейса для языка Unison.

Исходный код программ Unison редактируется в семантическом редакторе, который гарантирует, что программы будут сформированы семантически правильно. Отсутствуют какие-либо ошибки разбора исходного кода или ошибки несовпадения типов, т.к. редактор не позволяет их допустить. Пользователь редактора мгновенно получает обратную связь от компилятора языка в виде форм поиска и автоматического дополнения [10].

JetBrains Meta Programming System [12] представляет собой language workbench для разработки языков программирования. Она позволяет определять новые языки, как общего назначения, так и специфичного для предметной области. Данная среда полностью основана на семантическом редактировании кода, кроме того доступны нетекстовые синтаксические формы, включая таблицы и математические символы [1].

Термин language workbench представлен Мартином Фаулером в 2005 году [7][9]. В его статьях он определен как инструмент со следующими характеристиками:

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

Первичным источником информации является абстрактное представление исходного кода.

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

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

Language workbench может хранить неполную или противоречащую информацию.

Наиболее важной характеристикой семантического редактора является то, что весь текст, символы и любые графические элементы языка проецируются в абстрактное (семантически корректное) представление. JetBrains MPS полностью соответствует описанию language workbench. Редактор является семантическим: редактирование текста полностью заменено редактированием абстрактного представления программы [2].

Whole Platform [11] это language workbench, поддерживающий создание новых языков программирования. В основном предназначен для разработки программного обеспечения в сфере финансов благодаря его возможности определения и управления одновременно и форматов данных, и потоков изменения моделей данных. Целью данного проекта является уменьшение использования монолитных языков программирования. В данном проекте также используется семантический редактор.

Основными преимуществами данного инструмента являются:

Компонуемые модульные языки в декларативном стиле с межязыковой интеграцией;

Множество компонуемых и подключаемых типов для каждого из языков;

Различные модели запуска: интерпретация, динамическая компиляция, и генерация кода;

Множество стилей определения поведения: правила, запросы, аспектно-ориентированное программирование, шаблоны;

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

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

Основной проблемой программных систем с семантическим редактированием является тот факт, что не существует единой структуры данных для хранимого представления программного проекта. Структуры данных, которые используют такие системы не могут быть использованы другими полезными инструментами программирования, такие как системы контроля версий и визуализаторы отличий файлов, отладчиками. В результате программные системы с семантическим редактированием кода больше всего страдают от сложностей параллельного редактирования системы разными членами команды разработки[3][4]. Это основное отличие от классических систем редактирования кода, для которых существует огромное количество систем контроля версий, позволяющих удобно вносить изменения в систему различными членами команды разработчиков.

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

Способ семантического редактирования программного кода в интегрированных средах разработки приложений

Воспользуемся следующей терминологией для описания программного проекта с помощью различных представлений [8]:

Редактируемое представление: что редактируется для изменения программного проекта

Хранимое представление: сохраненная запись определения программного проекта

Исполняемое представление: что выполняется для запуска программного проекта

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

Визуальное представление: не редактируемое представление программного проекта

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

Рисунок 1. Классический способ редактирования

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

Рисунок 2. Семантический способ редактирования

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

Абстрактное представление может быть отредактировано через множество различных проекций, каждая из которых не обязательно отображает всю информацию о системе, таким образом, может быть использовано более упрощенное представление. К примеру, таблицу, которая выглядит как таблица гораздо проще редактировать, чем таблицу, которая записана как часть программного кода (в котором обычно надо использовать служебные символы и синтаксические конструкции для описания таблицы) [6].

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

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

Библиография

семантический редактирование программный

1. Voelter M., Solomatov K. Language Modularization and Composition with Projectional Language Workbenches illustrated with MPS (2010).

2. Pech V., Shatalin A., Voelter M. JetBrains MPS as a tool for extending Java PPPJ '13 Proceedings of the 2013 International Conference on Principles and Practices of Program-ming on the Java Platform: Virtual Machines, Languages, and Tools. C. 165-168 (2013).

3. Erdweg S., Storm T. Voelter M. and others. The State of the Art in Language Workbenches Conclusions from the Language Workbench Challenge (2013).

4. Clark T. A General Architecture for Heterogeneous Language Engineering and Projectional Editor Support (2015).

5. Chiusano P. Why are we still programming like it's the punchcard era? https://pchiusano.github.io/2014-09-30/punchcard-era.html (дата обращения 20.04.2016).

6. Chiusano P. A very early demo of semantic program layout https://pchiusano.github.io/2014-09-30/semantic-layout (дата обращения 20.04.2016).

7. Fowler M. Language Workbench http://www.martinfowler.com/bliki/LanguageWorkbench.html (дата обращения 20.04.2016).

8. Fowler M. Projectional Editing http://martinfowler.com/bliki/ProjectionalEditing.html (дата обращения 20.04.2016).

9. Fowler M. Language Workbenches: The Killer-App for Domain Specific Languages? http://www.martinfowler.com/articles/languageWorkbench.html (дата обращения 20.04.2016).

10. Unison Project http://unisonweb.org/2015-05-07/about.html (дата обращения 20.04.2016).

11. Whole Platform http://whole.sourceforge.net/ (дата обращения 20.04.2016).

12. JetBrains Meta Programming System https://www.jetbrains.com/mps/ (дата обращения 20.04.2016).

Размещено на Allbest.ru

...

Подобные документы

  • Общая характеристика, достоинства и недостатки среды разработки приложений Microsoft Visual Basic. Структура программы для редактирования изображений, аппаратные и программные средства ее создания и эксплуатации. Описание объектов и их взаимодействия.

    курсовая работа [3,9 M], добавлен 26.12.2012

  • Описание предметной области системы "Аптека", описание ее основных атрибутов и элементов, назначение и функциональные особенности. Разработка модели данной программной системы средствами UML, прецеденты процесса и требования к нему, эффективность.

    курсовая работа [1,2 M], добавлен 11.10.2013

  • Визуальное проектирование и событийное программирование. Повышение производительности программиста при использовании RAD-систем. Составление алгоритмов, разработка приложения для решения прикладных задач на примере консольных приложений C++ Builder 6.

    курсовая работа [258,7 K], добавлен 30.10.2013

  • Основные этапы разработки web-сайта. Классификации современных бирж. Выбор программного средства для разработки сайта. Требования к сайту. Расчет прогнозируемой цены и прибыли на программное средство. Описание языков для разработки web–приложений.

    дипломная работа [1,4 M], добавлен 02.09.2016

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

    контрольная работа [487,0 K], добавлен 05.07.2017

  • Использование единой системы программной документации. Состав нормативно-технических документов. Разработка анкетирования средствами web-приложений. Описание и текст программы, методика испытаний. Анализ предметной области сайта. Пояснительная записка.

    курсовая работа [32,2 K], добавлен 13.03.2015

  • Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.

    реферат [30,7 K], добавлен 01.03.2011

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

    контрольная работа [151,7 K], добавлен 22.02.2011

  • Основание для разработки web-сайта. Требования к программной документации, стадии и этапы разработки сайта. Установка пакета Denwer. Установка программы создания и редактирования Web-сайтов Joomla 1.5. Расчет себестоимости программного продукта.

    дипломная работа [7,7 M], добавлен 30.06.2012

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

    курсовая работа [887,4 K], добавлен 27.08.2012

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

    реферат [2,2 M], добавлен 25.12.2017

  • JavaServer Faces как фреймворк для веб-приложений, написанных на Java. Знакомство с особенностями разработки гостевой книги с использованием технологий JSF и PrimeFaces. Общая характеристика панели редактирования текста"editor", анализ возможностей.

    дипломная работа [4,6 M], добавлен 15.05.2014

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

    дипломная работа [504,6 K], добавлен 05.05.2014

  • Разработка системы, поддерживающей формирование итоговых отчетов из данной базы и обеспечивает ввод, удаление, хранение и редактирование информации, которая содержится в таблицах данных. Обоснование выбора среды разработки Delphi 7 для WINDOWS–приложений.

    дипломная работа [2,1 M], добавлен 20.05.2012

  • Основание и назначение программного кода для работы распределительной станции FESTO, требования к информационной и программной совместимости. Параметры технических средств, язык программирования AWL. Расчет затрат и экономической эффективности проекта.

    дипломная работа [2,4 M], добавлен 11.03.2012

  • Основные функции автоматизированной системы "Решатель математических формул". Требования к техническим средствам, информационной и программной совместимости. Стратегии конструирования программного обеспечения. Проектирование, разработка программного кода.

    курсовая работа [600,0 K], добавлен 25.02.2012

  • Запросы клиента по области возможных запросов к серверу. Программа для прогнозирования поведения надежности программного обеспечения на основе метода Монте-Карло. Влияние количества программ-клиентов на поведение программной системы клиент-сервера.

    контрольная работа [705,3 K], добавлен 03.12.2010

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

    презентация [1,3 M], добавлен 22.04.2014

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

    курсовая работа [1,2 M], добавлен 23.09.2014

  • Описание разрабатываемой программы с точки зрения пользователя и программиста. Поэтапная разработка программной системы. Создание базы данных в Access. Разработка структуры классов. Создание структуры для хранения данных. Проектирование интерфейса.

    курсовая работа [1,4 M], добавлен 07.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.