Notes
Slide Show
Outline
1
TPTP EMF Model
  • Performance and scalability
2
EMF in TPTP
  • Code generation from Rose models
  • Test definition code generation from JET Templates
  • EMF Reflection API and Metadata definition
    • UI implementation
    • Generic methods to save and delete object instances.
  • Customizations on default implementations
    • Use of model aspects and aggregated models
    • Load/Unload/Save/Delete mechanisms
    • Extendable event loading and object lookup services
    • Large resource support and virtual base object (HierarchyEObject)
3
Model structure
4
Model structure (cont)
  • Root packages implemented in their own source folder (originally in separate plugins)
    • Allows flexible composition of models
    • Requires special cross package association
  • Use of proxy objects (for UI) for each heavy objects
    • Avoids unnecessary large resources’ loading
  • Model aspects and aggregated data
    • Allows better model handling
    • Used especially for large model instances (cbe, trace packages)
5
Model processing
  • XMI Resource customization
    • Custom Load and Unload
    • Custom Save and object/resource Delete
    • Custom URIConvertor
    • Custom lookup service
  • Event loaders
    • XML based event loading
    • Flexible loaders’ composition
  • Model based queries
    • Common query model (not dependent on the data store type)
    • Query engine for in memory objects
    • SQL based query engine using the common query model
6
Model processing (cont)
7
Model Scalability and Performance
  • Using proxies and partial model loading, use queries to retrieve the relevant data only (this is not used yet)
  • Use optimized traversal algorithms, use results set from query based navigation
  • Things you may want to avoid for big models (especially for generated code)
    • ECoreUtil.CrossReferencer and subclasses
    • EObject.eContents() and related methods
    • EMF adapters at each object level
    • Default ID based lookup implementation
    • The creation of lots of EMF proxy objects (cross resource associations)
8
Future improvements
  • Improve event loader interactions and leverage better the model aspects (using compressed event formats/structures), use of methods that directly load the events in the resource (initial work done in Log area with the CBEtoCSVOutputter)
  • Enhance the query support at resource/resource set level
  • Database backend for object/resource persistence
  • Customize EObject, EList and EMap for better memory utilization (initial work done in HierarchyEObject and large resource support paging list)
  • Improve the scalability of UI in order to handle large model instances (UI paging, extensive use of queries)
  • Improve model versioning and migration support