Вестник магистратуры. 2021. № 1-1(112)
ISSN 2223-4047
УДК 62
Э.Т. Дзидзава, К.М. Ахмедов
МЕТАМОДЕЛЬ НА PHP С ИСПОЛЬЗОВАНИЕМ ФРЕЙМВОРКА XTEXT
Язык PHP стал наиболее часто используемым языком для разработки веб-приложений. Представление исходного кода в виде моделей, соответствующих метамодели, является центром подхода архитектуры, управляемой моделями. Этот исследовательский проект направлен на то, чтобы найти способ получить, используя Xtext фреймворк и модельно-ориентированные инженерные методы, метамодель языка PHP и парсер.
Ключевые слова: архитектура, управляемая моделями; Xtext; мо-дельно-ориентированная инженерия; веб-приложения; PHP
Подход архитектуры, управляемой моделями обеспечивает ведущую роль моделей в их процессах. PHP является де-факто стандартным языком в веб-разработке, кроме веб-сайтов, больше веб-приложений также разрабатывается с использованием языка PHP. Потребность в моделировании PHP-кода возросла.
Мы определили подход к получению метамодели PHP и парсера PHP для обработки исходного кода PHP. Этот подход воспользовался потенциалом Xtext фреймворка.
Модельно-ориентированная инженерия
Модельная инженерия - это парадигма программной инженерии. Модельная инженерия ввела в программную инженерию подходы, основанные на моделях, а не на коде.
Архитектура, управляемая моделями
Архитектура, управляемая моделями, - это концепция OMG, которая предлагает основывать разработку программного обеспечения на конкретных моделях с использованием стандартов. С помощью этих моделей мы можем сосредоточиться на логической концепции программы, и с их помощью можно реализовать преобразования, которые генерируют код или другие модели для конкретной технологии или с более высоким абстрактным уровнем. Модельно-ориентированная инженерия определяет основу для реализации этих моделей. Модели являются экземпляром метамоделей. Мета-модель - это определение набора понятий и их взаимосвязи с помощью диаграммы классов. Сама по себе структура метамодели обеспечивается мета-метамоделью. Мета-метамодель определяется языком MOF. Архитектура, управляемая моделями основана на трех уровнях моделирования: модель, не зависящая от вычислений, модель, независимая от платформы и модель, зависящая от платформы. Чтобы получить модель на уровне (целевая модель) из другой модели с другого уровня (исходная модель), можно использовать преобразования модели.
Xtext - это фреймворк для разработки языков программирования и доменных языков. Xtext содержит языковую инфраструктуру, включающую парсеры, компилятор и интерпретатор.
В настоящем исследовании цель состоит в том, чтобы преодолеть разрыв между новыми технологиями реинжиниринга и эксплуатацией PHP, рассматриваемый, как фактический язык и платформа в веб-инженерии. Однако первым шагом является создание метамодели PHP для представления информации в PHP-коде в виде моделей.
Этот подход может быть возобновлен при использовании фреймворка Xtext, который позволяет определить синтаксис языка, синтаксис PHP был написан в грамматике Xtext, после чего фреймворк имеет инструмент, позволяющий генерировать метамодель и парсер для языка PHP.
Синтаксис PHP EBNF
В минималистский синтаксис PHP был написан на EBNF. Этот синтаксис EBNF должен быть переведен в грамматическую форму Xtext, чтобы использовать его в Xtext.
Переход от EBNF к Xtex
Метод перехода следует определенным правилам, которые, как показано на рисунке 1, сопоставляют элементы грамматики EBNF с элементами Xtext.
XText
Сопостав л ени е
EBNF нотация Xtext нотация
Определение
Конкатенация
Прекращение
(Непосредственно объединить)
Рис. 1. Полученный синтаксис PHP Xtext
© Дзидзава Э.Т., Ахмедов К.М., 2021.
ISSN 2223-4047
Вестник магистратуры. 2021. № 1-1(112)
С полученным Xtext-кодом Xtext помогает нам сгенерировать метамодель и IDE DSL, которая может анализировать язык DSL.
Два сгенерированных артефакта - это PHP-парсер и PHP-метамодель.
В связи с новыми горизонтами, открытыми архитектурами, управляемая моделями, все больше исследовательских проектов используют механизмы, предлагаемые архитектурами, управляемая моделями, в числе которых, например:
• Модельный подход для моделирования и генерации приложений на основе PHP Codelgniter;
• Проект MoDisco.
Модельный подход для моделирования и генерации приложений на основе PHP Codeigniter: применялся модельный подход к моделированию PHP-фреймворка Codelgniter и созданию CRUD-приложений на его основе.
MoDisco
Фреймворк Modisco предоставляет возможность извлечения информации из программных артефактов Java. Полученная модель будет соответствовать метамодели, включенной в Modisco. Модель Java, например, может быть получена из исходного кода (на основе метамодели java). Извлеченные модели Modisco - это модели Ecore. Modisco - один из инструментов, позволивших применить принципы архитектуры, управляемая моделями в реальной жизни. К сожалению, текущая версия Modisco не включает в себя никакой конкретной поддержки PHP-кода.
По данным соответствующих работ можно сделать вывод, что проекты, дающие PHP метамодель, встречаются редко. Как, например, Modisco проект, который работает только с Java язык метамодели.
Xtext фреймворк, который позволяет получить метамодель языка PHP и синтаксический анализатор из синтаксиса языка PHP. Этот подход состоит из двух этапов:
1. Определение элементов языка PHP и написание синтаксиса языка PHP с использованием языка EBNF и преобразование EBNF в язык Xtext;
2. Генерация метамодели языка PHP и парсера. Для реализации обоих этапов мы использовали Xtext фреймворк, который позволил нам написать синтаксис языка PHP и генерировать метамодель языка PHP и парсер.
Библиографический список
1.Model Driven Architecture (MDA). Available: http://www.omg.org/mda/
2.Xtext project. [URL]: http://www.eclipse.org/Xtext
3.Kent. (2002) "Model driven engineering." Integrated Formal Methods volume 2335 of Lecture Notes in Computer Science Springer: 286-298.
4.Meta-ObjectFacility specification of the OMG. [Online]. [URL]: http://www.omg.org/spec/MOF/2.0/
5.Rhazali, Hadi, Mouloudi. (2016). "Model Transformation with ATL into MDA from CIM to PIM Structured through MVC. " Procedia Computer Science 83 : 1096-1101.
6.Rhazali, Hadi, Mouloudi. (2015). "A methodology for transforming CIM to PIM through UML: From business view to information system view." Third World Conference on Complex Systems (WCCS), Marrakech, Morocco : 1-6.
7.Rhazali, Hadi, Mouloudi. (2015). "Transformation approach CIM to PIM: from business processes models to state machine and package models." Open Source Software Computing (OSSCOM) International Conference on, Amman: 1-6.
8.Salsi. "PHP EBNF Syntax." [Online]. Available: http://www.icosaedro.it/articoli/php-syntax.html
9. Yue. (2014) "Transition from EBNF to Xtext." MODELS-PSRC 1258 : 75-80. [10] Arrhioui, Mbarki, Betari, Roubi, Erramdani. (2017) "A Model Driven Approach for Modeling and Generating PHP CodeIgniter based Applications." Transactions on Machine Learning and Artificial Intelligence (TMLAI) 5 (4) : 259-266.
10.Modisco project. [URL]: https://eclipse.org/MoDisco/
ДЗИДЗАВА ЭВЕЛИНА ТИМУРОВАНА - бакалавр, Мытищинский филиал Московский государственный технический университет им Н.Э. Баумана. Россия.
АХМЕДОВ КАЗБЕКМЕЖВЕДИНОВИЧ- магистрант, Мытищинский филиал Московский государственный технический университет им Н.Э. Баумана. Россия.