<ul><li>Javier Muñoz – Miguel Llacer </li></ul><ul><li>{jmunoz,mllacer}@prodevelop.es </li></ul><ul><li>Prodevelop </li></...
Contents <ul><li>Goals </li></ul><ul><li>Selecting Transformations </li></ul><ul><li>Configuring Transformations </li></ul...
Goals <ul><li>MOSKitt is a MDSD tool </li></ul><ul><li>Model Transformations are key on MDSD  </li></ul><ul><li>MOSKitt ne...
Goals <ul><li>A common scenario in MDSD tools: </li></ul><ul><ul><li>T ransform UML2 model into DB model </li></ul></ul><u...
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Selecting a Transformation <ul><li>Two mechanisms: </li></ul>
Selecting a Transformation <ul><li>How to register a transformation? </li></ul><ul><ul><li>Define in a plug-in an extensio...
Selecting a Transformation <ul><li>Transformation interface </li></ul><ul><li>public   boolean  inputsValid(HashMap<String...
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Configuring the Transformation <ul><li>Goal : support the transformations configuration process </li></ul><ul><li>Based on...
Configuring the Transformation Model X Configuration Initializer Transformation T Model Output Config.of  Model X for Tran...
Configuring the Transformation
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Executing the Transformation <ul><li>Wizard to executed the transformation </li></ul>1.- Select  Parameters 2.- Configure ...
Executing the Transformation UML Model “ X.uml” UML2DB Transformation DB Model “ Y.sqlschema” Config.of  Model M.uml for T...
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Editing Traces <ul><li>Trace Generation: </li></ul><ul><ul><li>Based on AMW  metamodel (with modifications) </li></ul></ul...
Editing Traces <ul><li>Traces Editor: </li></ul><ul><ul><li>Based on FEFEM </li></ul></ul>Trace Links Traced Elements
Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executi...
Synchronizing on modifications UML Model “ X.uml” DB Model “ Y.sqlschema” Traces between “ X.uml” and “ Y.sqlschema”
Synchronization infrastructure <ul><li>Based on a listener that listens model changes </li></ul><ul><ul><li>Traces between...
Synchronization <ul><li>When IN model is modified, the synchronizer creates a differences model  </li></ul><ul><li>ATL tra...
Synchronization <ul><li>Finally, another ATL transformation applies updates: </li></ul><ul><ul><li>updates OUT model </li>...
Conclusions <ul><li>Technological Infrastructure: </li></ul><ul><ul><li>From Eclipse:  ATL, AMW, EMFCompare </li></ul></ul...
<ul><li>Javier Muñoz – Miguel Llacer </li></ul><ul><li>{jmunoz,mllacer}@prodevelop.es </li></ul><ul><li>Prodevelop </li></...
Upcoming SlideShare
Loading in …5
×

MOSKitt Transformations And Traceability

1,094 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

MOSKitt Transformations And Traceability

  1. 1. <ul><li>Javier Muñoz – Miguel Llacer </li></ul><ul><li>{jmunoz,mllacer}@prodevelop.es </li></ul><ul><li>Prodevelop </li></ul>MOSKitt Infrastructure to Manage Transformations and Traceability
  2. 2. Contents <ul><li>Goals </li></ul><ul><li>Selecting Transformations </li></ul><ul><li>Configuring Transformations </li></ul><ul><li>Executing Transformations </li></ul><ul><li>Editing Traces </li></ul><ul><li>Synchronizing </li></ul><ul><li>Conclusions </li></ul>
  3. 3. Goals <ul><li>MOSKitt is a MDSD tool </li></ul><ul><li>Model Transformations are key on MDSD </li></ul><ul><li>MOSKitt needs infrastructure to support Model Transformations functionality </li></ul><ul><ul><li>Invocation </li></ul></ul><ul><ul><li>Configuration </li></ul></ul><ul><ul><li>Traceability </li></ul></ul><ul><ul><li>Synchronization, </li></ul></ul><ul><ul><li>etc. </li></ul></ul>
  4. 4. Goals <ul><li>A common scenario in MDSD tools: </li></ul><ul><ul><li>T ransform UML2 model into DB model </li></ul></ul><ul><ul><li>Configure transformation </li></ul></ul><ul><ul><ul><li>E.g.: ¿How to transform inheritances? ¿Which classes must be transformed and wich not? </li></ul></ul></ul><ul><ul><li>Tweak (or create) traces between models </li></ul></ul><ul><ul><li>Keep models synchronized </li></ul></ul><ul><ul><ul><li>Changes on UML2 trigger DB model updates </li></ul></ul></ul>
  5. 5. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  6. 6. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  7. 7. Selecting a Transformation <ul><li>Two mechanisms: </li></ul>
  8. 8. Selecting a Transformation <ul><li>How to register a transformation? </li></ul><ul><ul><li>Define in a plug-in an extension to es.cv.gvcase.trmanager.transformation </li></ul></ul><ul><ul><li>Implement a class that extends es.cv.gvcase.trmanager.Transformation </li></ul></ul><ul><li>Extension properties </li></ul><ul><li>Trasformation unique identifier </li></ul><ul><li>Name </li></ul><ul><li>Transformation kind identifier </li></ul><ul><li>Priority </li></ul><ul><li>Package </li></ul><ul><li>Priority </li></ul><ul><li>Implementing class </li></ul><ul><li>Input/Output resources </li></ul><ul><li>File extension </li></ul><ul><li>Configuration producer class </li></ul>
  9. 9. Selecting a Transformation <ul><li>Transformation interface </li></ul><ul><li>public boolean inputsValid(HashMap<String, TransformedResource> inputs, List<String> errorList) </li></ul><ul><ul><li>return value : are the input models valid to apply the transformation? </li></ul></ul><ul><ul><li>inputs : a hash map where keys are the input argument names and values reference the resource: </li></ul></ul><ul><ul><ul><ul><li>TransformedResource </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>getName() </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>getPath() </li></ul></ul></ul></ul></ul><ul><ul><li>errorList : a list of strings that describe the execution result. t is shown to users. </li></ul></ul><ul><li>public boolean transform(HashMap<String, TransformedResource> inputs, HashMap<String, TransformedResource> outputs, List<String> errorList) </li></ul><ul><ul><li>return value : was the transformation carried out ok? </li></ul></ul><ul><ul><li>inputs : a hash map where keys are the input argument names and values reference the resource </li></ul></ul><ul><ul><li>outputs : a hash map where keys are the output argument names and values reference the resource. </li></ul></ul><ul><ul><li>errorList : a list of strings that describe the execution result. t is shown to users. </li></ul></ul>
  10. 10. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  11. 11. Configuring the Transformation <ul><li>Goal : support the transformations configuration process </li></ul><ul><li>Based on FEFEM infraestructure </li></ul><ul><li>Rules Catalog MM & Configuration MM </li></ul><ul><ul><li>Rules : what can be configured for transformation T? </li></ul></ul><ul><ul><li>Configuration : which are the selected options when transforming model M with transformation T? </li></ul></ul><ul><li>Configuration model is automatically generated: </li></ul><ul><ul><ul><li>transformation declared in extension point </li></ul></ul></ul>
  12. 12. Configuring the Transformation Model X Configuration Initializer Transformation T Model Output Config.of Model X for Transf. T Rules Catalog for Transf. T
  13. 13. Configuring the Transformation
  14. 14. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  15. 15. Executing the Transformation <ul><li>Wizard to executed the transformation </li></ul>1.- Select Parameters 2.- Configure 3.- Validate inputs 4.- Show results
  16. 16. Executing the Transformation UML Model “ X.uml” UML2DB Transformation DB Model “ Y.sqlschema” Config.of Model M.uml for Transf. UML2DB Traces between “ X.uml” and “ Y.sqlschema”
  17. 17. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  18. 18. Editing Traces <ul><li>Trace Generation: </li></ul><ul><ul><li>Based on AMW metamodel (with modifications) </li></ul></ul><ul><ul><ul><li>Traced Models </li></ul></ul></ul><ul><ul><ul><ul><ul><li>- n models </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>- no input/output semantic </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Traced Links </li></ul></ul></ul><ul><ul><ul><ul><ul><li>- links between arbitrary elements </li></ul></ul></ul></ul></ul>
  19. 19. Editing Traces <ul><li>Traces Editor: </li></ul><ul><ul><li>Based on FEFEM </li></ul></ul>Trace Links Traced Elements
  20. 20. Goals <ul><li>A common scenario in MDSD tools: </li></ul>Selecting a Transformation Configuring the Transformation Executing the Transformation Editing Traces Synchronizing on modifications
  21. 21. Synchronizing on modifications UML Model “ X.uml” DB Model “ Y.sqlschema” Traces between “ X.uml” and “ Y.sqlschema”
  22. 22. Synchronization infrastructure <ul><li>Based on a listener that listens model changes </li></ul><ul><ul><li>Traces between models are required </li></ul></ul><ul><li>How to implement a Synchronizer? </li></ul><ul><ul><li>Define an extension to es.cv.gvcase.modelsync.core.Listener </li></ul></ul><ul><ul><li>Implement a class that extends es.cv.gvcase.modelsync.core.listener.Synchronizer </li></ul></ul><ul><ul><ul><li>just one method: elementChanged() </li></ul></ul></ul>
  23. 23. Synchronization <ul><li>When IN model is modified, the synchronizer creates a differences model </li></ul><ul><li>ATL transformation must be implemented to generate a new differences model </li></ul><ul><ul><li>What modifications must be applied to OUT model? </li></ul></ul>
  24. 24. Synchronization <ul><li>Finally, another ATL transformation applies updates: </li></ul><ul><ul><li>updates OUT model </li></ul></ul><ul><ul><li>updates Traces model </li></ul></ul>
  25. 25. Conclusions <ul><li>Technological Infrastructure: </li></ul><ul><ul><li>From Eclipse: ATL, AMW, EMFCompare </li></ul></ul><ul><ul><li>From MOSKitt: </li></ul></ul><ul><ul><ul><li>Transformation Registry </li></ul></ul></ul><ul><ul><ul><li>Transformations Configuration </li></ul></ul></ul><ul><ul><ul><li>Models Traceability and Synchronization </li></ul></ul></ul><ul><li>It's in practice!! </li></ul><ul><li>Future: </li></ul><ul><ul><li>Feedback & evolution </li></ul></ul><ul><ul><li>New functionalities? Sync. on demand? </li></ul></ul>
  26. 26. <ul><li>Javier Muñoz – Miguel Llacer </li></ul><ul><li>{jmunoz,mllacer}@prodevelop.es </li></ul><ul><li>Prodevelop </li></ul>MOSKitt Infrastructure to Manage Transformations and Traceability

×