Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ui Modeling In Action With PMF, e4(XWT) And EGF

4,366 views

Published on

  • Be the first to comment

Ui Modeling In Action With PMF, e4(XWT) And EGF

  1. 1. UI modeling in Action with PMF, e4 and EGF Yves Yang – Soyatec Benoît Langlois – Thales/EPM Thomas Guiu - Soyatec
  2. 2. Agenda <ul><li>Introduction </li></ul><ul><li>PMF </li></ul><ul><li>EGF </li></ul><ul><li>PMF to XWT with EGF </li></ul><ul><li>Conclusion </li></ul>
  3. 3. Why UI modeling in Software Engineering? <ul><li>Current Practice </li></ul><ul><ul><li>Writing UI (User Interface) code for a target platform </li></ul></ul><ul><ul><li>Ex: JFace, SWT code </li></ul></ul><ul><li>Main Drawbacks </li></ul><ul><ul><li>Time-consuming activity </li></ul></ul><ul><ul><li>Scalability issue </li></ul></ul><ul><ul><li>Target platform-dependent </li></ul></ul><ul><ul><ul><li>Maintenance issue </li></ul></ul></ul><ul><ul><ul><li>UI Technology is changing quickly </li></ul></ul></ul>
  4. 4. Why UI modeling in Software Engineering? <ul><li>Paradigm shift </li></ul><ul><ul><li>Modeling UI in order to abstract UI description: </li></ul></ul><ul><ul><ul><li>Creating a platform-independent UI model </li></ul></ul></ul><ul><ul><ul><li>Next, targeting platform-specific UI code </li></ul></ul></ul><ul><li>This implies: </li></ul><ul><ul><li>A platform-independent UI metamodel  PMF </li></ul></ul><ul><ul><li>A generation engine to target a UI platform  EGF </li></ul></ul>
  5. 5. From PMF to UI Code conforms to conforms to conforms to M1: Model level M2: Metamodel level
  6. 6. From PMF to UI Code conforms to conforms to conforms to M1: Model level M2: Metamodel level XWT Code of purcharse order UI Purcharse order UI
  7. 7. Agenda <ul><li>Introduction </li></ul><ul><li>PMF </li></ul><ul><li>EGF </li></ul><ul><li>PMF to XWT with EGF </li></ul><ul><li>Conclusion </li></ul>
  8. 8. Purpose <ul><ul><li>PMF is a high Extensible Exterprise Modeling Solution for data presentation </li></ul></ul>
  9. 9. Purpose <ul><li>Abstraction </li></ul><ul><ul><li>Data Model </li></ul></ul><ul><ul><li>UI Model </li></ul></ul><ul><ul><li>Data Binding technology </li></ul></ul><ul><ul><li>Target programming language </li></ul></ul><ul><li>Extensibility & Customization </li></ul><ul><ul><li>UI Model </li></ul></ul><ul><ul><li>Model Transformation engine </li></ul></ul><ul><ul><li>Integration with other tools such as DSL </li></ul></ul><ul><li>Top-down approach </li></ul>PIM PSM
  10. 10. Purpose <ul><li>Runtime mode </li></ul><ul><ul><li>Interactive </li></ul></ul><ul><ul><ul><li>Standalone </li></ul></ul></ul><ul><ul><ul><li>Embedded in other tools </li></ul></ul></ul><ul><ul><li>Automating </li></ul></ul><ul><ul><ul><li>Batch for integration in build system </li></ul></ul></ul><ul><li>Users </li></ul><ul><ul><li>Framework developer </li></ul></ul><ul><ul><li>Application designer </li></ul></ul>
  11. 11. Benefices <ul><ul><li>Make development of UI’s easier </li></ul></ul><ul><ul><li>More productive </li></ul></ul><ul><ul><li>Separate roles in UI development to enable specialization and customization </li></ul></ul><ul><ul><li>Integrate UI development with other Eclipse tool stack </li></ul></ul>
  12. 12. Architecture
  13. 13. Agenda <ul><li>Introduction </li></ul><ul><li>PMF </li></ul><ul><li>EGF </li></ul><ul><li>PMF to XWT with EGF </li></ul><ul><li>Conclusion </li></ul>
  14. 14. What is EGF? <ul><ul><li>EGF (Eclipse Generation Factories) is an Eclipse open source project under the EMFT project . </li></ul></ul><ul><ul><li>Purpose : provide a model-based generation framework </li></ul></ul><ul><ul><li>Operational objectives : </li></ul></ul><ul><ul><ul><li>Supporting complex, large-scale and customizable generations </li></ul></ul></ul><ul><ul><ul><li>Promoting the constitution of generation portfolios in order to capitalize on generation solutions </li></ul></ul></ul><ul><ul><ul><li>Providing an extensible generation structure </li></ul></ul></ul>
  15. 15. Generative Software What target-platform? Generation reusability? Generation orchestration? Generation data, which ones, where? One-click generation solution? Update strategy of the produced artifacts? Combining [model|text|dsl]-to-[Model|text|dsl]? How to develop & test? Generation customization? Generation scope? Best practices, guidance? Generation workflow? Executability? Distribution? Merging Generation? Performance, scalability? Variability? Product lines? Integration of new language? Multiplicity of languages and engines? Dealing with generation complexity Issue An integrated and extensible software factory framework Proposed solution Software Industrialization Purpose
  16. 16. Generation units of EGF
  17. 17. Generation units of EGF works with uses Factory Component  Composite generation unit  Location to declare: - Generation data - Generation orchestration
  18. 18. Generation units of EGF works with Portfolio uses Capitalization Factory Component  Consistent set of Factory Components  Meets the need to have off-the-shelf generation solutions
  19. 19. Generation units of EGF works with uses Implementation Task (e.g., Java) Factory Component  The smallest generation unit  Reference to executable code in a given language 0 1 0 1
  20. 20. Generation units of EGF works with uses Pattern Factory Component Systematic behavior <ul><li>Notation to define systematic behavior applicable onto a resource </li></ul><ul><li>Declarative style </li></ul><ul><li>The behavior conforms to a language (e.g., Jet, Java) </li></ul>
  21. 21. Generation units of EGF works with Portfolio uses Capitalization Implementation Task (e.g., Java) Pattern Factory Component Systematic behavior Today 0 1 0 1
  22. 22. EGF EGF Structure
  23. 23. Activity Hierarchy Activity Factory Component Task […] Activity Type
  24. 24. Activity Hierarchy Activity Factory Component Task Java Task [Language] Task […] Java Class 1 implementation Activity Type Implementation
  25. 25. Activity and Production Plan Activity Factory Component Task invocation * Contract Container Contract * 0-1 Production Plan 0-1 Activity Invocation * Invocation Contract * contract
  26. 26. Activity and Production Plan Activity Factory Component Task invocation * Contract Container Contract * 0-1 Production Plan 0-1 Activity Invocation * Contract IN Contract OUT Contract IN/OUT Contract
  27. 27. EGF Structure <ul><li>Storage </li></ul><ul><ul><li>In FCore file: factory components + tasks </li></ul></ul><ul><li>Execution </li></ul><ul><ul><li>Dynamic </li></ul></ul><ul><ul><li>Resolution of platform / workspace environment </li></ul></ul><ul><ul><li>Structure check </li></ul></ul><ul><li>Extensibility </li></ul><ul><ul><li>EGF can be enriched by the principle of model extension </li></ul></ul><ul><ul><ul><li>Discovery at runtime </li></ul></ul></ul><ul><ul><li>Java Task and production plan are examples of implementation and workflow today </li></ul></ul>
  28. 28. Pattern – Definition <ul><li>Definition: </li></ul><ul><ul><li>A pattern is a solution to a recurrent generation problem </li></ul></ul><ul><li>Purpose </li></ul><ul><ul><li>Applying a systematic behavior onto a resource </li></ul></ul><ul><ul><li>Clearly dissociating the specification (external view) from the implementation (internal view) of the behavior </li></ul></ul><ul><ul><li>Reusing and customizing a pattern in different contexts </li></ul></ul><ul><ul><li>Supporting multilingual patterns in order to apply the best programming language to a situation, and then supporting multi-paradigm (M2T, M2M, T2M, T2T) </li></ul></ul>
  29. 29. EGF PATTERN
  30. 30. Pattern Relationships Pattern inheritance Pattern delegation Pattern injection Pattern callback Pattern extension extends (not available yet) The Pattern orchestration specifies the pattern relationships Possibility to combine different pattern relationships in the same orchestration Multilingual call
  31. 31. Pattern execution Big Picture Result Final Result Pattern Execution onto a resource Resource, e.g. Model Pattern Pattern Pattern Pattern Execution Process Pattern execution engines, e.g. for Jet, Java Optional - Pattern reporter for final form Pattern Strategy Patterns selection Way to apply patterns
  32. 32. Agenda <ul><li>Introduction </li></ul><ul><li>PMF </li></ul><ul><li>EGF </li></ul><ul><li>PMF to XWT with EGF </li></ul><ul><li>Conclusion </li></ul>
  33. 33. « PMF to (e4)XWT » Generation xwt file runtime
  34. 34. « PMF to (e4)XWT » Generation realizes Provides: - PMF model - data model .ecore uses UI Provides: - domain data UI Designer UI User
  35. 35. « PMF to (e4)XWT » Generation realizes portfolio PMF/XWT Designer/ Developer
  36. 36. Generation description Creation of the application description files; e4-specific  Declaration of menus, commands, part layouts 1 2 3 4 Creation of the Java part of the XWT components; XWT-specific Creation of XWT files; XWT-specific  Description of the components, supported events Creation of the project 2 3 4 1
  37. 37. Project Creation & Configuration Files
  38. 38. Project Creation & Configuration Files PMF model Create Project Java Pattern
  39. 39. Project Creation & Configuration Files PMF model Jet Pattern
  40. 40. « Create Manifest » Pattern explained <ul><li>Objective: </li></ul><ul><ul><li>Producing the « MANIFEST.MF » file </li></ul></ul><ul><li>Input: </li></ul><ul><ul><li>PMF model </li></ul></ul><ul><ul><li>Pattern parameter: Application node of the PMF model </li></ul></ul><ul><li>Means: </li></ul><ul><ul><li>Using a Jet-based Pattern for « Model-to-text » transformation </li></ul></ul><ul><ul><li>Using a reporter for persistence of the pattern result </li></ul></ul>
  41. 41. « Create Manifest » Pattern explained Create Manifest Base Inheritance
  42. 42. « Create Manifest » Pattern explained Create Manifest Base Application parameter Inheritance
  43. 43. « Create Manifest » Pattern explained applied orchestration Polymorphism
  44. 44. « Create Manifest » Pattern explained applied orchestration Polymorphism
  45. 45. Parts Creation – XWT Files
  46. 46. Parts Creation – XWT Files Forms / XWT file mapping
  47. 47. Parts Creation – XWT Files Forms / XWT file mapping Model-driven pattern strategy used
  48. 48. Parts Creation – XWT Files Forms / XWT file mapping Form_xwt Jet Pattern 1
  49. 49. Parts Creation – XWT Files Forms / XWT file mapping Collection Jet Pattern 2 1
  50. 50. Parts Creation – XWT Files Forms / XWT file mapping DataField Jet Pattern 2 1 3
  51. 51. Parts Creation – XWT Files Forms / XWT file mapping Reference Jet Pattern 2 1 3 4
  52. 52. Summary Engineering activity Multi-target
  53. 53. Summary PMF-to-XWT Portfolio based on customization Eclipse Component Off-The-Shelf solution Variants Generation Portfolio
  54. 54. Development Environment <ul><li>Design </li></ul><ul><ul><li>PMF: Eclipse Galileo, 3.5.x </li></ul></ul><ul><ul><li>EGF: Eclipse Galileo, > 3.5.1 </li></ul></ul><ul><li>Runtime </li></ul><ul><ul><li>XWT: e4/Helios </li></ul></ul>
  55. 55. Agenda <ul><li>Introduction </li></ul><ul><li>PMF </li></ul><ul><li>EGF </li></ul><ul><li>PMF to XWT with EGF </li></ul><ul><li>Conclusion </li></ul>
  56. 56. Conclusion <ul><li>Regarding the PMF-to-(e4)XWT generation with EGF </li></ul><ul><ul><li>Maturity level: Prototype, but promising </li></ul></ul><ul><ul><li>Not covered: events, multi-forms </li></ul></ul><ul><ul><li>Interest to have an integrated generation tool with EGF </li></ul></ul><ul><li>Improvement #1 </li></ul><ul><ul><li>1. Code-oriented to model-based paradigm shift, </li></ul></ul><ul><ul><li>2. Engineering-driven activities: producing UI, UI tests, doc… </li></ul></ul><ul><ul><li>Could be applied to other engineering activities, such as diagram </li></ul></ul><ul><li>Improvement #2 </li></ul><ul><ul><li>Interest of off-the-shelf factories </li></ul></ul><ul><ul><li>Future work: Pattern contribution and customization for flexible generations </li></ul></ul>
  57. 57. UI modeling in Action Thank You! EGF is supported by the European Project OPEES
  58. 58. UI modeling in Action Additionnal Slides
  59. 59. Demo #1 EGF – EMF Wrapper Library.fcore file contains Task and Factory component invocation orchestration Main Factory Component
  60. 60. Demo #1 EGF – EMF Wrapper Library.fcore file contains Task reference Contract value for a contract (= task parameter) implementation Task Java Class Java Task usage
  61. 61. Demo #1 EGF – EMF Wrapper Library.fcore file contains Factory component contracts Factory component reference Factory Component usage Pattern viewpoint Task invocation orchestration
  62. 62. In/Output relationships Quantity’s Properties Amount’s Properties
  63. 63. EGF – Pattern – External View Super-Pattern Pattern Pattern Type delegation Language Type 0..n variable 0..n parameter 1 nature Query Constraint 0..1 preCondition <ul><li>Definition: </li></ul><ul><li>query/parameter: query for object selection onto a resource </li></ul><ul><li>nature: language used for the pattern implementation </li></ul><ul><li>preCondition/Constraint: constraint to be verified before application </li></ul><ul><li>variable/Type: local variable declaration for the pattern implementation </li></ul>
  64. 64. EGF – Pattern – External View EClassifierGen EClass Gen EStructural Feature Gen EClass delegation Jet Example <ul><li>The EClassGen pattern is applied on a Ecore resource </li></ul><ul><li>Objects selected on the ecore resource: EClass instances </li></ul><ul><li>It specializes the EClassifierGen pattern </li></ul><ul><li>It applies a model-to-text generation in Jet </li></ul><ul><li>Its also applies a generation on its features by delegation to the EStructuralFeatureGen pattern </li></ul>ECore Resource element nature Query
  65. 65. EGF – Pattern – Implementation View Methods which implement the pattern Order to execute the methods header: typically used for the Jet header init: method for pattern initialization (e.g., variable initialization) A method editor allows to edit pattern methods

×