The learning of software design is known to be a difficult and challenging task for students. This dissertation studies different didactic approaches for learning software design to improve the way... Show moreThe learning of software design is known to be a difficult and challenging task for students. This dissertation studies different didactic approaches for learning software design to improve the way we teach students software design. The research in the dissertation questions whether we can assess software design skills, what guidance is needed for the improvement of students’ understanding of software design and how to motivate and engage students for learning software design. The research explores the following: an instrument for measuring software design skills based on design principles, the gamification of learning software design, revealing students’ software design strategies, the use of peer-reflection for uncovering the difficulties students have during software design tasks, the use of teaching assistants as bridge between the lecturer and the students, the automation of grading software designs with machine learning, guiding feedback by a pedagogical agent and a workshop for engaging students into the process of software development. The research contributes to the future education of software design. Show less
We address two problems in Software Engineering. The first problem is how to assess the severity of software defects? The second problem we address is that of studying software designs. Automated... Show moreWe address two problems in Software Engineering. The first problem is how to assess the severity of software defects? The second problem we address is that of studying software designs. Automated support for assessing the severity of software defects helps human developers to perform this task more efficiently and more accurately. We present (MAPDESO) for assessing the severity of software defects based on IEEE Standard Classification for Software Anomalies. The novelty of the approach lies in its use of uses ontologies and ontology-based reasoning which links defects to system level quality properties. One of the main reasons that makes studying of software designs challenging is the lack of their availability. We decided to collect software designs represented by UML models stored in image formats and use image processing techniques to convert them to models. We present the 'UML Repository' which contains UML diagrams (in image and XMI format) and design metrics. We conducted a series of empirical studies using the UML Repository. These empirical studies are a drop in the ocean empirical studies that can be conducted using the repository. Yet these studies show the versatility of useful studies that can be based on this novel repository of UML designs. Show less
As the de facto industry standard for software modeling, the Unified Modeling Language (UML) is used widely across various IT domains. UML__s wide acceptance is partly because the language offers... Show moreAs the de facto industry standard for software modeling, the Unified Modeling Language (UML) is used widely across various IT domains. UML__s wide acceptance is partly because the language offers flexibility and freedom in modeling software systems: 1) UML provides an extensive set of modeling notations that can be used to model various concepts; 2) UML can be used both in a casual and formal manners. In the context of model-driven software development, the degree of freedom in which UML is used raises an important issue related to model quality. Different styles and rigors in using UML affect the quality of the resulting models. It is then logical to think that the level of quality of the UML model may affect the quality of the resulting software. This thesis reports on a series of empirical studies performed to address a pivotal question concerning the benefits of UML modeling in software development, particularly from a quality perspective. The results of these empirical studies show that the use of UML provides benefits in terms of increased quality and productivity in software development. The availability of UML models also allows early prediction of defects in software systems. Such prediction is potentially useful for identifying and fixing defects early during software development, and for prioritizing testing. Show less