Migrating a large
modelling environment
  from UML/XML to
     GMF/Xtext



  Codegeneration Conference 2010, Cambridge, UK
Moritz Eysholdt




Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Moritz Eysholdt

• Software Architect and
 Consultant at itemis




               Moritz Eysholdt, itemis - Johannes Rupp...
Moritz Eysholdt

• Software Architect and
  Consultant at itemis
• Committer at the Eclipse
  Projects Xtext, Xpand and
  ...
Moritz Eysholdt

• Software Architect and
  Consultant at itemis
• Committer at the Eclipse
  Projects Xtext, Xpand and
  ...
Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
• Specialized in Model Driven Software Development




              Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
• Specialized in Model Driven Software Development
• Founded in 2003




              Moritz Eysholdt, itemis - Johannes ...
• Specialized in Model Driven Software Development
• Founded in 2003
• 140 Employes




              Moritz Eysholdt, ite...
• Specialized in Model Driven Software Development
• Founded in 2003
• 140 Employes
• Branches in Germany, Swiss, France a...
• Specialized in Model Driven Software Development
• Founded in 2003
• 140 Employes
• Branches in Germany, Swiss, France a...
• Specialized in Model Driven Software Development
• Founded in 2003
• 140 Employes
• Branches in Germany, Swiss, France a...
• Specialized in Model Driven Software Development
• Founded in 2003
• 140 Employes
• Branches in Germany, Swiss, France a...
Johannes Rupprecht




 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Johannes Rupprecht

• Chief Software Architect of
 VSA group




               Moritz Eysholdt, itemis - Johannes Rupprec...
Johannes Rupprecht

• Chief Software Architect of
  VSA group
• 2005-2008 IT project
  manager of the biggest VSA
  softwa...
Johannes Rupprecht

• Chief Software Architect of
  VSA group
• 2005-2008 IT project
  manager of the biggest VSA
  softwa...
Group




Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Group

• VSA:Verrechnungsstelle der Süddeutschen Apotheken
 (Clearing House of the South German Pharmacies)




          ...
Group

• VSA:Verrechnungsstelle der Süddeutschen Apotheken
  (Clearing House of the South German Pharmacies)
• Company fou...
Group

• VSA:Verrechnungsstelle der Süddeutschen Apotheken
  (Clearing House of the South German Pharmacies)
• Company fou...
Group

• VSA:Verrechnungsstelle der Süddeutschen Apotheken
  (Clearing House of the South German Pharmacies)
• Company fou...
Group

• VSA:Verrechnungsstelle der Süddeutschen Apotheken
  (Clearing House of the South German Pharmacies)
• Company fou...
Software Development at VSA




     Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Software Development at VSA

• 150 developers in several projects in several locations




                Moritz Eysholdt...
Software Development at VSA

• 150 developers in several projects in several locations
• Internal systems, like the two cl...
Software Development at VSA

• 150 developers in several projects in several locations
• Internal systems, like the two cl...
Software Development at VSA

• 150 developers in several projects in several locations
• Internal systems, like the two cl...
Software Development at VSA

• 150 developers in several projects in several locations
• Internal systems, like the two cl...
Development
before Eclipse
    based
  modeling
VSA has a
framework called
  marvin. Why?
Framework
 development
started in 2000
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
#/)/%6,-'20
           !                #&@!!!!!!!!7'G%!                                JK3L%6,-'20
                      ...
Reimplementation of all systems




       Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
 reimplementation of almost all important VSA...
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
  reimplementation of almost all important VS...
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
  reimplementation of almost all important VS...
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
  reimplementation of almost all important VS...
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
  reimplementation of almost all important VS...
Reimplementation of all systems

• VSA planned in 2000 and 2002 to start the
  reimplementation of almost all important VS...
Systems based on
     marvin
9&:%          <:9%
                           $685)5;6,;%   $685)5;6,;%
                            6,;);)65%      =)6>5%
...
85&
                  45/&       63#2)273!7&
                               9)3:2&        ';<&
               63#2)273!7&
...
The new marvin
modeling project
Why a new
modeling for
  marvin?
Problems with the UML Modelling




       Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Problems with the UML Modelling

• Opening a UML module
 lasted up to one hour




              Moritz Eysholdt, itemis -...
Problems with the UML Modelling

• Opening a UML module
  lasted up to one hour
• Opening a big UML diagram
  lasted up to...
Problems with the UML Modelling

• Opening a UML module
  lasted up to one hour
• Opening a big UML diagram
  lasted up to...
Problems with the UML Modelling

• Opening a UML module
  lasted up to one hour
• Opening a big UML diagram
  lasted up to...
Problems with the UML Modelling




       Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Problems with the UML Modelling

• Modelling was not intuitive, because UML was “abused”
 to model something, that can’t b...
Problems with the UML Modelling

• Modelling was not intuitive, because UML was “abused”
  to model something, that can’t ...
Problems with the UML Modelling

• Modelling was not intuitive, because UML was “abused”
  to model something, that can’t ...
Problems with the UML Modelling

• Modelling was not intuitive, because UML was “abused”
  to model something, that can’t ...
Problems with the UML Modelling




       Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Problems with the UML Modelling

• Referencing other model elements was done only
 textual, not by model references




  ...
Problems with the UML Modelling

• Referencing other model elements was done only
  textual, not by model references
• No ...
Problems with the UML Modelling

• Referencing other model elements was done only
  textual, not by model references
• No ...
Problems with the UML Modelling

• Referencing other model elements was done only
  textual, not by model references
