This lab is quite diverse. It is comprised of a group of really smart people from all over the world, each with different backgrounds, working in a friendly and welcoming environment. Being part of it has been such an enriching experience.
API
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.