SlideShare a Scribd company logo
1 of 61
Download to read offline
Mixing Diagram, Tree, Text, Table and Form editors
                      to build a kick-ass Modeling Workbench




             Mariot Chauvin
             Obeo, France



copyright 2011 Obeo
About
              Obeo

●   Software editor and consulting
●   Model driven company
●   Eclipse strategic member
About
          UML
  "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
Universal
    Language ?




                 Break
DSL
Properties

         ●   Explicit
         ●   Targeted
         ●   Expressive
Modeling for
  Everyone


               Break
Textual vs Graphical


●   Both are possible
●   Depends on context
●   Depends on users
Modeling workbench
              Duties

●   Provide rich user interactions
●   Hide some complexity
●   Display specific model views
Modeling
         for Generation

●   Source code
●   Documentation
●   Settings file
Modeling workbench
                Duties

●   Handle synchronization
●   Maintain traceability links
●   Enable managed desynchronization
Modeling
           with Others

●   Several concerns and viewpoints
●   Set processes
●   Conflicts
Modeling workbench
                Duties

●   Separation of concerns
●   Coherence maintenance
●   Integration with collaborative tools
adaptability




  Break
flexibility




              Break
tooling




          Break
Obeo Designer


                ●   Highly extensible
                ●   No set approach
                ●   Focused on tooling
Magic
   Inside
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
OCL
  user
OCL Syntax
                        Enhancements
                            OCL                                                    Acceleo

●   [sequence->select(oclIsKindOf(Type)).oclAsType(Type)/]    ●   [sequence->filter(Type)]
●   ["ab".concat("bc").concat("ef")]                          ●   ["ab" + "cd" + "ef"]
●   [x.eContainer().eContents()-                              ●   [x.followingSiblings()]
    >subSequence(x.eContainer().eContents()->indexOf(self),
    x.eContainer().eContents()->size())->excluding(self)/]
●   [for (cf:ControlFlow | c.ownedElement->select(a |         ●   [for (c.ownedElement->filter(ControlFlow)
    a.oclIsKindOf(ControlFlow))->sortedBy(e: Element |            ->sortedBy(name))]
    e.oclAsType(ControlFlow).name))]
Featured
                                Editor




●   Syntax highlighting
●   Code completion
●   Outline
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
      Tooling
module Families2Persons;
create OUT : Persons from IN : Families;

-- helpers declaration {
-- ...
                                                           ●   Editor
-- } helpers declaration

rule Member2Male {
                                                           ●   Debugger
    from

    to
        s : Families!Member (not s.isFemale())             ●   Profiler
        t : Persons!Male (

                                                               Wizards
            fullName <- s.firstName + ' ' + s.familyName
        )                                                  ●
}

rule Member2Female {
    from
        s : Families!Member (s.isFemale())
    to
        t : Persons!Female (
            fullName <- s.firstName + ' ' + s.familyName
        )
}
Model comparison
          EMF Compare

                   ●   Generic
                   ●   Extensible
                   ●   3 ways comparison
Compare
    Editor
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/

●




Copyright SXC - http://www.sxc.hu/txt/license.html

●   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

●
Quotes
●   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

More Related Content

Similar to Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeling workbench

Build your Own Customizable 3D Objects with Sculpteo
Build your Own Customizable 3D Objects with SculpteoBuild your Own Customizable 3D Objects with Sculpteo
Build your Own Customizable 3D Objects with SculpteoSculpteo
 
Foster - Getting started with Angular
Foster - Getting started with AngularFoster - Getting started with Angular
Foster - Getting started with AngularMukundSonaiya1
 
Introduction to f#
Introduction to f#Introduction to f#
Introduction to f#mjyeaney
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript Corley S.r.l.
 
Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBeroza Paul
 
Jab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedJab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedOfer Cohen
 
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...mporhel
 
Django Patterns - Pycon India 2014
Django Patterns - Pycon India 2014Django Patterns - Pycon India 2014
Django Patterns - Pycon India 2014arunvr
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code cleanBrett Child
 
Writing Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World DominationWriting Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World DominationEmma Jane Hogbin Westby
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!melbats
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in RubyAndy Maleh
 
Design Patterns In Scala
Design Patterns In ScalaDesign Patterns In Scala
Design Patterns In ScalaKnoldus Inc.
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)Ofer Cohen
 
Effects, Coeffects & Subscriptions: a pit of success for SPAs
Effects, Coeffects & Subscriptions: a pit of success for SPAsEffects, Coeffects & Subscriptions: a pit of success for SPAs
Effects, Coeffects & Subscriptions: a pit of success for SPAsManuel Rivero
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!Tim Geisler
 
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18Manuel Rivero
 

Similar to Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeling workbench (20)

Build your Own Customizable 3D Objects with Sculpteo
Build your Own Customizable 3D Objects with SculpteoBuild your Own Customizable 3D Objects with Sculpteo
Build your Own Customizable 3D Objects with Sculpteo
 
Foster - Getting started with Angular
Foster - Getting started with AngularFoster - Getting started with Angular
Foster - Getting started with Angular
 
Introduction to f#
Introduction to f#Introduction to f#
Introduction to f#
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript
 
Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design pattern
 
Jab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedJab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealed
 
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...
How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon ...
 
Django Patterns - Pycon India 2014
Django Patterns - Pycon India 2014Django Patterns - Pycon India 2014
Django Patterns - Pycon India 2014
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code clean
 
Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design Solid
 