• No ...
Problems with the UML Modelling

• Referencing other model elements was done only
  textual, not by model references
• No ...
Problems with the UML Modelling

• Referencing other model elements was done only
  textual, not by model references
• No ...
Initializing




Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Initializing

• Target was to massively
 improve tool handling and
 performance




               Moritz Eysholdt, itemis...
Initializing

• Target was to massively
  improve tool handling and
  performance
• Four different offerers
  made suggest...
Initializing

• Target was to massively
  improve tool handling and
  performance
• Four different offerers
  made suggest...
Project Start




Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Project Start

• Fixed price contract
 including VSA developers
 taking part in the project to
 ensure training on the new...
Project Start

• Fixed price contract
  including VSA developers
  taking part in the project to
  ensure training on the ...
Project Start

• Fixed price contract
  including VSA developers
  taking part in the project to
  ensure training on the ...
Why Eclipse Modeling




  Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Why Eclipse Modeling

• Large ecosystem of
 modeling tools and
 frameworks available like in
 no other platform:
 • EMF
 •...
Why Eclipse Modeling

• Large ecosystem of
 modeling tools and
 frameworks available like in
 no other platform:
 • EMF
 •...
Basic Objectives




Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Basic Objectives

• Textual modeling for all languages with Xtext




               Moritz Eysholdt, itemis - Johannes Ru...
Basic Objectives

• Textual modeling for all languages with Xtext
• Graphical modeling with GMF for selected aspects of
 c...
Basic Objectives

• Textual modeling for all languages with Xtext
• Graphical modeling with GMF for selected aspects of
  ...
Basic Objectives

• Textual modeling for all languages with Xtext
• Graphical modeling with GMF for selected aspects of
  ...
Basic Objectives

• Textual modeling for all languages with Xtext
• Graphical modeling with GMF for selected aspects of
  ...
Two language families,
   five languages
XML                                +                                 UML
workflowdef.xsd datadict.xsd
                     ...
<?xml version="1.0" encoding="ISO-8859-15"?>
<dataDictionary
    xmlns="http://www.vsa.de/datadict/1.45.2.4">
  <domain>
 ...
?xml version="1.0" encoding="ISO-8859-15"?
dataDictionary
                                                     remove XML-...
dataDictionary
                                                                  remove metadata
 domain
   databaseMappin...
dataDictionary
                                         remove default/derivable values
 domain
   databaseMapping tableNa...
dataDictionary
                                          summarize columns/attributes
 domain
   databaseMapping tableName...
remove more noise
domain
  databaseMapping          "VDOMAIN"




     superClass name="vsa.marvin.persist.DefaultPersiste...
design convenient syntax
domain-language-v2.0 package vsa.marvin.mod.persist.examples.reference.views.joins;

import vsa.m...
Let’s build this
language in less than
      a minute
datadict.xsd
workflowdef.xsd    Domain.xtext          View.xtext




                 Workflow.xtext   ObjectModel.xtext Mas...
Models are code!

• This is good, because we know how to handle code:
 • Compare, Merge
 • Version Control
 • Copy’n’paste...
Architecture


            Xtend M2M


<XML/>                                    Xtext
 Model                             ...
Architecture


            Xtend M2M


<XML/>                EMF                 Xtext
                     Model
 Model  ...
Architecture
  Structure Def:
Ecore derived from
   XML Schema                  Xtend M2M


               <XML/>         ...
Architecture
  Structure Def:                                                          Structure Def:
Ecore derived from  ...
Architecture
  Structure Def:                                                          Structure Def:
Ecore derived from  ...
Architecture
  Structure Def:                                                          Structure Def:
Ecore derived from  ...
Migrate XML Models


                               Xtend M2M
XMLResource.load()                                          ...
Integrate Legacy Code Generator


                             Xtend M2M


              <XML/>                           ...
Generic Integration Test
                    (Roundtrip)

                                 Xtend M2M
XMLResource.load()   ...
Generic Integration Test
       This Tests:
                    (Roundtrip)

                                 Xtend M2M
XM...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
Generic Integration Test
       This Tests:
                    (Roundtrip)
                                   XML2Xtext
 ...
