There are two sources of complexity in the design of the fmp plug-in: extensible metamodel and constraint propagation & resolution.

Overview of the API

  • Metamodel - explains the metacircular design of the fmp metamodel
  • Constraints - explains the use of the JavaBDD package for constraint propagation and conflict resolution
  • Role Query - a utility class used to determine location of the element (i.e., model, metamodel, properties), element type (i.e., root feature, solitary feature, grouped feature) and property role (i.e., name, min occur, type)
  • Model Navigation - a utility class used to navigate through a feature model tree
  • Model Manipulation - a utility class implementing common operation on the feature model (i.e., copy, configure, remove, and support for direct editing).
  • Commands - frequently used commands.
  • Model access - accessing feature models without the fmp plug-in.