Proposta de dissertação do MEI
Título: Software Language Engineering: Evaluating the Quality of the Design of a Software Language - Design Patterns and Metrics
Proponente(s): Vasco Amaral
Miguel Goulão
Créditos: 42 ECTS
Área científica: Software Engineering
Início preferencial: Qualquer semestre
URL:
Já estão em curso trabalhos preliminares executados pelo alunos:
Breve descrição: The concept of Domains Specific Languages development with the support of the language workbenches allowed that Software Engineers are able nowadays to rapidly prototype and implement very easily either visual or textual language editors. This technology, mostly based in Model-Driven Techniques empowered the Software Engineers with the ability to implement languages in any domain requiring little knowledge and practice about compiler techniques. The wide adoption of those techniques and tools are being hampered by the still unstable nature of the implemented technologies and the lack of quality metrics and best patterns during the language design phase (that is mostly iterative) and its evaluation after being tested.

One of the key aspects besides its usability when evaluating the quality of design of a certain DSL is determining improvements for the language from its current state, identifying good and bad patterns, proposing improvements etc.

“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” – (Alexander et al., 1977)

This thesis will focus on providing a taxonomy of analysis techniques (existing and new proposed ones) and a catalog of good patterns that can be utilized by the language engineer to determine the quality of his or her DSL and furthermore assist in suggesting improvement directions for the language or even to compare a language with other similar purpose ones. It will be necessary to build the conceptual framework and tooling (for instance automatic analyzers of of design differences, design optimizers, complexity metric analyzers, etc) to support the language design phase.
Observações: The work will be done either in Portuguese or in English.