MetaCase Newsletter 2014/2

May 2014

MetaEdit+ 5.1 beta program

Beta testing of MetaEdit+ 5.1 is starting, available first to current MetaEdit+ users. The new version adds dozens of features and hundreds of improvements, including:

  • Hierarchical property sheet showing properties and their contents as a tree, editable in-place
  • Movable dynamic ports
  • Reconnect a role to a different object or port, drag objects with their contents
  • Read-only and hidden properties, UUID properties
  • New generator functions: prompt for filename, hyperlinks in generator output

The first beta will be for Windows, with other platforms following over the summer. To join the beta program and get all the new features, send email to info@metacase.com and we'll contact you with details.
 


In this issue: 

  • MetaEdit+ 5.1 beta program
  • Scaling to large designs, models, languages
  • Integrating general purpose and domain-specific languages
  • 14th Workshop on Domain-Specific Modeling at SPLASH 2014
  • From the forums: Accessing objects while iterating all the relationships
  • 4th June: Webinar on creating Domain-Specific Modeling languages with MetaEdit+
     

Scaling to large designs, models, integrated languages

MetaEdit+ has been used industrially since 1995, scaling to cases with hundreds of users and gigabytes of models. Its object repository can consist of an unlimited number of projects, each of which can hold over 4 billion persistent objects. The models can be divided across projects, and reference each other across projects, as the users desire.

To demonstrate this scalability we recorded a video: large projects, containing hundreds of thousands model elements, open quickly and individual tools like browsers, model editors and generators continue to work as fast as for small projects.

See the video on scalability of MetaEdit+ when working with hundreds of thousands model elements on the MetaEdit+ YouTube channel.


Integrating general purpose and domain-specific languages: a case of blood separator machines

When companies start using domain-specific languages, they often want to integrate existing languages and specifications along with their components and legacy code. Through a concrete example from a medical domain, we describe how existing languages for Programmable Logic Controllers (PLCs), like IEC 61131-3 structured text or function block diagrams, can be extended with domain-specific constructs. The domain-specific models are not only used for design and code generation, but also when debugging and profiling, or even for incremental specification and execution "on the fly".

The article is published on and available to download from embedded.com, and shows examples of DSM in use: models, generators, and produced output.


14th Workshop on Domain-Specific Modeling at SPLASH 2014

With the growing interest in Domain-Specific Modeling, MetaCase is proud to co-organize the 14th workshop on DSM at SPLASHCon (19-24 October) in Portland, Oregon.

This workshop series has proved an excellent forum to present and discuss details of modeling language and code generation development. Over 500 authors have contributed their papers over the years, and they are all available online at http://www.dsmforum.org/DSMworkshops.html.

For submission and participation details please visit the workshop webpage.


From the Forums: Accessing objects while iterating over relationships

When you have a question, the MetaEdit+ Web Forums have have proven to be a great way to get accurate answers quickly. At the same time, your question helps others for the future: some threads have been read over 20 000 times. 

This issue's highlighted topic comes from ReeceRobinson who asks about accessing objects while iterating over relationships.

*** 

Q: In my language I have a relationship between two objects, i.e. an association between two classes. I am writing a generator that iterates all the associations and outputs the role info at each end. My problem is that I also need to output the connected class ObjectId when I format the role information. I only have the association and the roles i.e. >Association~Role. How do I get the ObjectId for the class the role is attached to?
________ 

A: If I understand correctly, you want something like this:
foreach >Association
{ 'Association ' id newline
  do ~Role
  { 'Role: ' id
    ' for object: ' do .Class { id } newline
  }
  newline
}

That will give you the name (human-readable identifier) of the Class (adjust the green type names if they don't match what you have, or use () to match any type name). You mentioned objectID, which is actually a separate MERL command, and answers just the object number part of the internal id of this element, unique in this project; if you want that number instead of the Class name, replace id with objectID in the innermost loop.

***

See other topics from the MetaEdit+ Web Forums here.


4th June: Webinar on Domain-Specific Modeling with MetaEdit+

This 30-minute webinar will demonstrate how MetaEdit+ allows you to incrementally define your own modeling tool — without having to write a single line of code. As soon as you define a modeling language, or even a partial prototype, you and your team can start to use it in MetaEdit+. You will learn:n:

  • How to define domain-specific languages with MetaEdit+
  • How to define rich, dynamically changing notations 
  • How MetaEdit+ updates models on the fly as the modeling language changes
  • How to test and debug the modeling language and generator 

For the webinar you can use your computer's microphone and speakers — a headset is recommended. The schedule for the webinars and instructions are available on the webinar page.

Alongside the webinars, we're also offering company-specific webmeetings for DSM. These allow us to focus on your particular vertical, e.g. automotive, product line, UI, telecom or service specification. We can show you and your team DSM languages and cases from your vertical as well as discussing your company-specific requirements — all of course with no obligation. Book your own free one-to-one webmeeting now!