一句话:本文构建 UML 图错误目录,并据此分析软件工程课程中 123 名学生的 2700 余个图,揭示常见错误与演化规律。
UML 作为软件系统建模与可视化记法被广泛采用,但学生在学习其复杂性时常遇到困难并重复犯错,影响教学与建模质量。本文首先提出包含八类图中 146 种错误类型的错误目录,并以此为主要工具,对一门软件工程课程中 123 名学生在 12 周内提交的 2700 多个 UML 图进行分析。分析内容包括各类错误出现频率、不同图类型间错误的相关性、学生项目质量与考试成绩的相关性,以及学生随时间引入和修复错误的行为,并给出其他观察。研究同时公开数据集和详细目录指南,为 UML 教学、学习与后续错误模式研究提供基础。
The Unified Modelling Language (UML) is being widely accepted as a modelling notation for visualizing software systems during design and development. UML has thus become part of many software engineering course curricula at universities worldwide, providing a recognized tool for practical training of students in understanding and visualizing software design. It is however common that students have difficulties in absorbing UML in its complexity, and often repeat the same mistakes that have been observed by course tutors in previous years. Having a catalogue of such mistakes could hence increase the effectiveness of both teaching and learning of UML diagrams. In this paper, we introduce such a catalogue, consisting of 146 types of mistakes in eight types of diagrams. As the main contribution of this study, we use this catalogue to guide the analysis of student projects within a software engineering course. In total, over 2,700 diagrams submitted over 12 weeks of a semester by 123 students were analysed to identify the frequency of mistakes (from the catalogue), correlations of the mistakes between different diagram types, correlation of the quality of student projects to exam results, student behaviour in terms of introducing and fixing the mistakes over time, and other interesting insights. The analysis is described together with its setup and execution, and all datasets and detailed guidebook to the catalogue of all mistakes is made available for download.
@inproceedings{ChrenBMD019,
title = {Mistakes in UML Diagrams: Analysis of Student Projects in a Software Engineering Course},
author = {Stanislav Chren and Barbora Buhnova and Martin Macak and Lukas Daubner and Bruno Rossi},
booktitle = {ICSE},
year = {2019},
doi = {10.1109/icse-seet.2019.00019}
}