Framework-specific modeling language

A framework-specific modeling language (FSML) is a kind of domain-specific modeling language which is designed for an object-oriented application framework.

FSMLs define framework-provided abstractions as FSML concepts and decompose the abstractions into features. The features represent implementation steps or choices.

A FSML concept can be configured by selecting features and providing values for features. Such a concept configuration represents how the concept should be implemented in the code. In other words, concept configuration describes how the framework should be completed in order to create the implementation of the concept.

Applications
FSMLs are used in model-driven development for creating models or specifications of software to be built. FSMLs enable
 * the creation of the models from the framework completion code (that is, automated reverse engineering)
 * the creation of the framework completion code from the models (that is, automated forward engineering)
 * code verification through constraint checking on the model
 * automated round-trip engineering

Examples
Eclipse Workbench Part Interaction FSML

An example FSML for modeling Eclipse Parts (that is, editors and views) and Part Interactions (for example listens to parts, requires adapter, provides selection). The prototype implementation supports automated round-trip engineering of Eclipse plug-ins that implement workbench parts and part interactions.