• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Migrating a large modelling environment from UML/XML to GMF/Xtext
 

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

on

  • 2,784 views

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 ...

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

Statistics

Views

Total Views
2,784
Views on SlideShare
2,782
Embed Views
2

Actions

Likes
1
Downloads
70
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

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

  • 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 Rupprecht,VSA
  • Moritz Eysholdt • Software Architect and Consultant at itemis • Committer at the Eclipse Projects Xtext, Xpand and EMF Compare Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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 Rupprecht,VSA
  • • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • • Specialized in Model Driven Software Development • Founded in 2003 • 140 Employes • Branches in Germany, Swiss, France and Canada Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • • 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
  • • 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
  • • 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
  • Johannes Rupprecht Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Johannes Rupprecht • Chief Software Architect of VSA group Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • Group Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Group • VSA:Verrechnungsstelle der Süddeutschen Apotheken (Clearing House of the South German Pharmacies) • Company founded in 1983 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • Software Development at VSA Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Software Development at VSA • 150 developers in several projects in several locations Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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
  • Development before Eclipse based modeling
  • VSA has a framework called marvin. Why?
  • Framework development started in 2000
  • #/)/%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
  • #/)/%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
  • #/)/%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
  • #/)/%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
  • #/)/%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
  • #/)/%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
  • 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 group systems based on Java 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 group systems based on Java • Big need of supporting framework 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 group systems based on Java • Big need of supporting framework • Generating seemed to be the right way 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 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
  • 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
  • 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
  • Systems based on marvin
  • 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%
  • 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&
  • 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 - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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 be expressed in UML at all 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 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
  • 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
  • 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
  • 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 Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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
  • 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
  • Initializing Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Initializing • Target was to massively improve tool handling and performance Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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 technologies 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 technologies • Specification: Document and legacy code 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 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
  • 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 • Xtext • GMF Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • Basic Objectives Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Basic Objectives • Textual modeling for all languages with Xtext Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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
  • 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> <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>
  • <?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>
  • ?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
  • 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
  • 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
  • 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
  • remove more noise domain databaseMapping "VDOMAIN" superClass name="vsa.marvin.persist.DefaultPersistentObject" attribute "vdomainattr" type="int"
  • 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 { } }
  • Let’s build this language in less than a minute
  • Launch the New Editor
  • datadict.xsd workflowdef.xsd Domain.xtext View.xtext Workflow.xtext ObjectModel.xtext Mask.xtext
  • Models are code! Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • Architecture Xtend M2M <XML/> Xtext Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Architecture Xtend M2M <XML/> EMF Xtext Model Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Architecture Structure Def: Ecore derived from XML Schema Xtend M2M <XML/> EMF Xtext Model Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • Migrate XML Models Xtend M2M XMLResource.load() XtextResource.save() <XML/> Xtext Model Model Xtend M2M Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Integrate Legacy Code Generator Xtend M2M <XML/> Xtext CodeGen Model Model XtextResource.load() XMLResource. save() Xtend M2M { Java } Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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 graphical syntax where it is indeed superior to textual syntax Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • Showtime!
  • Incremental Build
  • Content Assist, Cross References, Navigation
  • Validation
  • Formatting
  • Outline
  • Find References Open Model Elements
  • Domain Diagram: A canvas to pin up files
  • Workflow Diagram: nested diagrams
  • Lessons Learned
  • Migration Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Migration • A 100% migration of the existing models was necessary Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Migration • A 100% migration of the existing models was necessary • About 75 CVS Modules to migrate Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • Training of the users Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • 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
  • Distributed project Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • Distributed project • Project was distributed over four locations Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • 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
  • How to minimize complexity Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • How to minimize complexity • Use stable versions of the frameworks Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • How to minimize complexity • Use stable versions of the frameworks • Use GMF only if necessary Moritz Eysholdt, itemis - Johannes Rupprecht,VSA
  • 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
  • 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
  • Questions? Discussion