ABSTRACT
The goal of modular language development is to enable the definition of new languages as assemblies of pre-existing ones. Recent approaches in this area are plentiful but usually suffer from two main problems: either they do not support modular language composition both at the specification and implementation levels, or they require advanced knowledge of specific paradigms which hampers wide adoption in the industry. In this paper, we introduce a non-intrusive approach to modular development of language concerns with well-defined interfaces that can be composed modularly at the specification and implementation levels. We present an implementation of our approach atop the Eclipse Modeling Framework, namely Alex, an object-oriented meta-language for semantics definition and language composition. We evaluate Alex in the development of a new DSL for IoT systems modeling resulting from the composition of three independently defined languages (UML activity diagrams, Lua, and the OMG Interface Description Language). We evaluate the effort required to implement and compose these languages using Alex with regards to similar approaches of the literature.
- Bas Basten, Jeroen van den Bos, Mark Hills, Paul Klint, Arnold Lankamp, Bert Lisser, Atze van der Ploeg, Tijs van der Storm, and Jurgen J. Vinju. 2015. Modular language implementation in Rascal - experience report. Sci. Comput. Program. 114 (2015), 7–19. Google ScholarDigital Library
- Walter Cazzola and Edoardo Vacchi. 2013. Neverlang 2 - Componentised Language Development for the JVM. In Software Composition - 12th International Conference, SC 2013, Budapest, Hungary, June 19, 2013. Proceedings (Lecture Notes in Computer Science), Walter Binder, Eric Bodden, and Welf Löwe (Eds.), Vol. 8088. Springer, 17–32.Google Scholar
- María Victoria Cengarle, Hans Grönniger, and Bernhard Rumpe. 2009. Variability within Modeling Language Definitions. In Model Driven Engineering Languages and Systems, 12th International Conference, MOD-ELS 2009, Denver, CO, USA, October 4-9, 2009. Proceedings (Lecture Notes in Computer Science), Andy Schürr and Bran Selic (Eds.), Vol. 5795. Springer, 670–684. Google ScholarDigital Library
- Martin Churchill, Peter D. Mosses, Neil Sculthorpe, and Paolo Torrini. 2015. Reusable Components of Semantic Specifications. Trans. AspectOriented Software Development 12 (2015), 132–179.Google Scholar
- Tony Clark. 1999. Type Checking UML Static Diagrams. In «UML»’99: The Unified Modeling Language - Beyond the Standard, Second International Conference, Fort Collins, CO, USA, October 28-30, 1999, Proceedings (Lecture Notes in Computer Science), Robert B. France and Bernhard Rumpe (Eds.), Vol. 1723. Springer, 503–517.Google Scholar
- Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd D. Millstein. 2000. MultiJava: modular open classes and symmetric multiple dispatch for Java. In Proceedings of the 2000 ACM SIGPLAN Conference on ObjectOriented Programming Systems, Languages & Applications (OOPSLA 2000), Minneapolis, Minnesota, USA, October 15-19, 2000., Mary Beth Rosson and Doug Lea (Eds.). ACM, 130–145. Google ScholarDigital Library
- Benoit Combemale, Jörg Kienzle, Gunter Mussbacher, Olivier Barais, Erwan Bousse, Walter Cazzola, Philippe Collet, Thomas Degueule, Robert Heinrich, Jean-Marc Jézéquel, Manuel Leduc, Tanja Mayerhofer, Sébastien Mosser, Matthias Schöttle, Misha Strittmatter, and Andreas Wortmann. 2018. Concern-Oriented Language Development (COLD): Fostering Reuse in Language Engineering. Computer Languages, Systems and Structures (2018), 1–26.Google Scholar
- Bruno C. d. S. Oliveira and William R. Cook. 2012. Extensibility for the Masses - Practical Extensibility with Object Algebras. In ECOOP 2012 - Object-Oriented Programming - 26th European Conference, Beijing, China, June 11-16, 2012. Proceedings (Lecture Notes in Computer Science), James Noble (Ed.), Vol. 7313. Springer, 2–27. Google ScholarDigital Library
- Thomas Degueule, Benoît Combemale, Arnaud Blouin, Olivier Barais, and Jean-Marc Jézéquel. 2015. Melange: a meta-language for modular and reusable development of DSLs. In Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language Engineering, SLE 2015, Pittsburgh, PA, USA, October 25-27, 2015, Richard F. Paige, Davide Di Ruscio, and Markus Völter (Eds.). ACM, 25–36. Google ScholarDigital Library
- Thomas Degueule, Benoît Combemale, and Jean-Marc Jézéquel. 2017. On Language Interfaces. In Present and Ulterior Software Engineering., Manuel Mazzara and Bertrand Meyer (Eds.). Springer, 65–75.Google Scholar
- Sven Efftinge, Moritz Eysholdt, Jan Köhnlein, Sebastian Zarnekow, Robert von Massow, Wilhelm Hasselbring, and Michael Hanus. 2012. Xbase: implementing domain-specific languages for Java. In Generative Programming and Component Engineering, GPCE’12, Dresden, Germany, September 26-28, 2012, Klaus Ostermann and Walter Binder (Eds.). ACM, 112–121. Google ScholarDigital Library
- Jean-Marie Favre, Dragan Gasevic, Ralf Lämmel, and Ekaterina Pek. 2010. Empirical Language Analysis in Software Linguistics. In Software Language Engineering - Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers (Lecture Notes in Computer Science), Brian A. Malloy, Steffen Staab, and Mark van den Brand (Eds.), Vol. 6563. Springer, 316–326. Google ScholarDigital Library
- Erich Gamma. 1995. Design patterns: elements of reusable object-oriented software. Pearson Education India. Google ScholarDigital Library
- Pablo Inostroza and Tijs van der Storm. 2017. Modular interpreters with implicit context propagation. Computer Languages, Systems & Structures 48 (2017), 39–67.Google Scholar
- Jean-Marc Jézéquel, Benoît Combemale, Olivier Barais, Martin Monperrus, and François Fouquet. 2015. Mashup of metalanguages and its implementation in the Kermeta language workbench. Software and System Modeling 14, 2 (2015), 905–920. Google ScholarDigital Library
- Lennart C. L. Kats and Eelco Visser. 2010. The spoofax language workbench: rules for declarative specification of languages and IDEs. In Proceedings of the 25th Annual ACM SIGPLAN Conference on ObjectOriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA, William R. Cook, Siobhán Clarke, and Martin C. Rinard (Eds.). ACM, 444–463. Google ScholarDigital Library
- Holger Krahn, Bernhard Rumpe, and Steven Völkel. 2014. MontiCore: Modular Development of Textual Domain Specific Languages. CoRR abs/1409.6633 (2014). arXiv: 1409.6633 http://arxiv.org/abs/1409.6633Google Scholar
- Thomas Kühn, Walter Cazzola, and Diego Mathias Olivares. 2015. Choosy and picky: configuration of language product lines. In Proceedings of the 19th International Conference on Software Product Line, SPLC 2015, Nashville, TN, USA, July 20-24, 2015, Douglas C. Schmidt (Ed.). ACM, 71–80. Google ScholarDigital Library
- Manuel Leduc, Thomas Degueule, Benoît Combemale, Tijs van der Storm, and Olivier Barais. 2017. Revisiting Visitors for Modular Extension of Executable DSMLs. In 20th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, MODELS 2017, Austin, TX, USA, September 17-22, 2017. IEEE Computer Society, 112– 122.Google Scholar
- Jörg Liebig, Rolf Daniel, and Sven Apel. 2013. Feature-oriented language families: a case study. In The Seventh International Workshop on Variability Modelling of Software-intensive Systems, VaMoS ’13, Pisa , Italy, January 23 - 25, 2013, Stefania Gnesi, Philippe Collet, and Klaus Schmid (Eds.). ACM, 11:1–11:8. Google ScholarDigital Library
- David Méndez-Acuña, José A. Galindo, Thomas Degueule, Benoît Combemale, and Benoit Baudry. 2016. Leveraging Software Product Lines Engineering in the development of external DSLs: A systematic literature review. Computer Languages, Systems & Structures 46 (2016), 206–235. Google ScholarDigital Library
- Marjan Mernik. 2013. An object-oriented approach to language compositions for software language engineering. Journal of Systems and Software 86, 9 (2013), 2451–2464. Google ScholarDigital Library
- Pierre-Alain Muller, Franck Fleurey, and Jean-Marc Jézéquel. 2005. Weaving Executability into Object-Oriented Meta-languages. In Model Driven Engineering Languages and Systems, 8th International Conference, MoDELS 2005, Montego Bay, Jamaica, October 2-7, 2005, Proceedings (Lecture Notes in Computer Science), Lionel C. Briand and Clay Williams (Eds.), Vol. 3713. Springer, 264–278. Google ScholarDigital Library
- OMG. 2006. Meta Object Facility (MOF) 2.0 Core Specification. http: //www.omg.org/spec/MOF/2.0/ .Google Scholar
- Ana Pescador, Antonio Garmendia, Esther Guerra, Jesús Sánchez Cuadrado, and Juan de Lara. 2015. Pattern-based development of Domain-Specific Modelling Languages. In 18th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, MoD-ELS 2015, Ottawa, ON, Canada, September 30 - October 2, 2015, Timothy Lethbridge, Jordi Cabot, and Alexander Egyed (Eds.). IEEE Computer Society, 166–175.Google ScholarCross Ref
- Dave Steinberg, Frank Budinsky, Ed Merks, and Marcelo Paternostro. 2008. EMF: Eclipse Modeling Framework. Pearson Education. Google ScholarDigital Library
- Edoardo Vacchi and Walter Cazzola. 2015. Neverlang: A framework for feature-oriented language development. Computer Languages, Systems & Structures 43 (2015), 1–40. Google ScholarDigital Library
- Markus Voelter. 2011. Language and IDE Modularization and Composition with MPS. In Generative and Transformational Techniques in Software Engineering IV, International Summer School, GTTSE 2011, Braga, Portugal, July 3-9, 2011. Revised Papers (Lecture Notes in Computer Science), Ralf Lämmel, João Saraiva, and Joost Visser (Eds.), Vol. 7680. Springer, 383–430.Google Scholar
- Weixin Zhang and Bruno C. d. S. Oliveira. 2017. EVF: An Extensible and Expressive Visitor Framework for Programming Language Reuse. In 31st European Conference on Object-Oriented Programming, ECOOP 2017, June 19-23, 2017, Barcelona, Spain (LIPIcs), Peter Müller (Ed.), Vol. 74. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 29:1– 29:32.Google Scholar
Index Terms
- Modular language composition for the masses
Recommendations
Melange: a meta-language for modular and reusable development of DSLs
SLE 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language EngineeringDomain-Specific Languages (DSLs) are now developed for a wide variety of domains to address specific concerns in the development of complex systems. When engineering new DSLs, it is likely that previous efforts spent on the development of other ...
Language composition untangled
LDTA '12: Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and ApplicationsIn language-oriented programming and modeling, software developers are largely concerned with the definition of domain-specific languages (DSLs) and their composition. While various implementation techniques and frameworks exist for defining DSLs, ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12: Proceedings of the 2012 Haskell SymposiumProgrammers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Comments