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

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 

Recently uploaded (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 

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