Our lab is a very exciting place to learn and work!
FSMLs
A framework-specific modeling language (FSML) is a language designed for a particular framework and it is used for expressing how applications use that framework. We built four exemplar FSMLs for Java Applet, Apache Struts 1.x, Eclipse Workbench, and EJB 3.0. FSMLs support five use cases:
A metamodel of an FSML defines framework API concepts in some scope together with their features and a mapping between the features and code patterns that implement them. Such a language definition is interpreted by our generic FSML infrastructure, which supports reverse-, forward-, and round-trip engineering, framework specific code completion, and framework specific (code) quick fix. We also created an FSML engineering method that can be used for building new FSMLs.
A tool demonstration is available.
Our prototype implementations are based on Eclipse, Eclipse Modeling Framework (EMF), Java Development Tools (JDT), and XML Editors. We support applications written in Java and XML. Support for other languages can be added by implementing pluggable
The infrastructure provides two views: model-code synchronization view and model-code navigation view. The former view displays results of comparison between the model and the code and allows for executing automatic reconciliation. The latter view displays traceability links for a selected model element and allows jumping to places in code that implement the selected element. Additionally, the infrastructure provides support for implementing model editors, mapping interpreters, and mapping types (code queries and transformations).