Project Details
Projekt Print View

Evolute: Evolution of Software Systems with Extensible Languages and DSLs

Subject Area Software Engineering and Programming Languages
Term from 2015 to 2019
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 270449797
 
Software systems continuously change and grow in complexity. Thus, it is little surprise that most development time and money is not spent on the initial design and implementation of new software system but, instead, most effort goes into the maintenance of existing software systems, for example, to repair deficiencies, improve performance, or to realize new features.One way to reduce maintenance costs is to realize software with domain-specific languages. A domain-specific language (DSL) is a programming language specifically designed to support a user's application domain by providing domain concepts as language constructs. Well-known examples of DSLs include state machines for behavioural modelling, XML for data serialization, SQL for database querying, or EBNF for parsing. DSLs enable programmers to easily map domain knowledge into source code and vice versa, which simplifies the creation, comprehension, safety, and maintenance of domain-specific programs.The vast majority of existing software systems are not realized with DSLs. Instead, the long-standing success of C, C++ and Java has led to large procedural and object-oriented systems that do not benefit from the maintenance advantages that DSLs provide. In a previous feasibility study, we were able to demonstrate that extensible programming languages can serve as a basis for integrating DSLs into existing software system. We used our own extensible variant of Java, called SugarJ, to manually refactor parts of the Java Pet Store and a small part of the Eclipse platform to use various DSLs. However, despite the compelling maintenance advantages of DSLs, our experience showed that a manual migration of existing code to DSL code is too tedious, too error-prone, and too labor-intensive to be feasible in practice.In this project, we investigate a new direction for programming-language research, namely to develop concepts and tools that support the semi-automatic integration of DSL technologies into existing software systems whose maintenance is so important. Specifically, given the definition of a DSL and the code base of an existing software system, we develop concepts and tools for (i) automatically identifying potential application locations of the DSL in the code base by analyzing the DSL's definition, (ii) selecting those potential application locations that are expected to be most relevant to a maintainer, (iii) semi-automatically refactoring original code by inferring how to apply the DSL, (iv) an analysis to determine the degree to which the integration of a DSL has been completed, and (v) a large-scale case study that ensures the previous concepts and tools are sufficiently scalable, precise, and automated to be useful in practice. The concepts and tools developed in this project will enable the gradual integration of DSLs into existing code and thus, for the first time, bring the maintenance benefits of DSLs to life in existing large-scale software systems.
DFG Programme Research Grants
International Connection Netherlands
 
 

Additional Information

Textvergrößerung und Kontrastanpassung