|

Методика подготовки и распознавания паттернов программного обеспечения с использованием моделей машинного обучения

Авторы: Шакер Алаа
Опубликовано в выпуске: #2(31)/2019
DOI: 10.18698/2541-8009-2019-2-442


Раздел: Информатика, вычислительная техника и управление | Рубрика: Системный анализ, управление и обработка информации, статистика

Ключевые слова: проектирование, микроструктура, паттерн, распознавание паттернов проектирования, машинное обучение, программное обеспечение, реверс-инжиниринг, разработка программного обеспечения

Опубликовано: 15.02.2019

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


Литература

[1] Fowler M. Refactoring: improving the design of existing code. Addison-Wesley Professional, 2018.

[2] Morozov A.A., Polupanov A.F., Antciperov V.E., et al. Development of concurrent object-oriented logic programming system to intelligent monitoring of anomalous human activities. Proc. 7th BIOSTEC, 2014. Angers, France, pp. 53–62.

[3] Mall R. Fundamentals of software engineering. PHI Learning Pvt. Ltd., 2018.

[4] Fontana F.A., Caracciolo A., Zanoni M. DPB: a benchmark for design pattern detection tools. Proc. 6th Europ. Conf. Software Maintenance and Reengineering, 2012, pp. 235–244. DOI: 10.1109/CSMR.2012.32 URL: https://ieeexplore.ieee.org/document/6178890

[5] Dwivedi A.K., Rath S.K., Satapathy S.M., et al. Applying reverse engineering techniques to analyze design patterns in source code. Proc. ICACCI, 2018, pp. 1398–1404. DOI: 10.1109/ICACCI.2018.8554519 URL: https://ieeexplore.ieee.org/document/8554519

[6] Девятков В.В., Алфимцев А.Н. Нечеткая конечно-автоматная модель интеллектуального мультимодального интерфейса. Проблемы управления, 2011, № 2, c. 69–77.

[7] Mo R., Cai Ya., Kazman R., et al. Hotspot patterns: the formal definition and automatic detection of architecture smells. 12th Working IEEE/IFIP Conf. Software Architecture, 2015, pp. 51–60. DOI: 10.1109/WICSA.2015.12 URL: https://ieeexplore.ieee.org/document/7158503

[8] Сакулин С.А., Алфимцев А.Н. К вопросу о практическом применении нечетких мер и интеграла Шоке. Инженерный журнал: наука и инновации, 2012, № 1. DOI: 10.18698/2308-6033-2012-1-71 URL: http://engjournal.ru/catalog/it/hidden/71.html

[9] Шалев-Шварц Ш., Бен-Давид Ш. Идеи машинного обучения: от теории к алгоритмам. М., ДМК Пресс, 2019.

[10] Alhusain S., Coupland S., John R., et al. Towards machine learning based design pattern recognition. UKCI, 2013, pp. 244–251. DOI: 10.1109/UKCI.2013.6651312 URL: https://ieeexplore.ieee.org/document/6651312

[11] Фримен Э., Сьерра К., Бейтс Б. Паттерны проектирования. СПб., Питер, 2011.

[12] Smith J.M.C., Stotts D. Elemental design patterns: a formal semantics for composition of OO software architecture. Proc. 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002, pp. 183–190. DOI: 10.1109/SEW.2002.1199472 URL: https://ieeexplore.ieee.org/document/1199472