Writing Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World DominationWriting Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World Domination
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
 
Design Patterns In Scala
Design Patterns In ScalaDesign Patterns In Scala
Design Patterns In Scala
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
 
Effects, Coeffects & Subscriptions: a pit of success for SPAs
Effects, Coeffects & Subscriptions: a pit of success for SPAsEffects, Coeffects & Subscriptions: a pit of success for SPAs
Effects, Coeffects & Subscriptions: a pit of success for SPAs
 
Hibernate 1x2
Hibernate 1x2Hibernate 1x2
Hibernate 1x2
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!
 
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18
Effects, coeffects & subscriptions: a pit of success for SPAs Socracan18
 

Recently uploaded

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 

Recently uploaded (20)

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 

Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeling workbench

  • 1. Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass Modeling Workbench Mariot Chauvin Obeo, France copyright 2011 Obeo
  • 2. About Obeo ● Software editor and consulting ● Model driven company ● Eclipse strategic member
  • 3. About UML "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
  • 4. Universal Language ? Break
  • 5. DSL Properties ● Explicit ● Targeted ● Expressive
  • 6. Modeling for Everyone Break
  • 7. Textual vs Graphical ● Both are possible ● Depends on context ● Depends on users
  • 8. Modeling workbench Duties ● Provide rich user interactions ● Hide some complexity ● Display specific model views
  • 9. Modeling for Generation ● Source code ● Documentation ● Settings file
  • 10. Modeling workbench Duties ● Handle synchronization ● Maintain traceability links ● Enable managed desynchronization
  • 11. Modeling with Others ● Several concerns and viewpoints ● Set processes ● Conflicts
  • 12. Modeling workbench Duties ● Separation of concerns ● Coherence maintenance ● Integration with collaborative tools
  • 14. flexibility Break
  • 15. tooling Break
  • 16. Obeo Designer ● Highly extensible ● No set approach ● Focused on tooling
  • 17. Magic Inside
  • 18. Based on Eclipse ● Open source and extensible ● Widely used ● Collaboration ready
  • 19. Based on Eclipse Modeling ● EMF as core ● Dynamic and diverse community
  • 20. Text generation Acceleo ● MTL Implementation ● Extensive tooling ● Standalone
  • 22. OCL Syntax Enhancements OCL Acceleo ● [sequence->select(oclIsKindOf(Type)).oclAsType(Type)/] ● [sequence->filter(Type)] ● ["ab".concat("bc").concat("ef")] ● ["ab" + "cd" + "ef"] ● [x.eContainer().eContents()- ● [x.followingSiblings()] >subSequence(x.eContainer().eContents()->indexOf(self), x.eContainer().eContents()->size())->excluding(self)/] ● [for (cf:ControlFlow | c.ownedElement->select(a | ● [for (c.ownedElement->filter(ControlFlow) a.oclIsKindOf(ControlFlow))->sortedBy(e: Element | ->sortedBy(name))] e.oclAsType(ControlFlow).name))]
  • 23. Featured Editor ● Syntax highlighting ● Code completion ● Outline
  • 25. Refactoring facilities ● Dialog with original and refactored previews ● Rapid text replacement
  • 26. Foreign languages fluency ● Java code call ● ATL and QVTO transformations call
  • 27. Integrated debugger ● Step into, Step over, Step return ● Breakpoints and variables
  • 29. Text and models synchro Traceability ● Links for each element ● Generation preview ● Part generation
  • 30. Model transformation ATL ● Declarative approach ● Extensive tooling ● Standalone
  • 31. Integrated Tooling module Families2Persons; create OUT : Persons from IN : Families; -- helpers declaration { -- ... ● Editor -- } helpers declaration rule Member2Male { ● Debugger from to s : Families!Member (not s.isFemale()) ● Profiler t : Persons!Male ( Wizards fullName <- s.firstName + ' ' + s.familyName ) ● } rule Member2Female { from s : Families!Member (s.isFemale()) to t : Persons!Female ( fullName <- s.firstName + ' ' + s.familyName ) }
  • 32. Model comparison EMF Compare ● Generic ● Extensible ● 3 ways comparison
  • 33. Compare Editor
  • 34. Graphical modeling Viewpoint ● Viewpoint driven tool ● Multiple representations ● Interpreted approach
  • 35. Viewpoints specification ● Viewpoints definitions ● Owned representations ● Representation extensions
  • 36. Viewpoints usage ● Viewpoints activation ● Available features update
  • 37. Representations specification ● Mappings ● Graphical style ● Behaviors
  • 39. Properties, Wizards and Forms EEF ● Generative approach ● User friendly widgets ● Enhanced widgets
  • 40. beautiful properties ● Live validation in text widget ● Table and and other user-friendly widgets ● Help for each model element
  • 41. wizards ● Tabs ● Undo management
  • 43. Textual representation Xtext ● Generative approach ● Advanced text editor
  • 45. Use examples ● System engineering workbench ● Design, Validation, Analysis ● Code and documentation generation
  • 46.
  • 47.
  • 48.
  • 49. Use examples ● Safety modeling workbench ● Safety analysis (PHA & SHA) ● Documentation generation
  • 50.
  • 51.
  • 52.
  • 59. Thanks Questions ??
  • 60. 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/ ● Copyright SXC - http://www.sxc.hu/txt/license.html ● 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 ●
  • 61. Quotes ● 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