Fundamentals of Metamodeling and DSLs
From AtlanMod
Contents |
Summary
This module will introduce the fundamentals aspects of metamodeling and DSLs.
Main Topics
The main subject covered here is MDE (Model Driven Engineering). The module will cover the following aspects:
- Introduction to MDE and and historical perspectives
- Model-driven engineering (MDE) is a software development methodology which focuses on creating models, or abstractions, more close to some particular domain concepts rather than computing (or algorithmic) concepts. It is meant to increase productivity by maximizing compatibility between systems, simplifying the process of design, and promoting communication between individuals and teams working on the system.
- A modeling paradigm for MDE is considered effective if its models make sense from the point of view of the user and can serve as a basis for implementing systems. The models are developed through extensive communication among product managers, designers, and members of the development team. As the models approach completion, they enable the development of software and systems.
- The best known MDE initiative is the Object Management Group (OMG) initiative Model Driven Architecture (MDA), which is a registered trademark of OMG.
- Metamodeling
- Metamodeling, (sometimes spelled meta-modeling) in software engineering and systems engineering among other disciplines, is the analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems. As its name implies, this concept applies the notions of meta- and modeling.
- "Metamodeling" is the construction of a collection of "concepts" (things, terms, etc.) within a certain domain. A model is an abstraction of phenomena in the real world; a metamodel is yet another abstraction, highlighting properties of the model itself. A model conforms to its metamodel in the way that a computer program conforms to the grammar of the programming language in which it is written.
- DSLs
- In software development, a domain-specific language (DSL) is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. The concept isn't new—special-purpose programming languages and all kinds of modeling/specification languages have always existed, but the term has become more popular due to the rise of domain-specific modeling.
- The opposite is:
- a general-purpose programming language, such as C or Java,
- or a general-purpose modeling language such as the UML.
- Thus, "general" in this sense means "non-specific" rather than "universal".
Examples of domain-specific languages include spreadsheet formulas and macros, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound, a language used to create audio files, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.

