Тип работы:
Предмет:
Язык работы:


Реализация механизма поддержки ограничений в проекте WMP

Работа №126574

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы38
Год сдачи2017
Стоимость4600 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
57
Не подходит работа?

Узнай цену на написание


Введение 5
1. Постановка задачи 7
2. Обзор 8
2.1. Обзор выбранного подмножества OCL 8
2.1.1. Ключевое слово self 8
2.1.2. Выражения inv 9
2.1.3. Выражения pre и post 10
2.1.4. Выражения body 10
2.1.5. Выражения init и der 10
2.1.6. Базовые типы 11
2.1.7. Выражения let 11
2.1.8. Выражения def 12
2.1.9. Инфиксные и префиксные операторы 12
2.1.10. Навигационные операторы 13
2.1.11. Комментарии 13
2.2. Обзор существующих реализаций OCL 14
2.3. Неоднозначность грамматики OCL 14
2.4. VOCL 14
2.5. Опыт QReal 15
3. Реализация синтаксического анализатора языка OCL 17
3.1. Решение проблемы с неоднозначностью грамматики 17
3.2. Использование ANTLR-Tool 18
3.3. Архитектура 19
4. Реализация интерпретатора языка OCL 26
4.1. Обзор поддержанных для интерпретации выражений 26
4.2. Детали реализации 27
4.2.1. Модель 29
4.3. Поддержка OCL Standard Library 32
5. Внедрение в проект WMP 34
Заключение 36
Список литературы 37

Языки графического моделирования являются предпочтительным выбором при проектировании разрабатываемой системы, когда дело доходит до определения структурных аспектов, а именно: основных по­нятий, свойств и отношений. Наиболее популярным примером данной графической нотации является UML.
Однако UML-диаграммы, как правило, не предоставляют достаточ­ных инструментов для того, чтобы обеспечить и описать все соответ­ствующие аспекты спецификации. Существует, кроме всего прочего, необходимость описывать дополнительные ограничения на объекты мо­дели. Такие неструктурные ограничения часто описываются на есте­ственном языке. Практика показывает, что это всегда приводит к неод­нозначностям. Для описания данных недвусмысленных ограничений были разработаны так называемые формальные языки. Недостаток тра­диционных формальных языков в том, что они могут использоваться людьми с сильной математической подготовкой, но сложны для осталь­ных.
Для разрешения перечисленных выше проблем был создан язык за­дания ограничений Object Constraint Language (OCL). Это формаль­ный язык для описания не структурных ограничений, а условий, на­кладываемых на состояние системы [5].
OCL-выражения гарантированно не несут за собой «скрытых эф­фектов», то есть в процессе вычисления конструкций на данном языке объекты модели не изменяются. OCL используется в первую очередь для проверки конкретного состояния системы на согласованность. На­пример, с помощью диаграмм классов UML мы не можем указать ка­кие значения может принимать конкретное поле класса и как значение данного поля вычисляется. В случае с OCL достаточно написать набор ограничений и в процессе работы системы проверять их выполнение, если хоть одно из ограничений нарушено - система находится в несогла­сованном (ошибочном) состоянии. Использование данной информации остаётся на откуп программистам, можно выдать сообщение об ошибке, либо в случае серьёзных нарушений прервать работу системы.
Также OCL-ограничения могут использоваться в качестве дополни­тельной документации к системе. Более того, в нынешних реалиях про­граммирования часто используется смесь языков, на которых ведётся разработка, поэтому описание ограничений на специализированном для этого языке является очевидным преимуществом. Нет необходимости прятать проверку ограничений глубоко в коде, когда есть возможность хранить их в специально отведённом месте.
На кафедре системного программирования СПбГУ разрабатывается проект WMP (Web modeling project) [9] - онлайн-платформа предметно-ориентированного моделирования, представляющая собой объединение редакторов диаграмм различных языков, она имеет возможность связи с роботом и возможность отправлять ему диаграммы на исполнение, а так же функционал 2D модели [11]. Также в ней идёт разработка поддержки метаредактора и стандарта BPMN.
Хотелось бы иметь возможность задавать ограничения в проекте WMP, например, для диаграмм поведения роботов можно ввести огра­ничения следующего вида: после блока «Моторы вперёд» не может сра­зу идти блок «Моторы стоп», на диаграмме обязан быть только один блок «Начало» и т.д. Это были всего лишь одни из немногих примеров возможных ограничений на состояние системы, в действительности их может быть огромное количество.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках данной работы была реализована возможность задания ограничений в проекте WMP. Были выполнены следующие задачи:
• создан парсер таких подножеств языка OCL как The Essential OCL и The Complete OCL;
• создан интерпретатор OCL-выражений, для интерпретации под­держаны выражения из The Essential OCL и выражения объявле­ния контекста ClassifierContextDecl из The Complete OCL, вклю­чающие в себя конструкции inv и def, также частично поддержа­ны операции и итераторы из OCL Standard Library (подробнее см. раздел 4.3);
• реализованные парсер и интерпретатор тщательно протестирова­ны;
• реализованнью парсер и интерпретатор апробированы в проекте WMP.
Исходные коды опубликованы в репозитории проекта на GitHub2.


