title: Assessment of Informal Software Designs
keywords: programming education, software design, graph theory
topics: Algorithms and Data Structures , Case studies and Applications , Logics and semantics , Software Technology
committee: Ansgar Fehnker


A course that includes Software Design usually covers the use of using Software Engineering models, such as class diagrams, activity diagrams and state machines, and the tools that are available for producing correct models with well-defined semantics, that could for example be used for code-generation or verification. However in introductory courses the use of such tools, and the rigour they require is sometimes viewed as a hindrance that distracts from teaching the important core concepts. Some introductory courses instead ask students produce semi-formal design that resemble well known types of models, but without the rigour of classical model-based tools.

The challenge then comes how to assess these model, for example in class rooms with hundreds of students, or in an online setting where students work in their own time on exercises. There is a need for supporting the teaching team reviewing the design. The aim of this project is to develop a tool that can identify potential problems or mismatches with an example solution. The project would build on existing graph transformation or equivalences checkers for formal models, but then for artefacts without well-defined semantics.