Процесс построения диаграмм классов UML по коду на языке Scala. Задачи обслуживания, улучшения или замены существующих программных систем. Использование визуальных представлений кода при помощи семантики и нотаций UML (Unified Modeling Language).
Аннотация к работе
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «ВЫСШАЯ ШКОЛА ЭКОНОМИКИ» УТВЕРЖДАЮ Академический руководитель образовательной программы «Программная инженерия», профессор департамента программной инженерии, канд. техн. наук Программа построения диаграмм классов UML по исходному коду программ на языке Scala по направлению подготовки 09.03.04 «Программная инженерия» Научный руководитель преподаватель департамента программной инженерии Выполнил студент группы БПИ121 4 курса бакалавриата образовательной программы «Программная инженерия»Работа посвящена процессу построения диаграмм классов UML по коду на языке Scala. В большинстве случаев [21] эти системы написаны на языках, исполняемых на JVM (Java Virtual Machine), таких как Java, Scala, Groovy, Kotlin и прочие, которые совместимы с Java во время исполнения, однако имеют свои синтаксические особенности. Для проектирования таких систем используются различные визуальные представления (диаграммы) кода при помощи семантики и нотаций UML (Unified Modeling Кроме того, описаны проблемы и решения при представлении языковых элементов Scala в терминах UML, а также продемонстрированы различные способы построения диаграмм классов UML. Использование UML диаграммы классов позволяет упростить процесс исследования и проектирования комплексных систем из существующих компонент, которые могут быть написаны на разных языках программирования.В работе рассматривается процесс построения диаграмм классов UML по исходному коду, написанному на языке Scala. Активно развивающаяся отрасль «интернет вещей» (Internet of Things, IOT) диктует свои требования к технической и программной части устройств, однако и здесь язык успешно применяется в качестве платформы для реализации идей [13]. Вто жевремя при проектировании крупных систем особое вниманиетребуется уделять программной архитектуре (структура моделей программы, зависимости между ними), а не только подробностям программной реализации отдельных модулей. Для облегчения понимания структуры ПО разработан язык UML, описывающий различные виды диаграмм, дающих представление о программе с разных точек зрения. В рамках данной выпускной квалификационной работы была поставлена цель - разработать программу построения диаграмм классов UML по исходному коду программ на языке Scala.Сначала рассматриваются программы, которыерешают сразудвезадачи: синтаксическийанализа Scala файлов и построение UML диаграмм. Генерируют UML диаграммы классов для данных программ. Как уже было описано ранее, язык Scala исполняется на виртуальной машине Java, что означает бинарную совместимость с Java-программами. 20 mixin description parse source into ASTS, perform simple desugaring resolve names, attach symbols to named trees load package objects the meat and potatoes: type the trees translate match expressions add super accessors in traits and nested classes add extension methods for inline classes serialize symbol tables reference/override checking, translate nested objects uncurry, translate function values to anonymous classes replace tail calls by jumps @specialized-driven class and method specialization this refs to outer pointers erase types, add interfaces for traits clean up erased inline classes allocate bitmaps, translate lazy vals into lazified defs move nested functions to top level move field definitions into constructors eliminate inner classes mixin composition Ниже представлен пример извлечения информации о методах класса: List types = cu.types(); for(ABSTRACTTYPEDECLARATION type : types) {if(type.GETNODETYPE() == ASTNODE.TYPE_DECLARATION) {List bodies = type.BODYDECLARATIONS(); for(BODYDECLARATION body : bodies) {if(body.GETNODETYPE() == ASTNODE.METHOD_DECLARATION) {METHODDECLARATION method = (METHODDECLARATION)body; System.out.println("method declaration: "); System.out.println("name: " method.GETNAME().GETFULLYQUALIFIEDNAME());Если элемент содержит значение, то он не может иметь потомков. Аналогично, если элемент содержит дочерние элементы, то он не может иметь значение. Элемент может не иметь ни значения, ни дочерних элементов. Конец элемента (ELEMENT_END), без параметров; вызывается, когда элемент и все его потомки обработаны; Обновленные значения переменных и события buffer=’P’ DOCUMENT_BEGIN diff ELEMENT_START (’PACKAGEDEF’) buffer=’’ buffer=’I’Во второй главе были рассмотрена модель построения модели абстрактного синтаксического дерева по его текстовому представлению, а также приведено описание предлагаемого варианта отображения синтаксических конструкций Scala в языке UML.В качестве первичного обработчика событий используется класс FACADEEVENTHANDLER, который скрывает имеет единую точку вызова для всех типов событий и в дальнейшим делегирует обработку конкретному методу: ...
План
Оглавление
Основные определения, термины и сокращения ............................................................................4 Глава 1. Методы построения UML диаграмм по Scala коду..........................................................9 1.1. Существующие решения.....................................................................................................9 1.2. Методы для синтаксического разбора Scala программ .................................................10 1.3. Методы для построения UML диаграмм.........................................................................14 Выводы по главе...........................................................................................................................16 Глава 2. Анализ языка Scala в контексте UML..............................................................................17 2.1. Алгоритм построения объектной модели для AST........................................................17 2.2. Scala конструкции в терминах UML................................................................................22 Выводы по главе...........................................................................................................................28 Глава 3. Разработка программы......................................................................................................29 3.1. Инструменты разработки..................................................................................................29 3.2. Модуль для построения объектной модели AST ...........................................................29 3.3. Модуль для среды Modelio...............................................................................................33 Выводы по главе...........................................................................................................................38 Глава 4. Пример работы программы..............................................................................................39 Заключение.......................................................................................................................................42 Приложение 1. Техническое задание.............................................................................................46 Приложение 2. Руководство оператора..........................................................................................74 Приложение 3. Программа и методика испытаний ......................................................................94 Приложение 4. Текст программы .................................................................................................126
6
Куликов А.Н. Программа построения диаграмм классов UML по исходному коду программ на языке Scala