MDE Use-Cases for Education
Use-cases for teaching model-driven engineering principles and tools.
Show me the use-cases

About


As a relatively new field, Model-Driven Engineering is still challenging to teach as we lack both mature and well-documented tools and (perhaps more importantly) appropriate use-cases. MDE4EDU is an initiative to collect, organise, discuss and disseminate such use-cases so that MDE educators can pool resources instead of working in isolation.

How does it work?


Each use-case lives in a separate GitHub repository under the MDE4EDU GitHub organisation. The description of the use-case resides in the README.md file (home page) of the repository. Feel free to browse through the available use-cases, to use them as they are, or to adapt them according to your needs. Now, if you would like to go a step further and contribute to this initiative, please read on.

How can I contribute?


There are 3 ways to contribute:

  1. The easiest way is to help us "rank" existing use-cases according to their completeness and usefulness. You can do this by starring the repositories of use-cases you like.
  2. To help contributors improve their use-cases, you can create GitHub issues with comments and suggestions in the respective repositories.
  3. When you are ready to contribute a new case study, you can create a new GitHub issue in the mde4edu.github.io repository and ask us to grant you write access to the MDE4EDU GitHub organisation. Once you have access, you can create a new repository under the organisation and share your use-case there. You don't need to provide an implementation; a brief description that the community can discuss and improve over time is more than welcome.

What is a "good" use-case?


It's unikely that we have a bulletproof answer at this stage; however, it's worth considering the following:

  1. It can be simplified, but its domain should remain realistic. For example, defining a bookstore/library metamodel and generating a HTML page from a model that conforms to it, is hardly something that a practitioner would ever need to do.
  2. It should not attempt to reinvent the wheel. For example, generating a bespoke object-relational mapping layer from a UML class diagram is unlikely to be a wise choice for a practitioner in the era of Hibernate.
  3. It should not involve (too many) non-MDE technologies that 3rd/4th-year university students are unlikely to be familiar with. Doing so, could shift the focus from MDE to these technologies and be counter-productive – particularly for a short MDE course.

If in doubt, be brave, share your use-case, and let the community help you improve it.