MontiCore: agile Entwicklung von domänenspezifischen Sprachen im Software-Engineering

Domain specific languages (DSLs) are languages in computer science which permit specifying compact solutions in clear-cut functional or technical application areas. Using a domain specific notation simplifies the integration of experts in comparison to conventional software development because the models are easier understood by them. The automatic creation of production code from domain specific models is an effective form of model-driven development. An agile and efficient development process is hard to establish using existing DSL development methods because of the missing central language reference which includes abstract and concrete syntax and inadequate modularization techniques. Methods and reference architectures are lacking for designing and using complex and model-based tools in structured way for software development. Thus, in this thesis the modular development of textual DSLs and tools with the MontiCore-framework is described. The most important contributions to research can be summarized as follows: • Textual domain specific languages can be defined by a compact grammar-based format that defines abstract syntax as well as concrete syntax of a language and can therefore be used as a central documentation for developers and users of a DSL. The emerging abstract syntax is equivalent to well-established metamodeling-techniques and extends common grammar-based approaches. • The reuse of language fragments within model-driven development is supported by two modularity mechanisms that combine existing artifacts in a structured way to form new languages: Grammar inheritance supports the specialization and extension of languages. Embedding permits the flexible combination of multiple languages, which can also differ fundamentally in their lexical structure. • The used grammar format is extensible in a modular way such that additional information can be specified as so-called concepts. Based on them, further infrastructure can be generated from the language definition. The extensibility by concepts is demonstrated by a declarative way to specify links in the abstract syntax and by an attribute grammar system. • The development of code generators and tools for the analysis of DSLs is simplified considerably by making a reference architecture available. Approved solutions can be used without further development effort. Thus, the quality of the emerging tools is increased in comparison to existing approaches. • It is demonstrated how compilable templates can be used for an integrated refactoring of templates and a runtime environment. Based on that, a method is defined to develop a generator in a stepwise manner from existing source code. The data model of the generator can be derived automatically. The abovementioned languages and methods are developed within the framework MontiCore. Their applicability is demonstrated by the development of the framework itself in a bootstrapping-process and by two further case studies.