mixing diagram, tree, text, table and form editors to build a kick-ass modeling workbench
DESCRIPTION
The last few years Obeo has built - mainly for corporate customers - several modeling workbenches dedicated to various domains : from enterprise applications to embedded system going through the insurance portfolios management. For each of those project defining a specific vocabulary leveraging the domain concepts was a key success factor but was not the only one : the ability to easily adapt the associated meta-model and the associated workbench, to support rich user interactions hiding some complexity and leveraging several kind of representations in a coherent environment were important factors too : they allowed us to adapt the tooling to the customer's methodology.TRANSCRIPT
Mixing Diagram, Tree, Text, Table and Form editors
to build a kick-ass Modeling Workbench
Mariot Chauvin
Obeo, France
copyright 2011 Obeo
AboutObeo
● Software editor and consulting
● Model driven company
● Eclipse strategic member
AboutUML
"I strongly agree with the complaints about UML diagrams being cumbersome and hard to deal with"
Raphael Chaves
“Grady Blooch told me he loved the paper and only wished he had this when they designed UML - if so, things could have been very different”.
Daniel Moody
Break
UniversalLanguage ?
DSL Properties
● Explicit● Targeted● Expressive
Break
Modeling for Everyone
Textual vs Graphical
● Both are possible● Depends on context● Depends on users
● Provide rich user interactions
● Hide some complexity
● Display specific model views
Modeling workbench Duties
Modelingfor Generation
● Source code
● Documentation
● Settings file
Modeling workbench Duties
● Handle synchronization
● Maintain traceability links
● Enable managed desynchronization
Modelingwith Others
● Several concerns and viewpoints
● Set processes
● Conflicts
● Separation of concerns
● Coherence maintenance
● Integration with collaborative tools
Modeling workbench Duties
Break
adaptability
Break
flexibility
Break
tooling
Obeo Designer
● Highly extensible● No set approach● Focused on tooling
InsideMagic
Based on Eclipse
● Open source and extensible● Widely used● Collaboration ready
Based on Eclipse Modeling
● EMF as core● Dynamic and diverse community
Text generation Acceleo
● MTL Implementation● Extensive tooling● Standalone
OCLuser
OCL Syntax Enhancements
● [sequence->select(oclIsKindOf(Type)).oclAsType(Type)/]
● ["ab".concat("bc").concat("ef")]
● [x.eContainer().eContents()->subSequence(x.eContainer().eContents()->indexOf(self), x.eContainer().eContents()->size())->excluding(self)/]
● [for (cf:ControlFlow | c.ownedElement->select(a |a.oclIsKindOf(ControlFlow))->sortedBy(e: Element | e.oclAsType(ControlFlow).name))]
● [sequence->filter(Type)]
● ["ab" + "cd" + "ef"]
● [x.followingSiblings()]
● [for (c.ownedElement->filter(ControlFlow)->sortedBy(name))]
OCL Acceleo
Featured
● Syntax highlighting
● Code completion
● Outline
Editor
Quickfix actions
Refactoring facilities
● Dialog with original and refactored previews
● Rapid text replacement
Foreign languages fluency
● Java code call
● ATL and QVTO transformations call
Integrated debugger
● Step into, Step over, Step return
● Breakpoints and variables
Integrated profiler
Text and models synchro Traceability
● Links for each element● Generation preview● Part generation
Model transformation ATL
● Declarative approach● Extensive tooling● Standalone
Integrated
module Families2Persons;create OUT : Persons from IN : Families;-- helpers declaration {-- ...-- } helpers declaration
rule Member2Male {from
s : Families!Member (not s.isFemale())to
t : Persons!Male (fullName <- s.firstName + ' ' + s.familyName
)}
rule Member2Female {from
s : Families!Member (s.isFemale())to
t : Persons!Female (fullName <- s.firstName + ' ' + s.familyName
)}
● Editor● Debugger● Profiler● Wizards
Tooling
Model comparison EMF Compare
● Generic ● Extensible● 3 ways comparison
CompareEditor
Graphical modeling Viewpoint
● Viewpoint driven tool ● Multiple representations● Interpreted approach
Viewpoints specification
● Viewpoints definitions ● Owned representations ● Representation extensions
Viewpoints usage
● Viewpoints activation ● Available features update
Representations specification
● Mappings ● Graphical style ● Behaviors
Representations usage
Properties, Wizards and Forms EEF
● Generative approach● User friendly widgets● Enhanced widgets
beautiful properties
● Live validation in text widget
● Table and and other user-friendly widgets
● Help for each model element
wizards
● Tabs
● Undo management
Forms editors
Textual representation Xtext
● Generative approach● Advanced text editor
Demo ?
Use examples
● System engineering workbench ● Design, Validation, Analysis ● Code and documentation generation
Use examples
● Safety modeling workbench● Safety analysis (PHA & SHA)● Documentation generation
More ?
Sequence diagrams
Sequence diagrams
UML diagrams
UML diagrams
UML diagrams
Thanks
Questions ??
● Adaptability : http://www.flickr.com/photos/curnen/1041618126/sizes/l/in/photostream/
● Tooling : http://www.flickr.com/photos/batega/1596898776/sizes/l/in/photostream/
● Flexibility : http://www.flickr.com/photos/notsogoodphotography/2187498747/sizes/o/in/photostream/
● OCL User : http://www.flickr.com/photos/lara604/2369412952/sizes/l/in/photostream/
● Card deck : http://www.flickr.com/photos/stevendepolo/4028160820/sizes/o/in/photostream/
● Everyone : http://www.flickr.com/photos/jamescridland/613445810/
●
● Boxing gloves : http://www.sxc.hu/photo/901672
● Quran : http://www.sxc.hu/photo/1079650
● Jesus : http://www.sxc.hu/photo/907654
● Buddha : http://www.sxc.hu/photo/794720
●
Copyright SXC - http://www.sxc.hu/txt/license.html
● Raphael Chaves, http://abstratt.com/blog/2008/06/02/when-uml-meets-slashdot/
● Daniel Woody, http://www.ajilon.com.au/news-publications/264-ajilons-dr-moody-delivers-software-engineering-key-note
Quotes