Введение 4
1. Постановка задачи 6
2. Обзор 7
2.1 Поиск шаблонов на диаграммах 7
2.1.1 Извлечение всех отношений графа 7
2.1.2 Подход на основе использования метрик 8
2.1.3 Метод сопоставления на основе правил 10
2.3 Обзор существующих решений, поддерживающих сопоставление шаблонов 11
2.3.1 VIATRA 11
2.3.2 АТоМЗ 12
2.3.3 GenGED 12
2.3.4 GROOVE 13
2.3.5 MetaLanguage 14
2.3.6 Eclipse Modeling Framework 14
2.3.7 Generic Modeling Environment 15
3. Подход к решению 16
3.1 Особенности задач 16
3.2 О бщая концепция 16
3.3 База мини-шаблонов 17
3.4 Представление диаграмм 17
4. Алгоритм сопоставления 18
5. Архитектура системы 19
6. Особенности реализации 21
7. Апробация 24
Заключение 27
Список литературы 28
Часто при разработке программного обеспечения требуются значительные усилия на проектирование и анализ предлагаемых решений для создаваемого продукта. После этого выполняется реализация системы, и для этого существует множество различных языков программирования и иных вспомогательных инструментов. Для успешного выполнения работы на стадиях анализа и проектирования в большинстве случаев требуется умение выделять наиболее важную, существенную информацию и не акцентировать внимание на деталях. В связи с этим появляется понятие модели системы, которое означает как раз то, что в модели будет присутствовать самая важная информация о системе без лишних деталей.
Для человеческого восприятия наиболее удобными и наглядными являются визуальные модели, которые, как правило, представляются в виде диаграмм. Такое представление помогает разработчикам понимать и объяснять какие-либо идеи или решения быстрее, чем с использованием менее наглядных представлений. Однако для того, чтобы этот подход был эффективным, нужно, чтобы все разработчики понимали тот язык, с помощью которого изображаются диаграммы, и чтобы он был одинаковым для всех участников в команде. В противном случае, понимание наоборот снизится, и этот подход будет неэффективным и даже вредным.
Поэтому для того, чтобы таких проблем не возникало, был создан унифицированный язык моделирования (UML). На данный момент в нем существует 14 различных видов диаграмм, наиболее популярной из которых является диаграмма классов.
Однако часто овладение навыками визуального моделирования вызывает затруднения. Поэтому обучение визуальному моделированию вызывает интерес у исследователей. В частности, в одной из исследовательских работ в этой области был поставлен эксперимент, в котором участвовало около 150 человек, часть из которых обучали визуальному моделированию. Этот эксперимент показал, что студенты, изучавшие и освоившие визуальное моделирование, справляются с поставленными заданиями успешнее, чем те, кто не изучал или изучал, но не освоил [1].
В СПбГУ на кафедре системного программирования существует научно-исследовательский проект QReal, представляющий собой систему, с помощью которой можно создавать предметно-ориентированные визуальные языки. В в одной из предыдущих работ автора данного текста [2] в системе QReal был поддержан редактор диаграммы классов UML для дальнейшего использования с целью обучения студентов визуальному моделированию.
В рамках данной выпускной квалификационной работы были получены следующие результаты:
• разработан подход, отражающий ключевые особенности предлагаемых для решения задач и основные элементы, на которых строится алгоритм;
• разработана архитектура системы проверки заданий по визуальному моделированию;
• разработан алгоритм сопоставления шаблонов на диаграммах, проверяющий схожесть реального решения с одним из ожидаемых идеальных;
• реализована система проверки заданий в среде QReal (C++/Qt) [20];
• проведена апробация системы проверки заданий на группе студентов.
[1] Lano K., Yassipour-Tehrani S., Alfraihi H. Experiences of Teaching Model-based Development, 2015.
[2] Храмышкина Ю.С., Литвинов Ю.В. Поддержка диаграммы классов языка UML 2.5 в среде QReal // Материалы научно-практической конференции студентов, аспирантов и молодых учёных "Современные технологии в теории и практике программирования". СПб.: Изд-во Политехн. ун-та, 2016. С. 86-87.
[3] Gupta M., Pande A. Design patterns mining using subgraph isomorphism: Relational view //International Journal of Software Engineering and Its Applications (IJSEIA). - 2011. - Т. 270.
[4] Al-Khiaty M. A. R., Ahmed M. UML Class Diagrams: Similarity Aspects and Matching //Lecture Notes on Software Engineering. - 2016. - Т. 4. - №. 1. - С. 41.
[5] Ballis D., Baruzzo A., Comini M. A rule-based method to match Software Patterns against UML Models //Electronic Notes in Theoretical Computer Science. - 2008. - Т. 219. - С. 51-66.
[6] VIATRA. URL: http://www.eclipse.org/viatra/ (дата обращения:
18.05.2017)
[7] Bergmann G. et al. Incremental pattern matching in the viatra model transformation system //Proceedings of the third international workshop on Graph and model transformations. - ACM, 2008. - С. 25-32.
[8] De Lara J., Vangheluwe H. AToM3: A Tool for Multi-formalism and Meta-modelling //International Conference on Fundamental Approaches to Software Engineering. - Springer Berlin Heidelberg, 2002. - С. 174-188.
[9] Bardohl R., Ermel C., Weinhold I. GenGED-a visual definition tool for visual modeling environments //International Workshop on Applications of Graph Transformations with Industrial Relevance. - Springer Berlin Heidelberg, 2003. - С. 413-419.
[10] Ermel C. et al. Animated simulation of integrated UML behavioral models based on graph transformation //Visual Languages and Human-Centric Computing, 2005 IEEE Symposium on. - IEEE, 2005. - С. 125-133.
[11] Ehrig P. N. H., Ermel C., Taentzer G. Simulation and animation of visual models of embedded systems //Embedded Systems-Modeling, Technology, and Applications. - Springer Netherlands, 2006. - С. 11-20.
[12] Rensink A. The GROOVE Simulator: A Tool for State Space Generation // AGTIVE 2003 - Revised Selected and Invited Papers, volume 3062 of Lecture Notes in Computer Science, Berlin, Springer Verlag, 2004, P. 479-485.
[13] GRaphs for Object-Oriented VErification (GROOVE). URL: http://groove.sourceforge.net/groove-index.html (дата обращения: 18.05.2017)
[14] Sukhov A.O., Lyadova L.N. Horizontal Transformations of Visual Models in MetaLanguage System // Proceedings of the 7th Spring/Summer Young Researchers’ Colloquium on Software Engineering. SYRCoSE, 2013. 9 p.
[15] Сорокин А.В., Кознов Д.В., Обзор Eclipse Modeling Project. // Системное программирование. Вып. 5. СПб.: Изд-во СПбГУ. 2010, c. 6-31
[16] Enrico Biermann, Karsten Ehrig, etc., EMF Model Refactoring based on Graph Transformation Concepts. // Electronic Communications of the EASST. Volume 3. 2006, pp. 3-19
[17] Jing Zhang , Yuehua Lin , Jeff Gray, Generic and Domain- Specific Model Refactoring using a Model Transformation Engine. // Volume II of Research and Practice in Software Engineering. 2005, pp. 199-218
[18] QReal Wiki. URL: https:// github. com/qreal/qreal/wiki (дата
обращения: 18.05.2017)
[19] Терехов А.Н., Брыксин Т.А., Литвинов Ю. В., Смирнов К.К., Никандров Г.А., Иванов В.Ю., Такун Е.И. Архитектура среды визуального моделирования QReal. Системное программирование. Т. 4. СПб.: Изд-во СПбГУ. 2000. С. 165-169.
[20] QReal. URL: https://github.com/qreal/qreal/ (дата обращения:
18.05.2017)