Wikileaking Eclipse Modeling - Spilling the beans on how industry uses EMF based tooling successfully! Ronan Barrett, Ericsson Public Ericsson AB 2012 2012-03-05 Page 1
The Use Case Modeling Tool We Can have 1000+ classes and 10,000+ properties O&M Interface Our DNA makes Mobile Communication possible! Public Ericsson AB 2012 2012-03-05 Page 2 Managed Elements
The Tool DSL E DSL F DSL G DSL H OCL ATL JET DSL A DSL B MMT A MMT B DSL C DSL D M2T A M2T B Public Ericsson AB 2012 2012-03-05 Page 3
Creating DSL(s) A Profile/OCL MetaModelAgent Meta-Model Public Ericsson AB 2012 2012-03-05 Page 4 Profile Guideline Menus Wizards Editors Views validation Quick Fix
DSL Bean Spilling Guidelines models are quite complex to create Must expose pathmap using org.eclipse.emf.ecore.uri_mapping extension point Papyrus/OCL integration not in place (Bug 340853) Papyrus usability issues MMA guidelines can be extended/overridden Context sensitive menus/wizards/views generated Less customization plugins needed RSA/MMA play nicely with open source projects Papyrus looks promising with very rich feature set Public Ericsson AB 2012 2012-03-05 Page 5
Creating DSL Grammars A Formatter Meta-Model Ecore DSL Serialization Deserialization Editor Validation Quick Fix Public Ericsson AB 2012 2012-03-05 Page 6
DSL Grammar Bean Spilling Xtext formatters take time to get right Lots to learn if something goes wrong (many layers) Xtext has great documentation and tutorials Xtext generates EMF resource serialization code Seamless integration with Eclipse MMT & M2T Xtext supports static analysis of generated models Xtext has MWE workflow/maven integration Public Ericsson AB 2012 2012-03-05 Page 7
Model Transformation (MMT) ATL HOT Inspired by Dennis Wagelaar s UML2Copy.atl ATL RE ATL Model Merge using Maps ATL DTD->XML Schema using Trang then import to EMF Public Ericsson AB 2012 2012-03-05 Page 8
Transformation Bean Spilling ATL debugging can be difficult ATL error messages are cryptic e.g. (Bug 353313) ATL 3.2.1 compile error when comparing > unsigned 32bit numbers (Bug 390548) ATL {do} rules always need a return value ATL Update Site not kept up to date Not so many people know OCL/ATL ATL is a super succinct OCL based language ATL supports many set types ATL supports HOT (ATL generates ATL) ATL user guide is really comprehensive ATL is very stable with few open bugs ATL works nicely with Eclipse UML2 ATL code is easy to read/maintain Public Ericsson AB 2012 2012-03-05 Page 9
Model Transformation (M2T) C++ JET Public Ericsson AB 2012 2012-03-05 Page 10
Transformation Bean Spilling Acceleo 3.3.0 alters global EPackage registry (Bug 389497) JET code is verbose and hard to maintain JET doesn t work outside of Eclipse Only minor releases of JET since 2009 Acceleo MTL files easy to read/maintain Acceleo editor has great UML2 code completion Acceleo integrates with Maven Acceleo is OMG based with good documentation JET is easy to learn if you known JSP Public Ericsson AB 2012 2012-03-05 Page 11
Testing Test Models These Models Should cover every scenario Golden Files JUnit Custom DOM Parser Public Ericsson AB 2012 2012-03-05 Page 12 Test Report
Build Automation SCM Code/Conf Poll/Fetch Publish Trends Remote P2/ Network disk Tycho-Maven Tycho-Compiler Tycho-Surefire maven-. P2 Repo Public Ericsson AB 2012 2012-03-05 Page 13
Final Observations Model dependencies difficult to resolve with Maven High comprehension barrier of entry to EMF world EMF ResourceFactory(s) are tricky to write Inconsistent quality of documentation Not all project roadmaps are clear Not always clear if/when bugs will be fixed Tycho provides excellent Maven/Junit integration Quality of most Eclipse modeling projects is high Small teams can achieve high productivity Newer versions of projects work with older Eclipses Eclipse UML2 brings better UML tool interoperability 3PP tools play nicely with open source projects Industry are involved via Polarsys collaboration Public Ericsson AB 2012 2012-03-05 Page 14
Questions Public Ericsson AB 2012 2012-03-05 Page 15