Fusing Modeling and Programming into Language-Oriented Programming

Our Experiences with MPS
  • Markus VoelterEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11244)


Modeling in general is of course different from programming (think: climate models). However, when we consider the role of models in the context of “model-driven”, i.e., when they are used to automatically construct software, it is much less clear that modeling is different from programming. In this paper, I argue that the two are conceptually indistinguishable, even though in practice they traditionally emphasize different aspects of the (conceptually indistinguishable) common approach. The paper discusses and illustrates language-oriented programming, the approach to {modeling|programming} we have successfully used over the last 7 years to build a range of innovative systems in domains such as insurance, healthcare, tax, engineering and consumer electronics. It relies on domain-specific languages, modular language extension, mixed notations, and in particular, the Jetbrains MPS language workbench.


Domain-specific languages Language modularity Function programming Language engineering Meta programming 



While I wrote the paper, the material discussed in the paper would not have been possible without the team at itemis. So I want to acknowledge everybody who contributed ideas, code, or validation. In addition, I want to thank the MPS team at Jetbrains for building an amazing tool and for helping us use it productively over the years. Finally, Tamas Szabo provided useful feedback on the paper, so I want to thank him specifically. The same thanks goes to my ISOLA reviewers.


  1. 1.
    Berger, T., Völter, M., Jensen, H.P., Dangprasert, T., Siegmund, J.: Efficiency of projectional editing: a controlled experiment. In: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 763–774. ACM (2016)Google Scholar
  2. 2.
    Clarke, E.M., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999)Google Scholar
  3. 3.
    Czarnecki, K., Eisenecker, U.W., Czarnecki, K.: Generative Programming: Methods, Tools, and Applications, vol. 19. Addison Wesley, Reading (2000)zbMATHGoogle Scholar
  4. 4.
    Durr, E., Van Katwijk, J.: Vdm++, a formal specification language for object-oriented designs. In: 1992 Proceedings Computer Systems and Software Engineering, pp. 214–219. IEEE (1992)Google Scholar
  5. 5.
    Erdweg, S., et al.: The state of the art in language workbenches. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 197–217. Springer, Cham (2013). Scholar
  6. 6.
    Fowler, M.: Language workbenches: The killer-app for domain specific languages (2005)Google Scholar
  7. 7.
    Goguen, J., Meseguer, J.: Rapid prototyping: in the obj executable specification language. ACM SIGSOFT Softw. Eng. Notes 7(5), 75–84 (1982)CrossRefGoogle Scholar
  8. 8.
    Green, T.R.: Cognitive dimensions of notations. In: Sutcliffe, A., Macaulay, L. (eds.) People and Computers V, pp. 443–460. Cambridge University Press, Cambridge (1989)Google Scholar
  9. 9.
    Holzmann, G.: Spin model checker, the: primer and reference manual. Addison-Wesley Professional (2003)Google Scholar
  10. 10.
    Jensen, C.S., Snodgrass, R.T.: Temporal data management. IEEE Trans. Knowl. Data Eng. 11(1), 36–44 (1999)CrossRefGoogle Scholar
  11. 11.
    Kroening, D., Tautschnig, M.: CBMC – C bounded model checker. In: Ábrahám, E., Havelund, K. (eds.) TACAS 2014. LNCS, vol. 8413, pp. 389–391. Springer, Heidelberg (2014). Scholar
  12. 12.
    Maloney, J., Resnick, M., Rusk, N., Silverman, B., Eastmond, E.: The scratch programming language and environment. ACM Trans. Comput. Educ. (TOCE) 10(4), 16 (2010)Google Scholar
  13. 13.
    Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Trans. Softw. Eng. 26(1), 70–93 (2000)CrossRefGoogle Scholar
  14. 14.
    Molotnikov, Z., Völter, M., Ratiu, D.: Automated domain-specific C verification with mbeddr. In: Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering, pp. 539–550. ACM (2014)Google Scholar
  15. 15.
    Ratiu, D., Schaetz, B., Voelter, M., Kolb, B.: Language engineering as an enabler for incrementally defined formal analyses. In: 2012 Formal Methods in Software Engineering: Rigorous and Agile Approaches (FormSERA), pp. 9–15. IEEE (2012)Google Scholar
  16. 16.
    Szabó, T., Erdweg, S., Voelter, M.: IncA: a DSL for the definition of incremental program analyses. In: 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 320–331. IEEE (2016)Google Scholar
  17. 17.
    Tanimoto, S.L.: A perspective on the evolution of live programming. In: Proceedings of the 1st International Workshop on Live Programming, pp. 31–34. IEEE Press (2013)Google Scholar
  18. 18.
    van Rest, O., Wachsmuth, G., Steel, J.R.H., Süß, J.G., Visser, E.: Robust real-time synchronization between textual and graphical editors. In: Duddy, K., Kappel, G. (eds.) ICMT 2013. LNCS, vol. 7909, pp. 92–107. Springer, Heidelberg (2013). Scholar
  19. 19.
    Voelter, M.: A smart contract development stack. Accessed 6 Dec 2017Google Scholar
  20. 20.
    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). Scholar
  21. 21.
    Voelter, M.: An argument for the isolation of ‘fachlichkeit’ (2017).
  22. 22.
    Voelter, M.: Thoughts on ‘declarativeness’ (2017).
  23. 23.
    Voelter, M.: The design, evolution, and use of KernelF. In: Rensink, A., Sánchez Cuadrado, J. (eds.) ICMT 2018. LNCS, vol. 10888, pp. 3–55. Springer, Cham (2018). Scholar
  24. 24.
    Voelter, M., van Deursen, A., Kolb, B., Eberle, S.: Using C language extensions for developing embedded software: a case study. In: Proceedings of OOPSLA 2015, pp. 655–674. ACM (2015)CrossRefGoogle Scholar
  25. 25.
    Voelter, M.: Using language workbenches and domain-specific languages for safety-critical software development. Softw. Syst. Model., 1–24 (2018).
  26. 26.
    Voelter, M., Kolb, B., Szabó, T., Ratiu, D., van Deursen, A.: Lessons learned from developing mbeddr: a case study in language engineering with mps. Softw. Syst. Model., 1–46 January 2017.
  27. 27.
    Voelter, M., Lisson, S.: Supporting diverse notations in MPS’ projectional editor. In: GEMOC WorkshopGoogle Scholar
  28. 28.
    Voelter, M., Ratiu, D., Kolb, B., Schaetz, B.: mbeddr: instantiating a language workbench in the embedded software domain. Autom. Softw. Eng. 20(3), 1–52 (2013)CrossRefGoogle Scholar
  29. 29.
    Voelter, M., Szabó, T., Lisson, S., Kolb, B., Erdweg, S., Berger, T.: Efficient development of consistent projectional editors using grammar cells. In: Proceedings of the 2016 ACM SIGPLAN International Conference on Software Language Engineering, pp. 28–40. ACM (2016)Google Scholar
  30. 30.
    Woodcock, J., Davies, J.: Using Z: Specification, Refinement, and Proof. Prentice Hall International. Pearson Education, UK (1996)Google Scholar
  31. 31.
    Wortmann, A., Beet, M.: Domain specific languages for efficient satellite control software development. In: DASIA 2016, vol. 736 (2016)Google Scholar
  32. 32.
    Xi, H., Pfenning, F.: Dependent types in practical programming. In: Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 214–227. ACM (1999)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.independent/itemisStuttgartGermany

Personalised recommendations