Research Papers, conferences and challenges at the forefront of Language Engineering

Attending the Language Workbench Challenge & SLE at SPLASH 2016

I have attended an academic conference for the first time after leaving the Academia. It was also the first time that I paid for myself (or more precisely: my own business paid for me :D) and it was definitely worthy.

During the time at was pursuing my PhD I attended a few conferences but this experience was quite different. I enjoyed it much more than previous times because of the persons I met and the discussions I had. Probably also the decision to not bring a laptop with me helped me to focus more on the event.

I have finally met Danny Van Bruggen, also known as matozoid. He is the mantainer of JavaParser. We exchanged a few ideas, discussed priority and talked about a possible upcoming book on JavaParser (to be written with Nicholas Smith and whoever feel like contributing). It was also nice to meet a few persons using JavaParser.


By the way the work on version 3.0 is proceeding at a good pace and we know what to work on after that: layout preserving transformations. And a better integration with JavaSymbolSolver, of course.

I have met prof. Walter Cazzola. We chatted shortly about a student of him considering to use JavaSymbolSolver for her master thesis.


The Language Workbench Challenge logo

My main reason to be in Amsterdam was attending the Language Workbench Challenge. I coauthored the paper presenting the solutions proposed using Jetbrains MPS. For me it was great to meet for the first time my coauthors: Eugen and Klemens Schindler and Ana Maria Sutii.

They were not the only interesting people at LWC. I have chatted also with Boaz Rosenan, the author of Cedalion. Cedalion is a Language Workbench based on logic programming. It is a quite different beast w.r.t. to the Language Workbenches I am most familiar with and there are some intriguing ideas in it.

the whole platform logo

The whole platform logo

I also managed to meet Enrico Persiani and very briefly Riccardo Solmi. They are the minds and the keyboards behind the Whole Platform. The Whole Platform is a Language Workbench which is so rich and full of features I am very interested into. I hope to have more time to delve into it in the next months and in particular to look into the pattern language. Stay tuned to hear more about it.

I also spotted a couple of very famous people I admire: Terence Parr and Gilad Bracha. Just do not say to Terence that JavaParser is based on JavaCC and not ANTLR.

All in all it was an amazing experience for me. I hope I will stay in touch with several of the persons I met. I should start considering what conference to attend next. Any suggestion?

Polyglot Software Development: my PhD thesis

Yesterday I defended my PhD Thesis, with the title Polyglot Software Development.

If you want to take a look you can download it here: thesis



The languages we choose to design solutions influence the way we think about the problem, the words we use in discussing it with colleagues, the processes we adopt in developing the software which should solve that problem. Therefore we should strive to use the best language possible for depicting each facet of the system. To do that we have to solve two challenges: i) first of all to understand merits and issues brought by the languages we could adopt and their long reaching effects on the organizations, ii) combine them wisely, trying to reduce the overhead due to their assembling.

In the first part of this dissertation we study the adoption of modeling and domain specific languages. On the basis of an industrial survey we individuate a list of benefits attainable through these languages, how frequently they can be reached and which techniques permit to improve the chances to obtain a particular benefit. In the same way we study also the common problems which either prevent or hinder the adoption of these languages. We then analyze the processes through which these languages are employed, studying the relative frequency of the usage of the different techniques and the factors influencing it. Finally we present two case-studies performed in a small and in a very large company, with the intent of presenting the peculiarities of the adoption in different contexts.

As consequence of adopting specialized languages, many of them have to be employed to represent the complete solution. Therefore in the second part of the thesis we focus on the integration of these languages. Being this topic really new we performed preliminary studies to first understand the phenomenon, studying the different ways through which languages interact and their effects on defectivity. Later we present some prototypal solutions for i) the automatic spotting of cross-language relations, ii) the design of language integration tool support in language workbenches through the exploitation of common meta-metamodeling.

This thesis wants to offer a contribution towards the productive adoption of multiple, specific languages in the same software development project, hence polyglot software development. From this approach we should be able to reduce the complexity due to misrepresentation of solutions, offer a better facilities to think about problems and, finally to be able to solve more difficult problems with our limited brain resources.

Our results consists in a better understanding of MDD and DSLs adoption in companies. From that we can derive guidelines for practitioners, lesson learned for deploying in companies, depending on the size of the company, and implications for other actors involved in the process: company management and universities.

Regarding cross-language relations our contribution is an initial definition of the problem, supported by some empirical evidence to sustain its importance. The solutions we propose are not yet mature but we believe that from them future work can stem.

Paper accepted at MiSE@ICSE 2013: A model-based approach to language integration

We got recently a paper accepted at the workshop on modeling in software engineering. The paper was written with Antonio Vetrò, Marco Torchiano, Markus Völter and Bernd Kolb.

Applications nowadays are written using more than one language: typically some sort of general purpose language and a constellation of complementary languages (SQL, HTML, XML, Scripting languages, DSLs).

Between artefacts written in different languages there are relations of various kinds, at least references (for example some ID have to be the same in a Java file and in an XML file). The problem is that we miss a general approach to check those relations and ensure global consistency.

In our paper we discuss the problem and present a simple, preliminary approach to solve it inside language workbench. Finally we discuss a research agenda for language integration.

If you want to read the paper, the pdf is available here.

Using a language workbench for language integration

Nowadays each project is realised using a plethora of languages. Think about some classical scenarios:

  • A web application: Css, Javascript, Html and a general purpose language for server side elaborations (for example Java)
  • A Java framework using XML for configuration
  • SQL snippets embedded in a general purpose language

In this scenarios different languages have to interact. The problem is that normally development tools are able to verify just intra-language consistency: it means that an IDE is able to understand if in your java code you are referring to a Java class that does not exist (maybe because you misspelled the name). IDEs are not able to verify inter-language consistency, so for example it does not know if the XML configuration file contains the name of an existing Java class or not. This is a problem of language integration.

I think language workbenches permit to improve a lot language integration, with a limited effort.

Still there is a lot to be done.

Me, Antonio Vetrò, Marco Torchiano, Markus Völter and Bernd Kolb got a paper accepted at MiSE@ICSE’13 about this topic. In the paper we:

  • discuss about the problem of language integration in different scenarios,
  • refer to some previous work (from me, Vetrò and Torchiano) which starts an empirical evaluation of  the issue,
  • present a prototypal micro-implementation of a solution using Jetbrains MPS,
  • present a research agenda for language integration.

Screenshots and more details are on the paper (available as PDF).