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: framework API understanding, completion code understanding and analysis, creation, migration, and evolution.

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 mapping interpreters, which implement code queries (perform static analysis) and code transformations (perform incremental code update). To date, we implemented four mapping interpreters: two generic for Java and XML, and two specific for Eclipse plugin.xml and EJB.

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).

Team Members




Antkiewicz, M., K. Czarnecki, and M. Stephan, "Engineering of Framework-Specific Modeling Languages", IEEE Transactions on Software Engineering, vol. 35, issue 6, pp. 795 - 824, 11/2009. [pdf]
Stephan, M., "Detection of Java EE EJB Antipattern Instances using Framework-Specific Models", Electrical and Computer Engineering, vol. MASc, Waterloo, University of Waterloo, pp. 113, 04/2009.
Lee, H M., "Model-guided Code Assistance for Framework Application Development", Electrical and Computer Engineering, vol. MASc, Waterloo, University of Waterloo, pp. 69, 04/2009.
Antkiewicz, M., "Framework-specific modeling languages", Electrical and Computer Engineering, vol. PhD: University of Waterloo, pp. 168, 09/2008.
Stephan, M., and M. Antkiewicz, "Ecore.fmp: A tool for editing and instantiating class models as feature models", Electrical and Computer Engineering, Waterloo, University of Waterloo, 05/2008. [pdf]
Lee, H M., M. Antkiewicz, and K. Czarnecki, "Towards a Generic Infrastructure for Framework-Specific Integrated Development Environment Extensions", 2nd International Workshop on Domain-Specific Program Development (DSPD’08), co-located with OOPSLA'08, Nashville, Tennessee, USA, 2008. [pdf]
Antkiewicz, M., T. Tonelli Bartolomei, and K. Czarnecki, "Automatic Extraction of Framework-Specific Models From Framework-Based Application Code", 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE), Atlanta, Georgia, USA, 11/2007. [pdf]
Antkiewicz, M., and K. Czarnecki, Framework-Specific Modeling Languages; Examples and Algorithms, : Electrical & Computer Engineering, University of Waterloo, 2007. [pdf]
Antkiewicz, M., and K. Czarnecki, Eclipse Workbench Part Interaction FSML, : Electrical & Computer Engineering, University of Waterloo, pp. 15, 2006. [pdf]
Antkiewicz, M., and K. Czarnecki, "Framework-Specific Modeling Languages with Round-Trip Engineering", ACM/IEEE 9th International Conference on Model Driven Engineering Languages and Systems (MoDELS), Genova, Italy, Springer-Verlag, pp. 692-706, 2006. [pdf]
Antkiewicz, M., "Round-Trip Engineering of Framework-Based Software using Framework-Specific Modeling Languages", 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06), Tokyo, IEEE, pp. 323 - 326, 2006.