A specification language for static analysis of student exercises

In this paper we use formal software engineering techniques to support one of the most difficult steps in software engineering: learning to use a programming language. In order to support numerous exercises of a large number of students some automatic support for checking the solutions and providing hints for the occurrence of erroneous code fragments is highly desirable to help students doing their work. For such support a specification language to describe search patterns for typical solution patterns in student exercises has been created. This language especially supports the structured description of complex search patterns. The specified patterns are transformed into graph rules, which are applied to student solutions in our testing support environment. The approach extends the work we presented in [5]. In addition to the application areas described here the search for a class of structures can be used in other areas like the check for design patterns or looking for code fragments where refactorings can be applied.

[1]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Graph Transformation (Monographs in Theoretical Computer Science. An EATCS Series) , 1992 .

[2]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Graph Transformation , 2006, Monographs in Theoretical Computer Science. An EATCS Series.

[3]  Neil Walkinshaw,et al.  The Java system dependence graph , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[4]  Michael Goedicke,et al.  Automation of Java Code Analysis for Programming Exercises , 2006, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[5]  Jim Welsh,et al.  Towards pattern-based design recovery , 2002, ICSE '02.

[6]  Gabriele Taentzer,et al.  Specifying Coherent Refactoring of Software Artefacts with Distributed Graph Transformation , 2004 .