Magritte - A Meta-Driven Approach to Empower Developers and End Users

2,744 views

Published on

Model-driven engineering is a powerful approach to build large-scale applications. However, an application's metamodel often remains static after the initial development phase and cannot be changed unless a new development effort occurs. Yet, end users often need to rapidly adapt their applications to new needs. In many cases, end users would know how to make the required adaptations, if only the application would let them do so. In this paper we present how we built a runtime-dynamic meta-environment into Smalltalk's reflective language model. Our solution offers the best of both worlds: developers can develop their applications using the same tools they are used to and gain the power of meta-programming. We show in particular that our approach is suitable to support end user customization without writing new code: the adaptive model of Magritte not only describes existing classes, but also lets end users build their own metamodels on the fly.

Published in: Economy & Finance, Technology
  • Be the first to comment

  • Be the first to like this

Magritte - A Meta-Driven Approach to Empower Developers and End Users

  1. 1. Magritte A Meta-Driven Approach to Empower Developers and End Users Lukas Renggli Stéphane Ducasse Adrian Kuhn University of Bern, Switzerland Software Composition Group
  2. 2. Roadmap Problem Demo Implementation Evaluation Questions
  3. 3. What is the problem?
  4. 4. Rapidly changing requirements
  5. 5. End users would know their requirements
  6. 6. What did we see?
  7. 7. Meta-driven software
  8. 8. Developer defined meta-model
  9. 9. End user defined meta-model
  10. 10. Run-time dynamic meta-model
  11. 11. Meta- Metamodel <described-by> Metamodel Developer <described-by> Domain Model End User
  12. 12. Meta- Metamodel <described-by> Metamodel Magritte Developer <described-by> Domain Model Magritte End User
  13. 13. How does it work?
  14. 14. Type Object Component Component Type 1 * 1 1 (a) Type-Square * * Property Property Type 1 * Type Object [Yoder et al, 2001] Architecture and design of adaptive object models
  15. 15. Type Object Component Component Type 1 * 1 1 (a) Type-Square * * Property Property Type 1 * Type Object [Yoder et al, 2001] Architecture and design of adaptive object models
  16. 16. attributes attributes 1 1 * attributes * 1 Object * Object * * Object * description description Object Object Type Type description Object Type attributes Description * Description * * 1 Description *
  17. 17. attributes attributes 1 1 * attributes * 1 Object * Object * * Object * description description Object Object Type Type description Object Type attributes Description * Description * * 1 Description *
  18. 18. attributes attributes 1 1 * attributes * 1 Object * Object * * Object * description description Object Object Type Type description Object Type attributes Description * Description * * 1 Description *
  19. 19. Describe Objects
  20. 20. Describe Descriptions
  21. 21. Describe Constraints
  22. 22. Describe Behavior
  23. 23. pen-source development environment for programming language. Despite being the ted language and environment, Smalltalk ar ahead of its successors in promoting a Squeak by Example ment where everything is an object, and run-time. Smalltalk ended for both students and developers, ly through the Squeak language and of a series of examples and exercises. vailable under the Creative Commons 3.0 license. You can either download the an buy a softcover copy from lulu.com. available from the book's web page at www.squeak.org g, hosted by the University of Bern, Squeak dorsed by ESUG, the European Smalltalk more about Smalltalk and ESUG, see www.squeakbyexample.org Black!•!Ducasse!•!Niers 2 by Example Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet
  24. 24. Reflection
  25. 25. Integration with Tools
  26. 26. Class Extension
  27. 27. What can we do with it?
  28. 28. Automatic Views
  29. 29. Automatic Editors
  30. 30. Automatic Validation
  31. 31. Move Page
  32. 32. Automatic Reports
  33. 33. Automatic Querying
  34. 34. Automatic Persistency
  35. 35. What did we gain?
  36. 36. t rid of Ge Reduce recurrent work
  37. 37. Describe once, get everywhere
  38. 38. Extensible Object Model
  39. 39. Ru n-t ime Adaptive object model
  40. 40. Code Generation
  41. 41. End users customizability
  42. 42. Industrial Users
  43. 43. Aare Workflow definition and runtime system
  44. 44. Magritte www.lukas-renggli.ch [René Magritte, 1966] Decalcomania
  45. 45. LOC Comparison Model View 1561 LOC 1812 LOC 44% 37% View Model 1983 LOC 3078 LOC 56% 63% SmallWiki Pier Traditional Meta-described
  46. 46. Speed Comparison 9,000 8,190 6,750 4,500 2,250 2,456 0 Traditional Meta-Described

×