[1] ANTLR. — URL: www.antlr.org/ (online; accessed: 12.04.2017).
[2] Andrew Fish John Howse Gabriele Taentzer, Winkelmann Jessica. Two Visualizations of OCL: A Comparison.— URL: http: //www.mathematik.uni-marburg.de/~swt/Publikationen_ Taentzer/VOCLTR.pdf (online; accessed: 14.05.2017).
[3] OCL Documentation.— 2014.— URL: download.eclipse.org/ocl/ doc/5.0.0/ocl.pdf (online; accessed: 12.04.2017).
[4] OCL - Eclipsepedia.— URL: wiki.eclipse.org/OCL (online; accessed: 12.04.2017).
[5] OCL.book.— 2014.— URL: www.omg.org/spec/OCL/2.4/PDF/ (online; accessed: 12.04.2017).
[6] OCL.js.— URL: ocl.stekoe.de/ (online; accessed: 04.05.2017).
[7] The Modelling Simulation, lab (MSDL) Design. Object Constraint Language. — URL: http://msdl.cs.mcgill.ca/presentations/02. 06.07.OCL/presentation.html (online; accessed: 14.05.2017).
[8] npm.— URL: https://www.npmjs.com/ (online; accessed: 14.05.2017).
[9] qreal/wmp Wiki.— URL: https://github.com/qreal/wmp/wiki (online; accessed: 14.05.2017).
[10] «ИНТУИТ» Национальный Открытый Университет. Ограниче­ния целостности и язык OCL.— URL: http://www.intuit.ru/ studies/professional_skill_improvements/1426/courses/74/ lecture/27919?page=4 (online; accessed: 14.05.2017).
[11] А.В. Безгузиков. Микросервисная архитектура QReal-Web // Курсовая работа.— 2016.— URL: http://se.math.spbu.ru/SE/ YearlyProjects/spring-2016/344/344-Bezguzikov-report.pdf (online; accessed: 12.04.2017).
[12] А.О. Дерипаска. Визуальный язык задания ограничений на модели в QReal // Курсовая работа. — 2012. — URL: se.math.spbu.ru/SE/YearlyProjects/2012/YearlyProjects/ 2012/345/345_Deripaska_report.pdf (online; accessed: 12.04.2017).
[13] Влиссидес Э. Гамма Р. Хелм Р. Джонсон Дж. Приемы объектно­ориентированного проектирования. Паттерны проектирования. — Питер, 2016.
[14] Мартыненко Б.К. Языки и трансляции.— Издательство С.- Петербургского Университета., 2004.


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