GMF Integration
                                                                                                        (h...
GMF Integration
                                                                                                        (h...
GMF Integration
                                                          (how to persist diagrams)




Text              ...
GMF Integration - Consequences




       Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
GMF Integration - Consequences

• No need for the graphical editor to cover complete model
 • Cheaper
 • Only use graphica...
GMF Integration - Consequences

• No need for the graphical editor to cover complete model
 • Cheaper
 • Only use graphica...
Showtime!
Incremental Build
Content Assist,
Cross References,
   Navigation
Validation
Formatting
Outline
Domain Diagram:
A canvas to pin up files
Lessons Learned
Migration

• A 100% migration of the existing models was necessary




               Moritz Eysholdt, itemis - Johannes R...
Migration

• A 100% migration of the existing models was necessary
• About 75 CVS Modules to migrate
• At early time in pr...
Migration

• A 100% migration of the existing models was necessary
• About 75 CVS Modules to migrate
• At early time in pr...
Training of the users

• Even for very experienced users it is helpful to be trained
 on a complete new way to model and n...
Training of the users

• Even for very experienced users it is helpful to be trained
  on a complete new way to model and ...
Distributed project




 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
Distributed project

• Project was distributed over four locations




               Moritz Eysholdt, itemis - Johannes R...
Distributed project

• Project was distributed over four locations
• Shared infrastructure from the very beginning
 • Subv...
Distributed project

• Project was distributed over four locations
• Shared infrastructure from the very beginning
 • Subv...
Distributed project

• Project was distributed over four locations
• Shared infrastructure from the very beginning
 • Subv...
How to minimize complexity




     Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
How to minimize complexity

• Use stable versions of the
 frameworks




                 Moritz Eysholdt, itemis - Johann...
How to minimize complexity

• Use stable versions of the
    frameworks
•   Use GMF only if necessary




                ...
How to minimize complexity

• Use stable versions of the
    frameworks
•   Use GMF only if necessary
•   Migrate existing...
How to minimize complexity

• Use stable versions of the
    frameworks
•   Use GMF only if necessary
•   Migrate existing...
Questions?
Discussion
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Migrating a large modelling environment from UML/XML to GMF/Xtext
Upcoming SlideShare
Loading in...5
×

Migrating a large modelling environment from UML/XML to GMF/Xtext

2,478

Published on

If you use UML to drive code generation, what do you do when a UML model grows so large that the tool needs 30 minutes to open it? What if it turns out that UML doesn't provide the expressiveness you need? What if your UML Editor barely provides feedback about the validity of your models and the turnaround time from modeling to code-generation and compilation is somewhere between setting up a new can of coffee and reading a day's amount of slashdot.org news? Time to look for a different modeling solution... read more: http://www.codegeneration.net/cg2010/sessioninfo.php?session=53

This material has been presented at the Codegeneration 2010 Conference in Cambridge, UK by Moritz Eysholdt and Johannes Rupprecht.

A German version has been presented at the Seacon 2010 Conference in Hamburg, Germany:
http://www.sigs-datacom.de/seacon/konferenz/sessiondetails.html?tx_mwconferences_pi1[showUid]=276&tx_mwconferences_pi1[pointer]=0&tx_mwconferences_pi1[mode]=1&tx_mwconferences_pi1[s]=0

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,478
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
80
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide









































































































































  • Transcript of "Migrating a large modelling environment from UML/XML to GMF/Xtext"

    1. 1. Migrating a large modelling environment from UML/XML to GMF/Xtext Codegeneration Conference 2010, Cambridge, UK
    2. 2. Moritz Eysholdt Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    3. 3. Moritz Eysholdt • Software Architect and Consultant at itemis Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    4. 4. Moritz Eysholdt • Software Architect and Consultant at itemis • Committer at the Eclipse Projects Xtext, Xpand and EMF Compare Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    5. 5. Moritz Eysholdt • Software Architect and Consultant at itemis • Committer at the Eclipse Projects Xtext, Xpand and EMF Compare • Speaker at various international conferences Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    6. 6. Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    7. 7. • Specialized in Model Driven Software Development Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    8. 8. • Specialized in Model Driven Software Development • Founded in 2003 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    9. 9. • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    10. 10. • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes • Branches in Germany, Swiss, France and Canada Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    11. 11. • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes • Branches in Germany, Swiss, France and Canada • Strategic Member of the Eclipse Foundation Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    12. 12. • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes • Branches in Germany, Swiss, France and Canada • Strategic Member of the Eclipse Foundation Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    13. 13. • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes • Branches in Germany, Swiss, France and Canada • Strategic Member of the Eclipse Foundation • http://twitter.com/itemis Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    14. 14. Johannes Rupprecht Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    15. 15. Johannes Rupprecht • Chief Software Architect of VSA group Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    16. 16. Johannes Rupprecht • Chief Software Architect of VSA group • 2005-2008 IT project manager of the biggest VSA software project Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    17. 17. Johannes Rupprecht • Chief Software Architect of VSA group • 2005-2008 IT project manager of the biggest VSA software project • 2002-2005 Leading architect and one of the developers of the VSA framework marvin Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    18. 18. Group Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    19. 19. Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    20. 20. Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) • Company founded in 1983 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    21. 21. Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) • Company founded in 1983 • Owned by 7,000 German pharmacists Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    22. 22. Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) • Company founded in 1983 • Owned by 7,000 German pharmacists • 1,100 employees Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    23. 23. Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) • Company founded in 1983 • Owned by 7,000 German pharmacists • 1,100 employees • Three business units: • VSA: Clearing for German pharmacies • azh: Clearing and IT for German health care professionals • awinta: Pharmacy administration systems Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    24. 24. Software Development at VSA Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    25. 25. Software Development at VSA • 150 developers in several projects in several locations Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    26. 26. Software Development at VSA • 150 developers in several projects in several locations • Internal systems, like the two clearing systems Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    27. 27. Software Development at VSA • 150 developers in several projects in several locations • Internal systems, like the two clearing systems • Online systems for the clearing customers Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    28. 28. Software Development at VSA • 150 developers in several projects in several locations • Internal systems, like the two clearing systems • Online systems for the clearing customers • Pharmacy administration systems Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    29. 29. Software Development at VSA • 150 developers in several projects in several locations • Internal systems, like the two clearing systems • Online systems for the clearing customers • Pharmacy administration systems • Development mostly in Java, but also C#, C++, C, Objective-C Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    30. 30. Development before Eclipse based modeling
    31. 31. VSA has a framework called marvin. Why?
    32. 32. Framework development started in 2000
    33. 33. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! !!!!!!!!!!!!!!<'()'(! marvin #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    34. 34. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! !!!!!!!!!!!!!!<'()'(! marvin #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! No JPA, no *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! Hibernate &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    35. 35. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! !!!!!!!!!!!!!!<'()'(! Just EJB 1.3, marvin no Spring #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    36. 36. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! Not many web frame- !!!!!!!!!!!!!!<'()'(! works, just Struts marvin #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    37. 37. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! !!!!!!!!!!!!!!<'()'(! marvin #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! No Eclipse modeling, &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! no MDA hype yet! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    38. 38. #/)/%6,-'20 ! #&@!!!!!!!!7'G%! JK3L%6,-'20 ! !!!!!!!!!!!!!!<'()'(! marvin #/)/%6,-'20!%! JK3L%6,-'20% !"#$%%!&'()'(! *4/+0'( ! *4/+0'(! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&'()'(!*++,-./0-12! 3145,'!612.'+0! ='<<15(.'<'()-.'! &'<<-12! &'()-.'! 71(891:!"2;-2'! ")'20<'()-.'! L-.'2<-2;!&'()-.'! ='+1(0<'()-.'!>?'0:1(8!@(-20-2;AB ! 71(891:%OD+,P ! L1.8-2; ! 612N;5(/0-12<<'()-.'! &'()-.'! 71(891:!&0'+<! *.0-)-0-'<! C<'(!*4D-2-<0(/0-12! &'.5(-0E! L-.'2.'! &'()-.'! $5<-2'<<!FGH'.0<!I!$5<-2'<<!&'()-.'<! @'(<-<0'2.'! =',/0-12/,!M$! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    39. 39. Reimplementation of all systems Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    40. 40. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    41. 41. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java • Big need of supporting framework Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    42. 42. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java • Big need of supporting framework • Generating seemed to be the right way Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    43. 43. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java • Big need of supporting framework • Generating seemed to be the right way • Based on XML files Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    44. 44. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java • Big need of supporting framework • Generating seemed to be the right way • Based on XML files • Later a UML modeling was set on top of that Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    45. 45. Reimplementation of all systems • VSA planned in 2000 and 2002 to start the reimplementation of almost all important VSA group systems based on Java • Big need of supporting framework • Generating seemed to be the right way • Based on XML files • Later a UML modeling was set on top of that • MagicDraw was used as UML tool, with VSA plugins for generating XMLs from the UML model Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    46. 46. Systems based on marvin
    47. 47. 9&:% <:9% $685)5;6,;% $685)5;6,;% 6,;);)65% =)6>5% /00%#4,% /?@% 76485% >+8AB+>5% /01200% &&20% 3*45565% #45A5% &'(%#)**)+,% -+.% !"#$% /000%CD-% E)4F84#5%
    48. 48. 85& 45/& 63#2)273!7& 9)3:2& ';<& 63#2)273!7& :$#=>$:2& 3!7)7)32& '-.-//& 5';& 0*12232& (12=2& '&()**)$!& '///&?@+& +$,& !"#$%& %)1A#1(2&
    49. 49. The new marvin modeling project
    50. 50. Why a new modeling for marvin?
    51. 51. Problems with the UML Modelling Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    52. 52. Problems with the UML Modelling • Opening a UML module lasted up to one hour Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    53. 53. Problems with the UML Modelling • Opening a UML module lasted up to one hour • Opening a big UML diagram lasted up to ten minutes Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    54. 54. Problems with the UML Modelling • Opening a UML module lasted up to one hour • Opening a big UML diagram lasted up to ten minutes • Turnaround times were too slow (changing UML diagram, generating XML files, generating Java files and compiling via ANT) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    55. 55. Problems with the UML Modelling • Opening a UML module lasted up to one hour • Opening a big UML diagram lasted up to ten minutes • Turnaround times were too slow (changing UML diagram, generating XML files, generating Java files and compiling via ANT) • So we needed much coffee… Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    56. 56. Problems with the UML Modelling Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    57. 57. Problems with the UML Modelling • Modelling was not intuitive, because UML was “abused” to model something, that can’t be expressed in UML at all Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    58. 58. Problems with the UML Modelling • Modelling was not intuitive, because UML was “abused” to model something, that can’t be expressed in UML at all • Modelling was partly cumbersome, because there is no assistance in editing the models Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    59. 59. Problems with the UML Modelling • Modelling was not intuitive, because UML was “abused” to model something, that can’t be expressed in UML at all • Modelling was partly cumbersome, because there is no assistance in editing the models • Model was partly more complex than the XML file Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    60. 60. Problems with the UML Modelling • Modelling was not intuitive, because UML was “abused” to model something, that can’t be expressed in UML at all • Modelling was partly cumbersome, because there is no assistance in editing the models • Model was partly more complex than the XML file • Workflow diagrams became too big, were confusing Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    61. 61. Problems with the UML Modelling Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    62. 62. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    63. 63. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references • No validation and code completion in the tool Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    64. 64. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references • No validation and code completion in the tool • Branching was not possible, only one branch can be modeled Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    65. 65. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references • No validation and code completion in the tool • Branching was not possible, only one branch can be modeled • Not all functionality of the XML Files could be expressed via UML Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    66. 66. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references • No validation and code completion in the tool • Branching was not possible, only one branch can be modeled • Not all functionality of the XML Files could be expressed via UML • No two way editing between XML Files and UML Models Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    67. 67. Problems with the UML Modelling • Referencing other model elements was done only textual, not by model references • No validation and code completion in the tool • Branching was not possible, only one branch can be modeled • Not all functionality of the XML Files could be expressed via UML • No two way editing between XML Files and UML Models • No navigation between code and model Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    68. 68. Initializing Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    69. 69. Initializing • Target was to massively improve tool handling and performance Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    70. 70. Initializing • Target was to massively improve tool handling and performance • Four different offerers made suggestions for solution. Three of them made the same suggestion: Xtext and GMF based on Eclipse Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    71. 71. Initializing • Target was to massively improve tool handling and performance • Four different offerers made suggestions for solution. Three of them made the same suggestion: Xtext and GMF based on Eclipse • itemis won the race due to best competence in Xtext Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    72. 72. Project Start Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    73. 73. Project Start • Fixed price contract including VSA developers taking part in the project to ensure training on the new technologies Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    74. 74. Project Start • Fixed price contract including VSA developers taking part in the project to ensure training on the new technologies • Specification: Document and legacy code Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    75. 75. Project Start • Fixed price contract including VSA developers taking part in the project to ensure training on the new technologies • Specification: Document and legacy code • two developers from items and two full time and two part time developers from VSA Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    76. 76. Why Eclipse Modeling Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    77. 77. Why Eclipse Modeling • Large ecosystem of modeling tools and frameworks available like in no other platform: • EMF • Xtext • GMF Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    78. 78. Why Eclipse Modeling • Large ecosystem of modeling tools and frameworks available like in no other platform: • EMF • Xtext • GMF • Possibility of mixing textual and graphical modeling Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    79. 79. Basic Objectives Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    80. 80. Basic Objectives • Textual modeling for all languages with Xtext Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    81. 81. Basic Objectives • Textual modeling for all languages with Xtext • Graphical modeling with GMF for selected aspects of certain languages to getting better overview (no UML!) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    82. 82. Basic Objectives • Textual modeling for all languages with Xtext • Graphical modeling with GMF for selected aspects of certain languages to getting better overview (no UML!) • Integration of the legacy marvin generator as Eclipse Builder Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    83. 83. Basic Objectives • Textual modeling for all languages with Xtext • Graphical modeling with GMF for selected aspects of certain languages to getting better overview (no UML!) • Integration of the legacy marvin generator as Eclipse Builder • Tooling for automatic 100% migration of existing projects, including layout information from MagicDraw; ability to migrate one project at a time Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    84. 84. Basic Objectives • Textual modeling for all languages with Xtext • Graphical modeling with GMF for selected aspects of certain languages to getting better overview (no UML!) • Integration of the legacy marvin generator as Eclipse Builder • Tooling for automatic 100% migration of existing projects, including layout information from MagicDraw; ability to migrate one project at a time • support for mixing migrated and unmigrated projects, because projects can't be migrated all at once Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    85. 85. Two language families, five languages
    86. 86. XML + UML workflowdef.xsd datadict.xsd <?xml version="1.0" encoding="ISO-8859-15"?> <dataDictionary xmlns="http://www.vsa.de/datadict/1.45.2.4"> <domain> <databaseMapping tableName="VDOMAIN"> <column name="ID"> <IdType/> </column> <?xml version="1.0" encoding="ISO-8859-15"?> </databaseMapping> <dataDictionary <generator> xmlns="http://www.vsa.de/datadict/1.45.2.4"> <classes> <view> ... <databaseMapping viewName="V_VATTRIBUTE_JOIN_VIEW"/> <generator> <classes> ... <?xml version="1.0" encoding="ISO-8859-15"?> <workflow xmlns="http://www.vsa.de/workflow/1.0"> <javadoc>comment</javadoc> <synchWorkflow isMasterWorkflow="true" isStartableAsDetailWorkflow="true"> <targetGuis> <gui name="JAVA"/> </targetGuis> <objectModel> <rootObject class="vsa.marvin.mod.schulung.workflow.impl.CustomerManagementRoot" name="CustomerManagement"> <javadoc>Rootobject of the workflow</javadoc> <value attributePath="searchFor" name="searchFor"/> </rootObject> </objectModel> <globalMasks> <globalActivities> <activity name="SearchCustomer2"> <javadoc></javadoc> <synchTransition nextStep="CURRENT_STEP"/> </activity>
    87. 87. <?xml version="1.0" encoding="ISO-8859-15"?> <dataDictionary xmlns="http://www.vsa.de/datadict/1.45.2.4"> <domain> <databaseMapping tableName="VDOMAIN"> <column name="ID"> <IdType/> </column> <column allowNulls="false" name="VDOMAINATTR"> <DecimalType precision="10" scale="0"/> </column> </databaseMapping> <generator> <classes> <superClass name="vsa.marvin.persist.DefaultPersistentObject"/> <domainIF internalName="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImplIF" name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.VDomainIF" baseOnly="true" generateBase="true" generatePublic="true"/> <domainImpl name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImpl" baseOnly="true" generateBase="true"/> </classes> <attributes> <defineAttributes> <attribute name="vdomainattr" type="int"> <javadoc></javadoc> <columnRef columnName="VDOMAINATTR"/> </attribute> </defineAttributes> </attributes> <createMethods/> <findMethods/> </generator> </domain> </dataDictionary>
    88. 88. ?xml version="1.0" encoding="ISO-8859-15"? dataDictionary remove XML-noise: </...> xmlns="http: www.vsa.de datadict 1.45.2.4" domain databaseMapping tableName="VDOMAIN" column name="ID" IdType column column allowNulls="false" name="VDOMAINATTR" DecimalType precision="10" scale="0" column databaseMapping generator classes superClass name="vsa.marvin.persist.DefaultPersistentObject" domainIF internalName="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImplIF" name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.VDomainIF" baseOnly="true" generateBase="true" generatePublic="true" domainImpl name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImpl" baseOnly="true" generateBase="true" classes attributes defineAttributes attribute name="vdomainattr" type="int" javadoc javadoc columnRef columnName="VDOMAINATTR" attribute defineAttributes attributes createMethods findMethods generator domain dataDictionary
    89. 89. dataDictionary remove metadata domain databaseMapping tableName="VDOMAIN" column name="ID" IdType column column allowNulls="false" name="VDOMAINATTR" DecimalType precision="10" scale="0" column databaseMapping generator classes superClass name="vsa.marvin.persist.DefaultPersistentObject" domainIF internalName="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImplIF" name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.VDomainIF" baseOnly="true" generateBase="true" generatePublic="true" domainImpl name="gen.vsa.marvin.mod.persist.examples.reference.views.joins.core.VDomainImpl" baseOnly="true" generateBase="true" classes attributes defineAttributes attribute name="vdomainattr" type="int" javadoc javadoc columnRef columnName="VDOMAINATTR" attribute defineAttributes attributes createMethods findMethods generator domain dataDictionary
    90. 90. dataDictionary remove default/derivable values domain databaseMapping tableName="VDOMAIN" column name="VDOMAINATTR" DecimalType precision="10" scale="0" column databaseMapping generator classes superClass name="vsa.marvin.persist.DefaultPersistentObject" classes attributes defineAttributes attribute name="vdomainattr" type="int" javadoc javadoc columnRef columnName="VDOMAINATTR" attribute defineAttributes attributes createMethods findMethods generator domain dataDictionary
    91. 91. dataDictionary summarize columns/attributes domain databaseMapping tableName="VDOMAIN" databaseMapping generator classes superClass name="vsa.marvin.persist.DefaultPersistentObject" classes attributes defineAttributes attribute name="vdomainattr" type="int" javadoc javadoc attribute defineAttributes attributes createMethods findMethods generator domain dataDictionary
    92. 92. remove more noise domain databaseMapping "VDOMAIN" superClass name="vsa.marvin.persist.DefaultPersistentObject" attribute "vdomainattr" type="int"
    93. 93. design convenient syntax domain-language-v2.0 package vsa.marvin.mod.persist.examples.reference.views.joins; import vsa.marvin.persist.DefaultPersistentObject; domain VDomain { database { table VDOMAIN; } classes { superClass javaClass DefaultPersistentObject; } attributes { private int vdomainattr; } methods { } }
    94. 94. Let’s build this language in less than a minute
    95. 95. Launch the New Editor
    96. 96. datadict.xsd workflowdef.xsd Domain.xtext View.xtext Workflow.xtext ObjectModel.xtext Mask.xtext
    97. 97. Models are code! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    98. 98. Models are code! • This is good, because we know how to handle code: • Compare, Merge • Version Control • Copy’n’paste across applications • Send artifacts via e-mail or web Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    99. 99. Models are code! • This is good, because we know how to handle code: • Compare, Merge • Version Control • Copy’n’paste across applications • Send artifacts via e-mail or web • Furthermore, they integrate seamlessly with • existing code • existing build infrastructures Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    100. 100. Architecture Xtend M2M <XML/> Xtext Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    101. 101. Architecture Xtend M2M <XML/> EMF Xtext Model Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    102. 102. Architecture Structure Def: Ecore derived from XML Schema Xtend M2M <XML/> EMF Xtext Model Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    103. 103. Architecture Structure Def: Structure Def: Ecore derived from Ecore derived from XML Schema Xtend M2M Xtext Grammars <XML/> EMF Xtext Model Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    104. 104. Architecture Structure Def: Structure Def: Ecore derived from Ecore derived from XML Schema Xtend M2M Xtext Grammars <XML/> EMF Xtext Model Model Model Load/Save: Xtend M2M EMF’s XMLResource Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    105. 105. Architecture Structure Def: Structure Def: Ecore derived from Ecore derived from XML Schema Xtend M2M Xtext Grammars <XML/> EMF Xtext Model Model Model Load/Save: Load/Save: Xtend M2M XtextResource EMF’s XMLResource (extends EMF’s ResourceImpl) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    106. 106. Migrate XML Models Xtend M2M XMLResource.load() XtextResource.save() <XML/> Xtext Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    107. 107. Integrate Legacy Code Generator Xtend M2M <XML/> Xtext CodeGen Model Model XtextResource.load() XMLResource. save() Xtend M2M { Java } Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    108. 108. Generic Integration Test (Roundtrip) Xtend M2M XMLResource.load() XtextResource.save() Compare <XML/> Xtext Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    109. 109. Generic Integration Test This Tests: (Roundtrip) Xtend M2M XMLResource.load() XtextResource.save() Compare <XML/> Xtext Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    110. 110. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Xtend M2M XMLResource.load() XtextResource.save() Compare <XML/> Xtext Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    111. 111. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M XMLResource.load() XtextResource.save() Compare <XML/> Xtext Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    112. 112. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M Grammar XMLResource.load() XtextResource.save() Compare <XML/> Xtext Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    113. 113. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M Grammar XMLResource.load() XtextResource.save() Compare <XML/> Xtext Scoping Model Model XMLResource.save() XtextResource.load() Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    114. 114. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M Grammar XMLResource.load() XtextResource.save() Compare <XML/> Xtext Scoping Model Model XMLResource.save() XtextResource.load() Lexing/Parsing Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    115. 115. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M Grammar XMLResource.load() XtextResource.save() Compare <XML/> Xtext Scoping Model Model XMLResource.save() XtextResource.load() Lexing/Parsing Xtend M2M ValueConversion Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    116. 116. Generic Integration Test This Tests: (Roundtrip) XML2Xtext Serialization Xtend M2M Grammar XMLResource.load() XtextResource.save() Compare <XML/> Xtext Scoping Model Model XMLResource.save() XtextResource.load() Lexing/Parsing Xtend M2M Xtext2XML ValueConversion Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    117. 117. GMF Integration (how to persist diagrams) XMI XMI via EMF’s XMIResource via EMF’s XMIResource <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:wf="http://www.vsa.de/marvin/dsl/workflow/0.1"> xmlns:wf="http://www.vsa.de/marvin/dsl/workflow/0.1"> <notation:Diagram xmi:id="_WRi84HSqEd-YCPMLqI1FhQ" type="workflow" measurementUnit="Pixel"> <notation:Diagram xmi:id="_WRi84HSqEd-YCPMLqI1FhQ" type="workflow" measurementUnit="Pixel"> <children xmi:type="notation:Node" xmi:id="_WT_z8HSqEd-YCPMLqI1FhQ" type="2004"> <children xmi:type="notation:Node" xmi:id="_WT_z8HSqEd-YCPMLqI1FhQ" type="2004"> <children xmi:type="notation:DecorationNode" xmi:id="_WUBCEHSqEd-YCPMLqI1FhQ" type="5005"/> <children xmi:type="notation:DecorationNode" xmi:id="_WUBCEHSqEd-YCPMLqI1FhQ" type="5005"/> <styles xmi:type="notation:DescriptionStyle" xmi:id="_WT_z8XSqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:DescriptionStyle" xmi:id="_WT_z8XSqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:FontStyle" xmi:id="_WT_z8nSqEd-YCPMLqI1FhQ" fontName="Lucida Grande" fontHeight="10"/> <styles xmi:type="notation:FontStyle" xmi:id="_WT_z8nSqEd-YCPMLqI1FhQ" fontName="Lucida Grande" fontHeight="10"/> <styles xmi:type="notation:LineStyle" xmi:id="_WT_z83SqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:LineStyle" xmi:id="_WT_z83SqEd-YCPMLqI1FhQ"/> <element xmi:type="wf:NonGuiStep" href="CustomerManagement.wf#vsa_/steps:DeleteCustomer"/> <element xmi:type="wf:NonGuiStep" href="CustomerManagement.wf#vsa_/steps:DeleteCustomer"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WT_z9HSqEd-YCPMLqI1FhQ" x="702" y="153"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WT_z9HSqEd-YCPMLqI1FhQ" x="702" y="153"/> </children> </children> ... ... Semantic Model (the actual model) Notation Model (Layout, Formatting, etc.) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    118. 118. GMF Integration (how to persist diagrams) XMI XMI via EMF’s XMIResource via EMF’s XMIResource <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:wf="http://www.vsa.de/marvin/dsl/workflow/0.1"> xmlns:wf="http://www.vsa.de/marvin/dsl/workflow/0.1"> <notation:Diagram xmi:id="_WRi84HSqEd-YCPMLqI1FhQ" type="workflow" measurementUnit="Pixel"> <notation:Diagram xmi:id="_WRi84HSqEd-YCPMLqI1FhQ" type="workflow" measurementUnit="Pixel"> <children xmi:type="notation:Node" xmi:id="_WT_z8HSqEd-YCPMLqI1FhQ" type="2004"> <children xmi:type="notation:Node" xmi:id="_WT_z8HSqEd-YCPMLqI1FhQ" type="2004"> <children xmi:type="notation:DecorationNode" xmi:id="_WUBCEHSqEd-YCPMLqI1FhQ" type="5005"/> <children xmi:type="notation:DecorationNode" xmi:id="_WUBCEHSqEd-YCPMLqI1FhQ" type="5005"/> <styles xmi:type="notation:DescriptionStyle" xmi:id="_WT_z8XSqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:DescriptionStyle" xmi:id="_WT_z8XSqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:FontStyle" xmi:id="_WT_z8nSqEd-YCPMLqI1FhQ" fontName="Lucida Grande" fontHeight="10"/> <styles xmi:type="notation:FontStyle" xmi:id="_WT_z8nSqEd-YCPMLqI1FhQ" fontName="Lucida Grande" fontHeight="10"/> <styles xmi:type="notation:LineStyle" xmi:id="_WT_z83SqEd-YCPMLqI1FhQ"/> <styles xmi:type="notation:LineStyle" xmi:id="_WT_z83SqEd-YCPMLqI1FhQ"/> <element xmi:type="wf:NonGuiStep" href="CustomerManagement.wf#vsa_/steps:DeleteCustomer"/> <element xmi:type="wf:NonGuiStep" href="CustomerManagement.wf#vsa_/steps:DeleteCustomer"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WT_z9HSqEd-YCPMLqI1FhQ" x="702" y="153"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WT_z9HSqEd-YCPMLqI1FhQ" x="702" y="153"/> </children> </children> ... ... Semantic Model (the actual model) Notation Model (Layout, Formatting, etc.) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    119. 119. GMF Integration (how to persist diagrams) Text XMI via XtextResource via EMF’s XMIResource workflow-language-v2.0 package vsa.marvin.mod.schulung.^workflow; <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:wf="http://www.vsa.de/marvin/dsl/workflow/0.1"> /* This workflow creates/removes/updates customer records */ <notation:Diagram xmi:id="_WRi84HSqEd-YCPMLqI1FhQ" type="workflow" measurementUnit="Pixel"> <children xmi:type="notation:Node" xmi:id="_WT_z8HSqEd-YCPMLqI1FhQ" type="2004"> workflow CustomerManagement isMasterWorkflow canBeDetailWorkflow { <children xmi:type="notation:DecorationNode" xmi:id="_WUBCEHSqEd-YCPMLqI1FhQ" type="5005"/> <styles xmi:type="notation:DescriptionStyle" xmi:id="_WT_z8XSqEd-YCPMLqI1FhQ"/> firstStep OverviewStep; <styles xmi:type="notation:FontStyle" xmi:id="_WT_z8nSqEd-YCPMLqI1FhQ" fontName="Lucida Grande" fontHeight="10"/> <styles xmi:type="notation:LineStyle" xmi:id="_WT_z83SqEd-YCPMLqI1FhQ"/> <element xmi:type="wf:NonGuiStep" href="CustomerManagement.wf#vsa_/steps:DeleteCustomer"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WT_z9HSqEd-YCPMLqI1FhQ" x="702" y="153"/> references { </children> ... objectModelRef CustomerManagement; externalDefinitionsRef Externals as infoheader; compWorkflowRef customersales workflow CustomerSales; Notation Model (Layout, Formatting, etc.) } workflowPart foopart { globalActivities { activity ShowCustomerCount -> ShowCustomerCountMessage; } guiStep ShowSalesInclude { javaMask vsa.marvin.mod.schulung.^workflow.ShowSalesIncludeMask; activity NextMonth -> ShowSalesInclude; Semantic Model (the actual model) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    120. 120. GMF Integration - Consequences Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    121. 121. GMF Integration - Consequences • No need for the graphical editor to cover complete model • Cheaper • Only use graphical syntax where it is indeed superior to textual syntax Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    122. 122. GMF Integration - Consequences • No need for the graphical editor to cover complete model • Cheaper • Only use graphical syntax where it is indeed superior to textual syntax • If the XMI is lost, only the layout is lost Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    123. 123. Showtime!
    124. 124. Incremental Build
    125. 125. Content Assist, Cross References, Navigation
    126. 126. Validation
    127. 127. Formatting
    128. 128. Outline
    129. 129. Find References Open Model Elements
    130. 130. Domain Diagram: A canvas to pin up files
    131. 131. Workflow Diagram: nested diagrams
    132. 132. Lessons Learned
    133. 133. Migration Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    134. 134. Migration • A 100% migration of the existing models was necessary Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    135. 135. Migration • A 100% migration of the existing models was necessary • About 75 CVS Modules to migrate Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    136. 136. Migration • A 100% migration of the existing models was necessary • About 75 CVS Modules to migrate • At early time in project a automated migration test tool was implemented • Checkout all modules from CVS and build • Migrate to new modeling • Verify the results by comparing artefacts • Logging all errors and relevant differences Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    137. 137. Migration • A 100% migration of the existing models was necessary • About 75 CVS Modules to migrate • At early time in project a automated migration test tool was implemented • Checkout all modules from CVS and build • Migrate to new modeling • Verify the results by comparing artefacts • Logging all errors and relevant differences • All problems in migration were discovered before rollout Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    138. 138. Migration • A 100% migration of the existing models was necessary • About 75 CVS Modules to migrate • At early time in project a automated migration test tool was implemented • Checkout all modules from CVS and build • Migrate to new modeling • Verify the results by comparing artefacts • Logging all errors and relevant differences • All problems in migration were discovered before rollout • But: Searching for all the errors took much more time than predicted Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    139. 139. Training of the users Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    140. 140. Training of the users • Even for very experienced users it is helpful to be trained on a complete new way to model and new tools Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    141. 141. Training of the users • Even for very experienced users it is helpful to be trained on a complete new way to model and new tools • An exercises project was implemented with tutorials covering the main features Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    142. 142. Training of the users • Even for very experienced users it is helpful to be trained on a complete new way to model and new tools • An exercises project was implemented with tutorials covering the main features • All VSA developers (even our Rumanian ones) took part in a 4-6 hour training Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    143. 143. Training of the users • Even for very experienced users it is helpful to be trained on a complete new way to model and new tools • An exercises project was implemented with tutorials covering the main features • All VSA developers (even our Rumanian ones) took part in a 4-6 hour training • Result:Very few handling problems, low support effort of the VSA modeling developers Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    144. 144. Distributed project Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    145. 145. Distributed project • Project was distributed over four locations Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    146. 146. Distributed project • Project was distributed over four locations • Shared infrastructure from the very beginning • Subversion • Bug tracking system • Wiki Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    147. 147. Distributed project • Project was distributed over four locations • Shared infrastructure from the very beginning • Subversion • Bug tracking system • Wiki • Weekly telephone conference to check status and discuss problems Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    148. 148. Distributed project • Project was distributed over four locations • Shared infrastructure from the very beginning • Subversion • Bug tracking system • Wiki • Weekly telephone conference to check status and discuss problems • Later in the project communication rules to ensure efficient working Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    149. 149. How to minimize complexity Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    150. 150. How to minimize complexity • Use stable versions of the frameworks Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    151. 151. How to minimize complexity • Use stable versions of the frameworks • Use GMF only if necessary Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    152. 152. How to minimize complexity • Use stable versions of the frameworks • Use GMF only if necessary • Migrate existing models only if necessary, because you are not free in defining the language and migration has to be tested very intensive Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    153. 153. How to minimize complexity • Use stable versions of the frameworks • Use GMF only if necessary • Migrate existing models only if necessary, because you are not free in defining the language and migration has to be tested very intensive • Work test-driven with continous integration (that is a really big problem when developing plugins for eclipse) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
    154. 154. Questions? Discussion

    ×