DIGITAL LIBRARY
TEACHING LANGUAGE-DRIVEN SOFTWARE ENGINEERING
1 Northumbria University (UNITED KINGDOM)
2 Heilbronn University (GERMANY)
About this paper:
Appears in: ICERI2009 Proceedings
Publication year: 2009
Pages: 5196-5206
ISBN: 978-84-613-2953-3
ISSN: 2340-1095
Conference name: 2nd International Conference of Education, Research and Innovation
Dates: 16-18 November, 2009
Location: Madrid, Spain
Abstract:
How difficult it is to program a computer depends to a large degree on the use of the right programming language. It is thus no wonder that the biggest leap in programmer productivity was achieved with the introduction of “high level” programming languages. These languages abstract from the details of a particular machine and focus on the needs of the programmer. Raising the level of abstraction even further to solve today’s increasingly more complex programming problems demands a similar leap from languages that offer general solutions to highly problem-specific languages.
Modern approaches in software engineering, e.g. Model Driven Development (MDD), Domain Specific Languages (DSLs) and Generative Software Development (GSD), represent this important trend in research and practice. The design, implementation and use of specialized languages have become a fundamental part of the software development process. The software developer is no longer a language user only, but also a creator of languages.
For educators the challenge is how to teach this new understanding to software engineering students as it is based on a breadth of knowledge usually taught in a number of different courses. As part of the government-sponsored ”Novel Teaching Approaches” program we took up that challenge and designed a novel course that aims to teach language-driven software engineering to undergraduate students in a unified, accessible and up to date manner. The course we designed over the last two years combines concepts that are traditionally taught as part of formal language theory, compiler construction, modeling, programming and software engineering.
At the center of our course is an interactive teaching tool that we created specifically to satisfy the needs of our students. The tool, XMF (XML Modeling Framework), aims to make modeling (using languages) interactive and meta-modeling (creating languages) comprehensible. XMF is easily accessible for students as it is based on familiar web technology. All editing of models and meta-models is done in a web browser, either in XML or through specific HTML views. Model validation through inner- and inter-model constraints leads to a modeling process that is controllable by teachers and highly interactive for students – with immediate feedback from the system in case of errors or design flaws. New languages can be designed with a built-in pattern language. A query interface allows students to ask XMF questions about models and thereby verify whether their design intentions are captured by their creations.
Aside from using XMF to create, relate and use various languages, an important part of our course is to look at “the big picture” of language-driven software development by relating XMF to other technologies. We express the meta-model of XMF in terms of the four level architecture of UML (Unified Modeling Language), show the relationship between our pattern language and grammar formalisms such as EBNF (Extended Backus Naur Form) and compare XMF’s transformational approach to macro mechanisms found in languages of the Lisp family.
Our experience so far is that the highly interactive nature of our tool combined with the fact that it is based on familiar web technology significantly lowers the time it takes for students to successfully design, implement and use their own languages. Once students have reached this level, XMF becomes a valuable reference point for explaining language-driven principles as a whole.
Keywords:
teaching, software engineering, programming languages, modeling, tools.