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


ИССЛЕДОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МЕТОДА ОПРЕДЕЛЕНИЯ ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ ДЛЯ ИСХОДНОГО КОДА НА ЯЗЫКЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

Работа №141284

Тип работы

Магистерская диссертация

Предмет

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

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

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


ВВЕДЕНИЕ 3
ГЛАВА 1. ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ 5
1.1 ОПРЕДЕЛЕНИЕ ПАТТЕРНА ПРОЕКТИРОВАНИЯ 5
1.2. МЕТОДЫ ПОИСКА ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ 9
ГЛАВА 2. ЗАДАЧА ПОИСКА ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ... 18
2.1. ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ 18
2.2. МЕТОДЫ И АЛГОРИТМЫ РЕШЕНИЯ 19
ГЛАВА 3. ПРОЕКТИРОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
ПРИЛОЖЕНИЯ 28
3.1. АРХИТЕКТУРА ПРИЛОЖЕНИЯ 28
3.2. ФОРМИРОВАНИЕ НАБОРА ПРОЕКТОВ 30
3.3. ПРОЕКТИРОВАНИЕ ПАРСЕРА 32
3.4. МОДЕЛЬ ДАННЫХ 36
3.5 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ 37
ЗАКЛЮЧЕНИЕ 39
СПИСОК ЛИТЕРАТУРЫ 40
ПРИЛОЖЕНИЕ. КОНСТРУИРОВАНИЕ ДЕРЕВА ВО ВНЕШНЕМ
ПАРСЕРЕ 42

В настоящее время число IT специалистов постоянно возрастает по причине их востребованности. При этом их подготовка отличается из-за наличия значительного количества материалов и курсов для их обучения. Каждый программист пишет свой код по-своему, используя свои подходы, идеи и умения или, наоборот, отражая в коде недостаток квалификации.
Однако, несмотря на все разнообразие программ, сложились часто используемые конструкции кода, шаблоны, идиомы и принципы разработки. Они помогают ускорить командную разработку программного обеспечения (ПО), быстро решать часто возникающие задачи проектирования ПО, возникающие в процессе разработки, а также делать код более читаемым и расширяемым. Кроме «полезных» конструкций также существуют и другие шаблоны, отрицательно влияющие на разработку.
Все подобные конструкции называют паттернами проектирования [1]. Зачастую знание определенных паттернов проектирования считается обязательным для квалифицированного разработчика, ведь их знание и правильное использование позволяет достичь более качественного кода .
Среди паттернов есть те, которые хорошо описаны, как, например, паттерны проектирования по GoF'у [1], а есть те, которые наоборот не имеют конкретного описания, однако используются тоже часто.
Идея данной работы состоит в том, чтобы на основе анализа исходных кодов набора проектов находить часто используемые конструкции кода, которые являются известными или, наоборот, неизвестными паттернами.
Цель работы - разработать программный продукт для выявления паттернов проектирования на основе исходного кода одного или нескольких проектов, написанных на объектно-ориентированных языках
программирования.
Для достижения данной цели были поставлены следующие задачи:
• Изучить существующие методы и подходы для анализа кода на наличие паттернов проектирования.
• Реализовать парсер для извлечения признаков, описывающих паттерны, и для создания структуры данных для их хранения.
• Разработать и реализовать алгоритмы для анализа паттернов.
• Разработать и протестировать программный продукт для анализа кода на паттерны проектирования.

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

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

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


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


1. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. П75 Приемы
объектно-ориентированного проектирования. Паттерны
проектирования. — СПб: Питер, 2001. — 368 с.: ил. (Серия «Библиотека программиста»)
2. Степанчук И. А., Логинов Н. И. ПАТТЕРНЫ
ПРОГРАММИРОВАНИЯ: ИСТОРИЯ ПОЯВЛЕНИЯ,
ОСНОВНАЯ ИДЕЯ, КЛАССИФИКАЦИЯ //INTERNATIONAL INNOVATION RESEARCH: Сборник статей XII Международной научно-практической конференции в 3 частях. Том Часть 1. - 2018. - С. 138-144.
3. Алаа Ш. Методика подготовки и распознавания паттернов программного обеспечения с использованием моделей машинного обучения // Политехнический молодежный журнал / МГТУ им. Н. Э. Баумана, Москва, 2019.
4. Heuzeroth D. [et al.] Automatic design pattern detection // 11th IEEE International Workshop on Program Comprehension, 2003. C. 94-103.
5. Uchiyama S. [et al.] Detecting design patterns in object-oriented program source code by using metrics and machine learning // Journal of Software Engineering and Applications, 2014. C. 983.
6. Oberhauser R. A machine learning approach towards automatic software design pattern recognition across multiple programming languages // ICSEA 2020. C. 37.
7. srcML markup documentation. URL:
https://www.srcml.org/documentation.html (дата обращения:
20.04.2023).
8. Mhawish M. Y., Gupta M. Software metrics and tree-based machine learning algorithms for distinguishing and detecting similar structure design patterns // SN Applied Sciences, 2020. C. 1-10.
9. Nazar N., Aleti A. Feature-based software design pattern detection // arXiv:2012.01708, 2020.
10. Al-Obeidallah M. G., Petridis M., Kapetanakis S. A Structural Rule­Based Approach fpr Design Patterns Recovery // International Conference on Software Engineering Research, Management and Applications. Springer, Cham, 2017. C. 107-124.
11. CLIPS: A Tool for Building Expert Systems, 2016. URL:
http://www.clipsrules.net/.Cited5Jan2017
12. Javaparser: Java 1-15 parser and Abstract Syntax Tree for Java. URL: https: //github.com/j avaparser/j avaparser
13. Ахо, Альфред В., Лам, Моника С., Сети, Рави, Ульман, Джеффри Д. Компиляторы: принципы, технологии и инструментарий, 2-е изд. : пер. с англ -СПб. :Диалектика, 2020 - 1184 с.
14. Макконел С. Совершенный код. Мастер-класс. Пер с англ. - СПб.: БХВ 2022 - 896 с.
15. Фримен Э. [и др.] Паттерны проектирования. СПб.: Питер, 2011...19


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



Подобные работы


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