Model-driven engineering: A survey supported by the unified conceptual model

Alberto Rodrigues da Silva
2015 Computer languages, systems & structures  
Keywords: Model Metamodel Modeling language Software system Model-driven engineering Model-driven approaches a b s t r a c t During the last decade a new trend of approaches has emerged, which considers models not just documentation artefacts, but also central artefacts in the software engineering field, allowing the creation or automatic execution of software systems starting from those models. These proposals have been classified generically as Model-Driven Engineering (MDE) and share common
more » ... oncepts and terms that need to be abstracted, discussed and understood. This paper presents a survey on MDE based on a unified conceptual model that clearly identifies and relates these essential concepts, namely the concepts of system, model, metamodel, modeling language, transformations, software platform, and software product. In addition, this paper discusses the terminologies relating MDE, MDD, MDA and others. This survey is based on earlier work, however, contrary to those, it intends to give a simple, broader and integrated view of the essential concepts and respective terminology commonly involved in the MDE, answering to key questions such as: What is a model? What is the relation between a model and a metamodel? What are the key facets of a modeling language? How can I use models in the context of a software development process? What are the relations between models and source code artefacts and software platforms? and What are the relations between MDE, MDD, MDA and other MD approaches? In the last decades numerous techniques and modeling languages have been proposed to support the design and the development of complex software systems. Many of these languages were defined in the context of methodological approachessuch as structured, object oriented or unified methodologies/processes, fundamentally with the purpose of facilitating and sharing a common and coherent vision of the system under study and, consequently, of easing the communication among stakeholders [8, 84, 85, 34] . However, during this last decade a new trend of approaches has emerged considering models not just as documentation artefacts, but as central artefacts in the software engineering process. In addition to the benefits referred above, it also allowsthrough complex techniques such as meta-modeling, model transformation, code generation or model interpretationthe creation or automatic execution of software systems based on those models. These proposalssuch as MDA [51, 21] , Software Factories [24], or recently DSL Engineering [83]have been classified generically as Model-Driven Engineering (MDE) but also by related names such as model-based engineering (MBE), model-driven development (MDD), model-driven software development (MDSD) [45,3,74,67], or model-based testing (MBT) [80] . Regardless of the adopted term and the particular application, all of them share common concepts and terms that need to be abstracted, discussed and understood. The objective of this paper is to survey and discuss the essential concepts of MDE and, in particular, to propose a unified conceptual model that clearly identifies and relates those concepts, namely the concepts of system, model, metamodel, modeling language, transformation, software platform and software product. For the sake of simplicity and readability this unified conceptual model is described through a coherent set of UML class diagrams complemented by descriptions and discussions in natural language. The proposed conceptual model is based on earlier work, in particular, on work that relates the conceptualization of models and metamodels [64, 20, 19, 37] , modeling languages [46, 66] , and relations between models, transformations, platforms and software products [74] . However, as further discussed in the Related Work section, unlike these former works, this paper intends to give a simple, broad and integrated view of the key concepts and respective terminology commonly involved in the MDE, answering to common questions like: What is a model? What is the relation between a model and a metamodel? What are the key facets of a modeling language? How can I use models in the context of a software development process? What are the relations between models and source code artefacts and software platforms? and What are the relations between MDE, MDD, MDA and other MD approaches? This paper is organized in 7 sections. Section 2 introduces the concepts and definitions of system, model and metamodel that are central in MDE. Section 3 defines the concept of a modeling language with its different facets (i.e., abstract syntax, concrete syntax, semantics and pragmatics) and also asserts that a modeling language provides one or more viewpoints and can be classified according the abstraction and perspective dimensions. Section 4 extends the proposed conceptual model by introducing and relating the concepts of software product, software platform, artefacts and model transformations. Section 5 relates and analyses the terms used around the MD approaches. Section 6 compares and discusses our research with the related work. Finally, Section 7 presents the conclusion and identifies issues for future work. Models and metamodels This section introduces the essential concepts underlying MDE, namely the concepts of system, model, metamodel and their relations.
doi:10.1016/j.cl.2015.06.001 fatcat:bkas5tg4afcmhbfi6d5yt2sjfe