Change-Based Support for Software Evolution
Total Page:16
File Type:pdf, Size:1020Kb
Cover illustration © Mathias Beke, 2015 Acknowledgments Bart Meyers Antwerpen, February 2016 I would like to thank Hans for introducing me to modelling and its community. Hans, you have taught me so many things, both on topic and off topic. I cannot imagine a better advisor. I am looking forward to continue working together. Thanks to the members of the jury of this thesis for their remarks and insights. Antonio, Dirk, Juan, Serge and Tom, thank you for your time – I enjoyed our discussions. I would like to thank all members of our research group, past and present, for all (long distance) discussions. Ahmed, Alessandro, Ali, Anna, Anne, Bart, Bentley, Bruno, Cláudio, Diana, Dirk, Eugene, Frederik, Hans, István, Jan, Javier, Ken, Levi, Margarete, Maris, Naomi, Olaf, Peter, Pieter, Quinten, Raphael, Sadaf, Serge, Simon, Tim, Xiaobo and Yentl, thank you for your input, discussions, good times, and (extended) lunches. I was fortunate to collaborate regularly with some of the brightest minds on this planet during research stays and workshops. Juan, thank you for inviting me to Madrid and introducing me to metaDepth. Manuel, and Gerti, thank you for inviting me to Vienna. It was a pleasure to work with you. Frédéric, Cécile and Christophe, thank you to invite us to Paris, and showing me around in the research area of simulation. Thank you, Antonio, Eugene, Jonathan, Levi, Manuel, Pieter and Romuald, for the fruitful discussions near the beach. Hans and Pieter, thank you for organising these CaMPAM workshops. You are all more than welcome in Antwerp! Thank you to my family and friends, who took my mind off things when I needed it. Last but not least, thank you, Sofie, for all your love and support, especially in the last few weeks of writing my thesis. I can’t wait to go on holiday with you. Abstract A recent approach to tackle the ever increasing complexity of software intensive systems is Model- Driven Engineering (MDE) [182]. Development of such complex systems spans a plethora of different activities, including requirements modelling, analysis, design, testing, etc. for often very diverse system components and views. This inherent heterogeneity is tackled in Multi-Paradigm Modelling (MPM) by explicitly modelling all aspects of the system under study at the most appropriate level(s) of abstraction using the most appropriate modelling language(s) [146, 45]. This includes the explicit modelling of the development processes. In Domain-Specific Modelling (DSM) [74] the general goal is to provide means for domain users to model systems using concepts and notations they are familiar with, in their problem domain. Techniques such as metamodelling and model transformation enable modelling language engineers and domain experts to create Domain-Specific Modelling Languages (DSMLs) for the domain users. Because syntax and semantics of DSMLs are precisely defined by means of metamodelling and model transformation, models can be used for analysis, simulation, optimisation, documentation and even full code synthesis. According to MPM principles, multiple aspects/views as well as sub-systems are modelled using distinct, most appropriate DSMLs. This means that not only system modelling, but also modelling language engineering, becomes part of the development process. Language engineering is thus a vital part of DSM. This thesis presents contributions in three research areas of language engineering: verification support for DSMLs, evolution of DSMLs and composition of DSMLs. An elevator control system is used as a running example throughout the thesis. Verification support for DSMLs. Verifying whether a model satisfies a set of requirements is considered to be an important challenge in DSM [65]. It is nevertheless mostly neglected by current DSM approaches. We present a solution in the form of ProMoBox, a framework that integrates the definition and verification of temporal properties in discrete-time behavioural DSMLs, whose semantics can be described as a schedule of graph rewrite rules. Thanks to the expressiveness of graph rewriting, this covers a very large class of problems. With ProMoBox, the domain user models not only the system with a DSML, but also its properties, input model, run-time state and output trace. A DSML is thus comprised of five sublanguages, which share domain-specific syntax. The sublanguages are generated from a single metamodel, that is annotated to denote the role of each language concept. The operational semantics of the DSML is modelled as a transformation and is annotated with information about input and output. The modelled system and its properties are translated to Promela, and properties are verified with Spin, a tool for explicit state model checking [89]. In case a counterexample is found, its execution trace is transformed to the domain- specific level as a trace model, which can be played out. Thus, whilst modelling and verifying properties, the domain user is shielded from underlying notations and techniques. Following MPM principles, we explicitly model the ProMoBox framework’s process in a Formalism Transformation Graph and Process Model [125]. Furthermore, we evaluate ProMoBox to assert that it supports the specification and verification of properties in a highly flexible and automated way, according to MPM principles. Evolution of DSMLs. In software engineering, the evolution of software artifacts is ubiquitous [131]. In DSM, where modelling languages play a central role, evolution occurs not only at the level of models, but also at the level of modelling languages [180]. Consequently, support for (semi-)automated co-evolution of instance models or transformation models is needed. We present a framework that deals with all possible consequences of language evolution in a DSML relational ecosystem. We identify consistency and continuity as a goal, meaning that the evolution must be syntactically correct (i.e., the conformance relation is preserved throughout the system) and semantically correct (i.e., the system has evolved according to the intended changes). Contrary to related approaches at the time of this work, we focus on the neglected problem of transformation co-evolution. We de-construct all possible consequences of evolution in the context of a DSML relational ecosystem and identify four basic evolution scenarios: model evolution, image evolution, domain evolution and transformation evolution, which can each be handled (semi-)automatically. Based on this we define and implement an approach for instance co-evolution and transformation co-evolution that uses a flexible and modular migration pipeline. Furthermore, we present a feature diagram of all evolution consequences and an algorithm that forms the backbone of our framework, describing all possible co-evolution scenarios in detail. Composition of DSMLs. Current methods for the development of DSMLs require the lan- guage engineer to develop DSMLs from scratch. Nevertheless, there is a clear need for reuse of existing languages, or language modules [159]. We use three composition mechanisms from the metaDepth tool, namely, extension, concepts and templates and investigate whether they are sufficient to allow composition of modelling languages in a structured way. All three concepts, abstract syntax, (textual) concrete syntax and (operational) semantics, of a modelling language are combined using these mechanisms. By using these mechanisms, we aim for general applicability of our approach, provided that these composition mechanisms are supported. We conclude however, that only simple composition of semantics can be modelled in a structured way. However, the combination of the operational semantics of languages can be very complex, but necessary in Multi-Paradigm Modelling. Hence, heterogeneous systems must be executed correctly, while still maintaining modularity of languages, to enable reuse, and to allow the combination of languages as black boxes. A solution is to define semantic adaptation [23] of heterogeneous parts of a model, which has to be explicitly described. Boulanger et al. developed ModHel’X, a tool for heterogeneous modelling and semantic adaptation. In ModHel’X, complex semantic adaptations have to be coded however, which is tedious and error prone. We introduce a DSML with a visual concrete syntax for modelling such heterogeneous systems. Subsequently, we define a second DSML with textual syntax to model semantic adaptation. This DSML allows users to specify the adaptation of data, control and time using a set of rules. Both DSMLs are translated to the ModHel’X framework. All solutions presented in this thesis adhere to MPM principles: everything is modelled explicitly, at the most appropriate level(s) of abstraction, using the most appropriate formalism(s). As users are exposed to such formalisms, they are shielded from “accidental” complexity by using generative techniques and automation. The solutions in this thesis illustrate the tool builder’s approach, as contributions in these thesis are supported by prototype implementations. Nederlandstalige Samenvatting Een recente aanpak voor de voortdurende toeneming aan complexiteit in software-intensieve systemen is modelgedreven ontwikkeling (MDE) [182]. De ontwikkeling van zulke complexe systemen houdt een groot aantal verschillende activiteiten in, waaronder het modelleren van vereis- ten, analyse, ontwerp, testen, enz. voor vaak erg verschillende componenten en facetten van een systeem. Multi-Paradigmatisch Modelleren (MPM) probeert een oplossing te bieden voor deze inherente heterogeniteit