contact ME

Use this form to reach out to me.

Ask me about the software development consulting and vocal services that I can provide for your project.

Name *

Ottawa, ON

I am an independent software development consultant, specializing in model-driven development with Eclipse technology, which has been a passion for the last ten years.  I am widely recognized for my high-quality output, timely delivery, and friendly and engaging manner.

I also happen to be a capable singer, performing sacred and secular works for choir and tenor solo from the renaissance to today.  If you are presenting vocal music in Ottawa, eastern Ontario, or west Québec, I can be your tenor.



An ad hoc record of Christian W. Damus's professional and personal activity.

New and Noteworthy in Papyrus Mars

Christian W. Damus

The Mars release of the Eclipse Papyrus project is upon us. In this release, I went pretty deep on new features in the diagrams, a part of the GMF technology stack with which I have historically been least familiar.

Modeling Assistants

The first major feature in this release was the introduction of Modeling Assistants to Papyrus UML diagrams. The underpinnings of this functionality have been in the GMF Run-time since Callisto but were heretofore suppressed in Papyrus. Now, several of the diagrams provide connection handles and pop-up assistants for creation of objects related to what's already on the diagram. It is still a work in press: some diagrams do not implement them, yet.

The Modeling Assistants implemented in Papyrus are, of course, described by models, based on the modeled element types that are also new in Mars. In fact, these models are hot-deployable from the workspace at run-time and can be generated from GMFGen models of a diagram or from UML Profiles. The latter case is particularly useful for users to complement custom palettes for graphical DSLs.

See bug 451230 for more details.

Canonical Diagrams

The next major feature is an extensible canonical edit-policy (in the GMF terminology) that is manifest to users as diagram views that are automatically synchronized with the semantic model. A new appearance property is added to the property sheet for diagram views that makes them synchronized with the model. A corresponding CSS attribute canonical is also supported for stylesheets. Canonical views automatically present child views and connected edges where possible in the diagram and keep them synchronized with changes in the model.

See bug 433206 for more details.

Diagram Synchronization

This last feature completes work started by Laurent Wouters to implement a general-purpose synchronization framework capable of handling peer-to-peer and master-slave synchronization of model content and diagram notation. On this framework is implemented a proof-of-concept in the UML Real-Time domain: synchronization of the semantics and diagram of a state machine in a Capsule that redefines an inherited state machine.

See bug 465416 for more details.

Enjoy your trip to Mars! We'll see you under the Neon lights next year.


Fun with OCL in Papyrus Mars

Christian W. Damus


Last week I presented an "Introduction to OCL" lunch-and-learn talk to a private client.  We had some technical troubles with the remote screen-sharing system, so the live demo portion of the presentation didn't exactly turn out as we had hoped.  Consequently, to finish the job and to ensure that my work of preparing demo materials wouldn't go to waste, I decided to record screencasts instead and share them with everybody.

These screencasts are up to my usual production standard (which is to say unevenly paced and hardly edited) because I never really have time to spend on these things.  But, I hope they may serve as a useful introduction to the value of OCL in the Eclipse modeling universe, as well as OCL-related transformation languages that I included in my OCL introduction talk.

Read More

Profile Applications in Papyrus Mars M3

Christian W. Damus

This week's M3 milestone of the Mars release of the Eclipse Papyrus project adds new capabilities for profile applications in your UML models. Now, profile applications, and the extensions of your model elements by the stereotypes that they define, can be stored separately from the packages in your models to which they are applied.

The brief (seven-minute) video above demonstrates the most important capabilities of profile applications in Mars M3, including:

  • separating a profile application and its accompanying stereotype applications into their own model
  • loading and unloading stereotype applications (the models to which they are applied are independent of them)
  • opening profile applications in their own editors
  • duplicating profile applications

The last item above is particularly interesting, as it shows how the same profile may be applied to the same package multiple times, with different stereotypes applied to elements and/or different values of the attributes of those stereotypes. This is especially useful for comparative "what if" scenarios, such as modeling alternative deployments of software components onto hardware in an embedded system using different applications of the MARTE profile.

Of course, a profile application once externalized into its own resource in this way can also be re-absorbed into the model to which it is applied. This is not demonstrated in the video, being left as an exercise for the reader.

For a detailed history of the development of this feature, see bug 399859. Better yet, install the M3 milestone of Papyrus from the Mars simultaneous release repository and play with it!