Reverse-Engineering Reusable Language Modules from Legacy Domain-Specific Languages

  • David Méndez-AcuñaEmail author
  • José A. Galindo
  • Benoit Combemale
  • Arnaud Blouin
  • Benoit Baudry
  • Gurvan Le Guernic
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9679)


The use of domain-specific languages (DSLs) has become a successful technique in the development of complex systems. Nevertheless, the construction of this type of languages is time-consuming and requires highly-specialized knowledge and skills. An emerging practice to facilitate this task is to enable reuse through the definition of language modules which can be later put together to build up new DSLs. Still, the identification and definition of language modules are complex and error-prone activities, thus hindering the reuse exploitation when developing DSLs. In this paper, we propose a computer-aided approach to (i) identify potential reuse in a set of legacy DSLs; and (ii) capitalize such potential reuse by extracting a set of reusable language modules with well defined interfaces that facilitate their assembly. We validate our approach by using realistic DSLs coming out from industrial case studies and obtained from public GitHub repositories.



This work is supported by the ANR INS Project GEMOC (ANR-12-INSE-0011), the bilateral collaboration VaryMDE between Inria and Thales, and the bilateral collaboration FPML between Inria and DGA.


  1. 1.
    Bettini, L., Stoll, D., Völter, M., Colameo, S.: Approaches and tools for implementing type systems in xtext. In: Czarnecki, K., Hedin, G. (eds.) SLE 2012. LNCS, vol. 7745, pp. 392–412. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  2. 2.
    Biegel, B., Diehl, S.: Jccd: a flexible and extensible api for implementing custom code clone detectors. In: Proceedings of the International Conference on Automated Software Engineering, ASE 2010, pp. 167–168, Antwerp, Belgium. ACM (2010)Google Scholar
  3. 3.
    Clark, T., Barn, B.S.: Domain engineering for software tools. In: Reinhartz-Berger, I., Sturm, A., Clark, T., Cohen, S., Bettin, J. (eds.) Domain Engineering: Product Lines, Languages, and Conceptual Models, pp. 187–209. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  4. 4.
    Cleenewerck, T.: Component-based DSL development. In: Pfenning, F., Macko, M. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 245–264. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  5. 5.
    Combemale, B., Hardebolle, C., Jacquet, C., Boulanger, F., Baudry, B.: Bridging the chasm between executable metamodeling and models of computation. In: Czarnecki, K., Hedin, G. (eds.) SLE 2012. LNCS, vol. 7745, pp. 184–203. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  6. 6.
    Constantinou, E., Naskos, A., Kakarontzas, G., Stamelos, I.: Extracting reusable components: a semi-automated approach for complex structures. Inf. Process. Lett. 115(3), 414–417 (2015)CrossRefGoogle Scholar
  7. 7.
    Cook, S.: Separating concerns with domain specific languages. In: Lightfoot, D.E., Ren, X.-M. (eds.) JMLC 2006. LNCS, vol. 4228, pp. 1–3. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  8. 8.
    Crane, M., Dingel, J.: Uml vs. classical vs. rhapsody statecharts: not all models are created equal. Softw. Syst. Mod. 6(4), 415–435 (2007)CrossRefGoogle Scholar
  9. 9.
    Degueule, T., Combemale, B., Blouin, A., Barais, O., Jézéquel, J.-M.: Melange: a meta-language for modular and reusable development of dsls. In: Proceedings of the International Conference on Software Language Engineering, SLE 2015, pp. 25–36, Pittsburgh, PA, USA. ACM (2015)Google Scholar
  10. 10.
    Erdweg, S., Rieger, F.: A framework for extensible languages. In: Proceedings of the International Conference on Generative Programming, GPCE 2013, pp. 3–12, Indianapolis, USA. ACM (2013)Google Scholar
  11. 11.
    Harel, D., Rumpe, B.: Meaningful modeling: what’s the semantics of “semantics”? Computer 37(10), 64–72 (2004)CrossRefGoogle Scholar
  12. 12.
    Jézéquel, J.-M., Combemale, B., Barais, O., Monperrus, M., Fouquet, F.: Mashup of metalanguages and its implementation in the kermeta language workbench. Softw. Syst. Mod. 14(2), 905–920 (2015)CrossRefGoogle Scholar
  13. 13.
    Jézéquel, J.-M., Méndez-Acuña, D., Degueule, T., Combemale, B., Barais, O.: When systems engineering meets software language engineering. In: Boulanger, F., Krob, D., Morel, G., Roussel, J.-C. (eds.) CSD&M 2014, pp. 1–13. Springer International Publishing, Heidelberg (2015)Google Scholar
  14. 14.
    de Lara, J., Guerra, E.: Domain-specific textual meta-modelling languages for model driven engineering. In: Vallecillo, A., Tolvanen, J.-P., Kindler, E., Störrle, H., Kolovos, D. (eds.) ECMFA 2012. LNCS, vol. 7349, pp. 259–274. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  15. 15.
    Lodderstedt, T., Basin, D., Doser, J.: SecureUML: a UML-based modeling language for model-driven security. In: Jézéquel, J.-M., Hussmann, H., Cook, S. (eds.) UML 2002. LNCS, vol. 2460, pp. 426–441. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  16. 16.
    Lucanu, D., Rusu, V.: Program equivalence by circular reasoning. In: Johnsen, E.B., Petre, L. (eds.) IFM 2013. LNCS, vol. 7940, pp. 362–377. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  17. 17.
    Mernik, M.: An object-oriented approach to language compositions for software language engineering. J. Syst. Softw. 86(9), 2451–2464 (2013)CrossRefGoogle Scholar
  18. 18.
    Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. ACM Comput. Surv. 37(4), 316–344 (2005)CrossRefGoogle Scholar
  19. 19.
    Mishra, S., Kushwaha, D., Misra, A.: Creating reusable software component from object-oriented legacy system through reverse engineering. J. Object Technol. 8(5), 133–152 (2009)CrossRefGoogle Scholar
  20. 20.
    Mosses, P.D.: The varieties of programming language semantics. In: Bjørner, D., Broy, M., Zamulin, A.V. (eds.) PSI 2001. LNCS, vol. 2244, pp. 165–190. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  21. 21.
    Olson, A., Kieren, T., Ludwig, S.: Linking logo, levels and language in mathematics. Educ. Stud. Math. 18(4), 359–370 (1987)CrossRefGoogle Scholar
  22. 22.
    Oney, S., Myers, B., Brandt, J.: Constraintjs: programming interactive behaviors for the web by integrating constraints and states. In: Proceedings of the Annual Symposium on User Interface Software and Technology, UIST 2012, pp. 229–238, Cambridge, Massachusetts, USA. ACM (2012)Google Scholar
  23. 23.
    Steel, J., Jézéquel, J.-M.: On model typing. Softw. Syst. Mod. 6(4), 401–414 (2007)CrossRefGoogle Scholar
  24. 24.
    Voelter, M.: Language and IDE modularization and composition with MPS. In: Lämmel, R., Saraiva, J., Visser, J. (eds.) GTTSE 2011. LNCS, vol. 7680, pp. 383–430. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  25. 25.
    Völter, M., Benz, S., Dietrich, C., Engelmann, B., Helander, M., Kats, L.C.L., Visser, E., Wachsmuth, G.: DSL Engineering - Designing, Implementing and Using Domain-Specific Languages. CreateSpace Independent Publishing Platform, Hamburg (2013). Google Scholar
  26. 26.
    Zschaler, S., Kolovos, D.S., Drivalos, N., Paige, R.F., Rashid, A.: Domain-specific metamodelling languages for software language engineering. In: van den Brand, M., Gašević, D., Gray, J. (eds.) SLE 2009. LNCS, vol. 5969, pp. 334–353. Springer, Heidelberg (2010)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  • David Méndez-Acuña
    • 1
    Email author
  • José A. Galindo
    • 1
  • Benoit Combemale
    • 1
  • Arnaud Blouin
    • 1
  • Benoit Baudry
    • 1
  • Gurvan Le Guernic
    • 2
  1. 1.INRIA and University of Rennes 1RennesFrance
  2. 2.DGA Maîtrise de l’InformationBruzFrance

Personalised recommendations