The work of this thesis has comprised addressing issues regarding design and development of composite Domain-Specific Languages, evaluation of DSLs with respect to frameworks, and meta modelling using components.
COMPOSITE LANGUAGE DESIGN AND DEVELOPMENTLanguage Driven Development is an increasingly popular approach in software engineering. However, as motivated, there are not many practical solutions of unifying languages and ensuring that best-practices are followed. Moreover, changing and evolving requirements may potentially imply a tedious and inefficient development process since changes can not easily be reflected in languages.
To address these issues, a complete platform for design, development and model execution has been constructed. This platform includes tools, editors and runtime environments that address the shortcomings of traditional Domain-Specific Language use and development. Aspect-oriented weaving has been identified as a mechanism for supporting dynamic language composition.
Specifically, the platform supports:
- Standardised language design and structuring- Unification and reuse of languages based on a common platform and meta model architecture- Aspect-oriented customisation and extension of languages to meet new requirements- Evolving languages by recycling models- Modelling according to aspects / language views- Decentralised development and language integration- Execution of models conforming to composite languages
As we have seen in this thesis, composite language design provides software engineers with an efficient approach in software development. Important key principles are focus on flexibility, integrability and reusability.
Recycling of modelsEvolving languages results in incompatibility issues between models and meta models. Specifically, changed language properties imply new language versions. As a consequence, models of an earlier language version are likely not to conform to the new language version’s meta model. This can be addressed using model transformations where a model conforming to an earlier language version is merged with a set of aspect language models. The result of the transformation process is a model that conforms to the updated language version, and thus, reflects new language properties.
Modelling according to aspects / viewsAspect-oriented weaving is a mechanism of incorporating aspect languages into a primary language. This mechanism also supports modelling according to custom language views. Consequently, software engineers can focus on language segments that reflect concepts and concerns within their area of expertise by creating models according to certain views. Subsequently, these models can be transformed to achieve a composite model conforming to the composite DSL, known as convergence of multiple views.
Decentralised developmentSpecialisation and distribution of knowledge complicate software development. Domain expertise is often possessed by stakeholders that do not necessarily have software development skills. Hence, good communication between domain experts and software developers is crucial. If this communication fails, the result can be poor or, in worst case, useless software. Two aspects of decentralised software development have been addressed in thesis. Firstly, aspect languages can be created in a decentralised manner and woven together to constitute a rich composite language. Secondly, models conforming to each aspect language can be created by different parties and subsequently merged together.
Community-based cooperation is a typical example of decentralised development. This kind of development can be supported by providing a community website with communication tools, including a database for available aspect languages - a remote Language Repository. This way, aspect languages can be downloaded on a need-to-have basis and woven together with a primary language to provide functionality for a given type of concerns.
FRAMEWORKS AND DSLsFrameworks, DSLs and composite DSLs are all highly usable approaches in modelling problem domain concerns. There are scenarios where frameworks are better suited than DSLs, and vice versa. Frameworks provide a high degree of customisation and flexibility, as illustrated with the Ecommerce framework. However, framework instantiation is questionable since this requires manual writing of instantiation code. Conversely, traditional DSLs are static in nature and do not provide mechanisms for customisation. There is, however, no known reason why a DSL should not be created in a manner that supports reuse and composition as illustrated by the work of this thesis.
META MODELLING USING COMPONENTSMechanisms for creation of and modelling with meta components have been elaborated. These mechanisms are based on meta model nesting and a dual interpretation of meta classes. Specifically, a meta class can have two roles: a traditional meta class or a meta component. Meta components can be used to group language features together. For instance, all constructs of a language can be defined by means of inner meta classes of a enclosing meta class. This increases encapsulation and modularisation. Moreover, a component can be designed to address a certain aspect in a similar manner as an aspect language. An important observation is that a component is still a meta class. Hence, components can be used directly as language constructs providing means of hierarchical meta modelling. In other words, languages can be created in two dimensions. The first dimension corresponds to classical flat meta modelling, while the second dimension reflects nesting of meta classes / components. Meta model nesting provides a mechanism for defining super- and subcomponents in the proper contextual setting. That is, within an enclosing class / component.