Software & Systems Modeling

, Volume 8, Issue 1, pp 5–19 | Cite as

Meta-environment and executable meta-language using smalltalk: an experience report

  • Stéphane Ducasse
  • Tudor Girba
  • Adrian Kuhn
  • Lukas Renggli
Special Section Paper


Object-oriented modelling languages such as EMOF are often used to specify domain specific meta-models. However, these modelling languages lack the ability to describe behavior or operational semantics. Several approaches have used a subset of Java mixed with OCL as executable meta-languages. In this experience report we show how we use Smalltalk as an executable meta-language in the context of the Moose reengineering environment. We present how we implemented EMOF and its behavioral aspects. Over the last decade we validated this approach through incrementally building a meta-described reengineering environment. Such an approach bridges the gap between a code-oriented view and a meta-model driven one. It avoids the creation of yet another language and reuses the infrastructure and run-time of the underlying implementation language. It offers an uniform way of letting developers focus on their tasks while at the same time allowing them to meta-describe their domain model. The advantage of our approach is that developers use the same tools and environment they use for their regular tasks. Still the approach is not Smalltalk specific but can be applied to language offering an introspective API such as Ruby, Python, CLOS, Java and C#.


Meta behavior description Reflective language Executable modeling language Smalltalk 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Atkinson, C., Kuehne, T.: The essence of multilevel metamodeling. In: Proceedings of the UML Conference. LNCS, vol. 2185, pp. 19–33 (2001)Google Scholar
  2. 2.
    Atkinson, C., Kuehne, T.: Concepts for comparing modeling tool architecture. In: Proceedings of the UML Conference. LNCS, vol. 3713, pp. 19–33 (2005)Google Scholar
  3. 3.
    Bobrow, D.G., DeMichiel, L.G., Gabriel, R.P., Keene, S., Kiczales, G., Moon, D.A.: Common lisp object system specification, x3j13. Technical Report 88-003, (ANSI COMMON LISP) (1988)Google Scholar
  4. 4.
    Bergel, A., Ducasse, S., Nierstrasz, O.: Classbox/J: Controlling the scope of change in Java. In: Proceedings of 20th International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’05), pp. 177–189. ACM Press, New York (2005)Google Scholar
  5. 5.
    Bézivin, J., Gerbé, O.: Towards a precise definition of the OMG/MDA framework. In: Proceedings Automated Software Engineering (ASE 2001), pp. 273–282. IEEE Computer Society, Los Alamitos CA (2001)Google Scholar
  6. 6.
    Bobrow, D.G., Gabriel, R.P., White, J.L.: CLOS in context—the CLOS in context—the shape of the design. In: Paepcke, A. (eds) Object-Oriented Programming: The CLOS Perspective, pp. 29–61. MIT Press, Cambridge (1993)Google Scholar
  7. 7.
    Budinsky, F., Steinberg, D., Merks, E., Ellersick, R., Grose, T.: Eclipse Modeling Framework. Addison Wesley Professional, Reading (2003)Google Scholar
  8. 8.
    Clark, T., Evans, A., Sammut, P., Willans, J.: Applied Metamodelling: A Foundation for Language Driven Development (2004)Google Scholar
  9. 9.
    Ducasse, S., Demeyer, S. (eds.): The FAMOOS Object-Oriented Reengineering Handbook. University of Bern, Switzerland (1999)Google Scholar
  10. 10.
    Demeyer, S., Ducasse, S., Lanza, M.: A hybrid reverse engineering platform combining metrics and program visualization. In: Balmas, F., Blaha, M., Rugaber, S. (eds.) Proceedings of 6th Working Conference on Reverse Engineering (WCRE’99). IEEE Computer Society (1999)Google Scholar
  11. 11.
    Demeyer, S., Ducasse, S., Nierstrasz, O.: Object-Oriented Reengineering Patterns. Morgan Kaufmann, Los Altos (2002)Google Scholar
  12. 12.
    Demeyer, S., Ducasse, S., Tichelaar, S.: Why unified is not universal. UML shortcomings for coping with round-trip engineering. In: Rumpe, B. (ed.) Proceedings UML’99 (The Second International Conference on the Unified Modeling Language). LNCS, vol. 1723, pp. 630–644, Kaiserslautern, Germany. Springer, Heidelberg (1999)Google Scholar
  13. 13.
    DeMichiel, L.G., Gabriel, R.P.: The common lisp object system: an overview. In: Bézivin, J., Hullot, J.-M., Cointe, P., Lieberman, H. (eds.) Proceedings ECOOP ’87 of LNCS, vol 276, pp. 151–170. Springer, Paris (1987)Google Scholar
  14. 14.
    Ducasse, S., Gîrba, T.: Using Smalltalk as a reflective executable meta-language. In: International Conference on Model Driven Engineering Languages and Systems (Models/UML 2006). LNCS, vol. 4199, pp. 604–618. Springer, Berlin (2006)Google Scholar
  15. 15.
    Ducasse, S., Gîrba, T., Lanza, M., Demeyer, S.: Moose: a collaborative and extensible reengineering environment. In: Tools for Software Maintenance and Reengineering, RCOST/Software Technology Series, pp. 55–71. Franco Angeli, Milano (2005)Google Scholar
  16. 16.
    Ducasse, S., Lanza, M.: The class blueprint: visually the class blueprint: visually supporting the understanding of classes. Trans. Softw. Eng. (TSE) 31(1), 75–90 (2005)CrossRefGoogle Scholar
  17. 17.
    Devos, M., Tilman, M.: Incremental development of a repository-based framework supporting organizational inquiry and learning. In: OOPSLA’98 Practioner’s Report (1998)Google Scholar
  18. 18.
    Demeyer, S., Tichelaar, S., Ducasse, S.: FAMIX 2.1—The FAMOOS Information Exchange Model. Technical Report. University of Bern, Switzerland (2001)Google Scholar
  19. 19.
    Fleurey, F.: Langage et méthode pour une ingénierie des modèles fiable. Ph.D. Thesis, Thèse de doctorat, Université de Rennes 1 (2006)Google Scholar
  20. 20.
    Gîrba, T., Ducasse, S.: Modeling history to analyze software evolution. J. Softw. Maintenance Res. Practice (JSME) 18, 207–236 (2006)CrossRefGoogle Scholar
  21. 21.
    Goldberg, A., Robson, D.: Smalltalk 80: the Language and its Implementation. Addison Wesley, Reading (1983)zbMATHGoogle Scholar
  22. 22.
    Greevy, O.: Enriching Reverse Engineering with Feature Analysis. Ph.D. Thesis, University of Berne (2007)Google Scholar
  23. 23.
    Object Management Group. Meta object facility (MOF) 2.0 core final adopted specification. Technical Report, Object Management Group (2004)Google Scholar
  24. 24.
    Jouault, F., Bézivin, J.: KM3: a DSL for metamodel specification. In: IFIP International Conference on Formal Methods for Open Object-Based Distributed Systems. LNCS, vol. 4037, pp. 171–185. Springer, Heidelberg (2006)Google Scholar
  25. 25.
    Johnson, R., Wolf, B.: Type object. In: Martin, R.C., Riehle, D., Buschmann, F. (eds.) Pattern Languages of Program Design, vol. 3, chap. 4. Addison Wesley, Reading (1998). ISBN:0-201-31011-2Google Scholar
  26. 26.
    Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)Google Scholar
  27. 27.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of Aspect J. In: Proceeding ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)Google Scholar
  28. 28.
    Knuth, D.E.: Literate Programming. Center for the Study of Language and Information, Stanford (1992)Google Scholar
  29. 29.
    Maes, P.: Computational reflection. Ph.D. Thesis, Laboratory for Artificial Intelligence, Vrije Universiteit Brussel, Brussels (1987)Google Scholar
  30. 30.
    Maes, P.: Concepts and experiments in computational reflection. In: Proceedings OOPSLA’87, ACM SIGPLAN Notices, vol. 22, pp. 147–155 (1987)Google Scholar
  31. 31.
    Matula, M.: Netbeans metadata repository. Technical Report, NetBeans (2003)Google Scholar
  32. 32.
    Muller, P.-A., Fleurey, F., Jézéquel, J.-M.: Weaving executability into object-oriented meta-languages. In: Kent, S., Briand, L. (eds.) Proceedings of MODELS/UML’2005. LNCS, vol. 3713, pp. 264–278, Montego Bay, Jamaica. Springer, Heidelberg (2005)Google Scholar
  33. 33.
    Meyer, M., Gîrba, T., Lungu, M.: Mondrian: An agile visualization framework. In: ACM Symposium on Software Visualization (SoftVis 2006), pp. 135–144. ACM Press, New York (2006)Google Scholar
  34. 34.
    Muller, P.-A., Studer, P., Fondement, F., Bézivin, J.: Independent web application modeling and development with netsilon. Softw. Syst. Model. 4(4), 424–442 (2005)CrossRefGoogle Scholar
  35. 35.
    Mellor, S.J., Tockey, S., Arthaud, R., LeBlanc, P.: Software-platform-independent, precise action specifications for UML. In: Bézivin, J., Muller, P.-A. (eds.) The Unified Modeling Language, UML’98—Beyond the Notation. First International Workshop, Mulhouse, France. LNCS, vol. 1618, pp. 281–286 (1998)Google Scholar
  36. 36.
    Nierstrasz, O., Ducasse, S., Gîrba, T.: The story of Moose: an agile reengineering environment. In: Proceedings of the European Software Engineering Conference (ESEC/FSE 2005), pp. 1–10. ACM Press, New York (2005). Invited paperGoogle Scholar
  37. 37.
    Roberts, D., Brant, J., Johnson, R.E.: A refactoring tool for Smalltalk. Theory Pract. Object Syst. (TAPOS) 3(4), 253–263 (1997)CrossRefGoogle Scholar
  38. 38.
    Riehle, D., Fraleigh, S., Bucka-Lassen, D., Omorogbe, N.: The architecture of a uml virtual machine. In: Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’01), pp. 327–341 (2001)Google Scholar
  39. 39.
    Rivard, F.: Pour un lien d’instanciation dynamique dans les langages à classes. In: JFLA96. INRIA—collection didactique (1996)Google Scholar
  40. 40.
    Riehle, D., Tilman, M., Johnson, R.: Dynamic object model. In: Pattern Languages of Program Design, vol. 5. Addison-Wesley, Reading (2005)Google Scholar
  41. 41.
    Tichelaar, S., Ducasse, S., Demeyer, S.: FAMIX: Exchange experiences with CDIF and XMI. In: Proceedings of the ICSE 2000 Workshop on Standard Exchange Format (WoSEF 2000) (2000)Google Scholar
  42. 42.
    Yoder, J.W., Johnson, R.: The adaptive object model architectural style. In: Proceeding of the working IEEE/IFIP Conference on Software Architecture 2002 (WICSA3 ’02) (2002)Google Scholar

Copyright information

© Springer-Verlag 2008

Authors and Affiliations

  • Stéphane Ducasse
    • 1
    • 2
  • Tudor Girba
    • 1
  • Adrian Kuhn
    • 1
  • Lukas Renggli
    • 1
  1. 1.Software Composition GroupUniversity of BernBernSwitzerland
  2. 2.Language and Software Evolution Group, ADAM TeamINRIA-Lille Nord Europe, LIFL/USTL1, CNRS UMRLilleFrance

Personalised recommendations