SlideShare ist ein Scribd-Unternehmen logo
1 von 92
The Unbearable
                           Stupidity of Modeling
                                                       Ed Merks | Peter Friese




                           (c) 2009 Ed Merks | Peter Friese. Distributed under the EDL V1.0 - http://www.eclipse.org/org/documents/edl-v10.php

Thursday, March 26, 2009
Twitter:
                           #eclipsecon #emf

                    http://ed-merks.blogspot.com
                      http://www.peterfriese.de


Thursday, March 26, 2009
“The Learning Curve is Too Steep”




Thursday, March 26, 2009
“The Learning Curve is Too Steep”




Thursday, March 26, 2009
“The Learning Curve is Too Steep”




          • Use newsgroups


Thursday, March 26, 2009
“The Learning Curve is Too Steep”




          • Use newsgroups
          • Get Trained: Eclipse Training Alliance

Thursday, March 26, 2009
“The Learning Curve is Too Steep”




          • Use newsgroups
          • Get Trained: Eclipse Training Alliance
          • Consult with someone who knows
Thursday, March 26, 2009
“UML is Way Too Complex”




Thursday, March 26, 2009
“UML is Way Too Complex”




Thursday, March 26, 2009
“UML is Way Too Complex”




                            UML 1: 9 diagram types




Thursday, March 26, 2009
“UML is Way Too Complex”




                            UML 1: 9 diagram types
                            UML 2: 13 diagram types




Thursday, March 26, 2009
“UML is Way Too Complex”




                             UML 1: 9 diagram types
                             UML 2: 13 diagram types
                           Complex underlying structure



Thursday, March 26, 2009
“UML is Way Too Complex”




                             UML 1: 9 diagram types
                             UML 2: 13 diagram types
                           Complex underlying structure
                               UML ≠ Modeling


Thursday, March 26, 2009
“UML is Way Too Complex”




                             UML 1: 9 diagram types
                             UML 2: 13 diagram types
                           Complex underlying structure
                                UML ≠ Modeling
                            You don’t need to use it!
Thursday, March 26, 2009
So What is Modeling Anyway?
                           Basically a model is a simplified abstract
                                  view of the complex reality
                                                   (Wikipedia)




Thursday, March 26, 2009
So What is Modeling Anyway?
                           Basically a model is a simplified abstract
                                    view of the complex reality
                                                  (Wikipedia)




Thursday, March 26, 2009
It’s about simplicity!
                           Basically a model is a simplified abstract
                                    view of the complex reality
                                                  (Wikipedia)




Thursday, March 26, 2009
It’s about simplicity!
                           Basically a model is a simplified abstract
                                    view of the complex reality
                                                  (Wikipedia)




Thursday, March 26, 2009
It’s about simplicity!
                           Basically a model is a simplified abstract
                                    view of the complex reality
                                                  (Wikipedia)




Thursday, March 26, 2009
It’s about simplicity!
                           Basically a model is a simplified abstract
                                    view of the complex reality
                                                  (Wikipedia)




                                                                     Car
                                                                color
                                                                maxSpeed
                                                                startEngine
                                                                accelerate
                                                                stopEngine
                                                                brake




Thursday, March 26, 2009
“Oh, That’s Too Abstract For Me!”




Thursday, March 26, 2009
“Oh, That’s Too Abstract For Me!”


                              Abstraction is the process [...] of
                           reducing the information content of a
                            concept [...] to retain only information
                             which is relevant for a particular
                                           purpose.




Thursday, March 26, 2009
@SuppressWarnings(quot;serialquot;)
                @Entity
                @Table(name = quot;CUSTOMER_INFOquot;)
                public class CustomerInfo implements Serializable {

                	     @Id
                	     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;)
                	     @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1)
                	     @Column(name = quot;CUST_IDquot;, nullable = false)
                	     private String customerId;

                	     public void setCustomerId(String customerId) {
                	     	   this.customerId = customerId;
                	     }

                	     public String getCustomerId() {
                	     	   return customerId;
                	     }

                	     @Column(name = quot;EMAILquot;, nullable = false, length = 128)
                	     private String emailAddress;

                	     public String getEmailAddress() {
                	     	   return emailAddress;
                	     }

                	     public void setEmailAddress(String emailAddress) {
                	     	   String oldValue = emailAddress;
                	     	   this.emailAddress = emailAddress;
                	     	   firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress);
                	     }




Thursday, March 26, 2009
@SuppressWarnings(quot;serialquot;)
                @Entity
                @Table(name = quot;CUSTOMER_INFOquot;)
                public class CustomerInfo implements Serializable {

                	     @Id
                	     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;)
                	     @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1)
                	     @Column(name = quot;CUST_IDquot;, nullable = false)
                	     private String customerId;

                	     public void setCustomerId(String customerId) {
                	     	   this.customerId = customerId;
                	     }

                	     public String getCustomerId() {
                	     	   return customerId;
                	     }

                	     @Column(name = quot;EMAILquot;, nullable = false, length = 128)
                	     private String emailAddress;

                	     public String getEmailAddress() {
                	     	   return emailAddress;
                	     }

                	     public void setEmailAddress(String emailAddress) {
                	     	   String oldValue = emailAddress;
                	     	   this.emailAddress = emailAddress;
                	     	   firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress);
                	     }




Thursday, March 26, 2009
entity CustomerInfo
                           	   (id=CUST_ID, sequenceName=CUST_SEQ) {
                           	
                           	   String emailAddress (notNull, length = 128)
                           	
                           }




Thursday, March 26, 2009
entity CustomerInfo
                           	   (id=CUST_ID, sequenceName=CUST_SEQ) {
                           	
                           	   String emailAddress (notNull, length = 128)
                           	
                           }




                            This actually is a model!




Thursday, March 26, 2009
entity CustomerInfo
                                 	   (id=CUST_ID, sequenceName=CUST_SEQ) {
                                 	
                                 	   String emailAddress (notNull, length = 128)
                                 	
                                 }




                                  This actually is a model!
                           Don’t believe? Come to the Xtext BOF.



Thursday, March 26, 2009
Models Can Take Different Shapes
                           Basically a model is a simplified abstract
                                 view of the complex reality
                                                                                 (Wikipedia)
                                                 !quot;#$%&'()*+quot;,-)+./0(+123'$+24
                                                 ....!quot;#$%#+56+/&+4
                                                 ......!quot;#$%+*+(+/7.
                                                 ......../0(+12&89*$:+/2.
                                                 ........7-)+127:++%3'$+2.
                                                 ........(9/;&&6:#12<2
                                                 ........(0quot;;&&6:#126/='6/$+$2.
                                                 ........+&':+%'))'#97+12)0:+/72>4
                                                 ....!>quot;#$%#+56+/&+4
                                                                                                !quot;#$%&'%()*+,-&*'./0*'1
                                                 ....!quot;#$%077:9=67+.
                                                 ....../0(+12*0=+*2.
                                                                                                ''2)+%(3'3*)4-#*$567
                                                 ......7-)+12quot;#$%#7:9/?2>4
                                                                                                ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
                                                 !>quot;#$%&'()*+quot;,-)+4
                                                                                                ''4%9):./0*;'3*)<=%$0+*(567
                                                                                                ''./0*'3*)>-+*()567
                                                                                                ''8/%0'9*)>-+*()5./0*'8-$quot;*67
                                                                                                ?'@@'./0*
                                        0..1
                                        parent
                                                                Node
                                                           label: EString

                                                                                     0..*
                                                                                     children




Thursday, March 26, 2009
Models Can Take Different Shapes
                                              Basically a model is a simplified abstract
                                                    view of the complex reality
                                                                         (Wikipedia)


                                                                                       !quot;#$%&'()*+quot;,-)+./0(+123'$+24
                                                                                       ....!quot;#$%#+56+/&+4
                                                                                       ......!quot;#$%+*+(+/7.
                0..1
                                                                                       ......../0(+12&89*$:+/2.
                parent
                                                                                       ........7-)+127:++%3'$+2.
                              Node
                                                                                       ........(9/;&&6:#12<2
                         label: EString
                                                                                       ........(0quot;;&&6:#126/='6/$+$2.
                                                                                       ........+&':+%'))'#97+12)0:+/72>4
                                   0..*
                                                                                       ....!>quot;#$%#+56+/&+4
                                   children
                                                                                       ....!quot;#$%077:9=67+.
                                                                                       ....../0(+12*0=+*2.

                                                      !quot;#$%&'%()*+,-&*'./0*'1          ......7-)+12quot;#$%#7:9/?2>4
                                                                                       !>quot;#$%&'()*+quot;,-)+4


                                                      ''2)+%(3'3*)4-#*$567
                                                      ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
                                                      ''4%9):./0*;'3*)<=%$0+*(567
                                                      ''./0*'3*)>-+*()567
                                                      ''8/%0'9*)>-+*()5./0*'8-$quot;*67
                                                      ?'@@'./0*




Thursday, March 26, 2009
Models Can Take Different Shapes
                                  Basically a model is a simplified abstract
                                        view of the complex reality
                                                                                      (Wikipedia)
                                                        0..1
                                                        parent
                                                                      Node
                                                                 label: EString

                                                                           0..*
                                                                           children
          !quot;#$%&'%()*+,-&*'./0*'1
          ''2)+%(3'3*)4-#*$567
                                           !quot;#$%&'()*+quot;,-)+./0(+123'$+24
          ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
          ''4%9):./0*;'3*)<=%$0+*(567
                                           ....!quot;#$%#+56+/&+4
          ''./0*'3*)>-+*()567
          ''8/%0'9*)>-+*()5./0*'8-$quot;*67
          ?'@@'./0*
                                           ......!quot;#$%+*+(+/7.
                                           ......../0(+12&89*$:+/2.
                                           ........7-)+127:++%3'$+2.
                                           ........(9/;&&6:#12<2
                                           ........(0quot;;&&6:#126/='6/$+$2.
                                           ........+&':+%'))'#97+12)0:+/72>4
                                           ....!>quot;#$%#+56+/&+4
                                           ....!quot;#$%077:9=67+.
                                           ....../0(+12*0=+*2.
                                           ......7-)+12quot;#$%#7:9/?2>4
                                           !>quot;#$%&'()*+quot;,-)+4



Thursday, March 26, 2009
Models Can Take Different Shapes
                                       Basically a model is a simplified abstract
                                             view of the complex reality
                                                                                   (Wikipedia)

                                                       !quot;#$%&'%()*+,-&*'./0*'1
                                                       ''2)+%(3'3*)4-#*$567
                                                       ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
                                                       ''4%9):./0*;'3*)<=%$0+*(567
           !quot;#$%&'()*+quot;,-)+./0(+123'$+24
                                                       ''./0*'3*)>-+*()567
           ....!quot;#$%#+56+/&+4
                                                       ''8/%0'9*)>-+*()5./0*'8-$quot;*67
           ......!quot;#$%+*+(+/7.                                                                   0..1
                                                       ?'@@'./0*
           ......../0(+12&89*$:+/2.                                                              parent
           ........7-)+127:++%3'$+2.                                                                           Node
           ........(9/;&&6:#12<2                                                                          label: EString
           ........(0quot;;&&6:#126/='6/$+$2.
           ........+&':+%'))'#97+12)0:+/72>4                                                                        0..*
           ....!>quot;#$%#+56+/&+4                                                                                      children
           ....!quot;#$%077:9=67+.
           ....../0(+12*0=+*2.
           ......7-)+12quot;#$%#7:9/?2>4
           !>quot;#$%&'()*+quot;,-)+4




Thursday, March 26, 2009
EMF Acts as a Hub for Models
                                                                            !quot;#$%&'()*+quot;,-)+./0(+123'$+24
                                                                            ....!quot;#$%#+56+/&+4
            0..1                                                            ......!quot;#$%+*+(+/7.
            parent                                                          ......../0(+12&89*$:+/2.
                           Node                                             ........7-)+127:++%3'$+2.
                      label: EString                                        ........(9/;&&6:#12<2
                                                                            ........(0quot;;&&6:#126/='6/$+$2.
                                                                            ........+&':+%'))'#97+12)0:+/72>4
                                0..*
                                                                            ....!>quot;#$%#+56+/&+4
                                children
                                                                            ....!quot;#$%077:9=67+.
                                                                            ....../0(+12*0=+*2.
                                                                            ......7-)+12quot;#$%#7:9/?2>4
                                                                            !>quot;#$%&'()*+quot;,-)+4




                                           !quot;#$%&'%()*+,-&*'./0*'1
                                           ''2)+%(3'3*)4-#*$567
                                           ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
                                           ''4%9):./0*;'3*)<=%$0+*(567
                                           ''./0*'3*)>-+*()567
                                           ''8/%0'9*)>-+*()5./0*'8-$quot;*67
                                           ?'@@'./0*


Thursday, March 26, 2009
EMF Acts as a Hub for Models
                                                                            !quot;#$%&'()*+quot;,-)+./0(+123'$+24
                                                                            ....!quot;#$%#+56+/&+4
            0..1                                                            ......!quot;#$%+*+(+/7.
            parent                                                          ......../0(+12&89*$:+/2.
                           Node                                             ........7-)+127:++%3'$+2.
                      label: EString                                        ........(9/;&&6:#12<2
                                                                            ........(0quot;;&&6:#126/='6/$+$2.
                                                                            ........+&':+%'))'#97+12)0:+/72>4
                                0..*
                                                                            ....!>quot;#$%#+56+/&+4
                                children
                                                                            ....!quot;#$%077:9=67+.
                                                                            ....../0(+12*0=+*2.
                                                                            ......7-)+12quot;#$%#7:9/?2>4
                                                                            !>quot;#$%&'()*+quot;,-)+4




                                           !quot;#$%&'%()*+,-&*'./0*'1
                                           ''2)+%(3'3*)4-#*$567
                                           ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67
                                           ''4%9):./0*;'3*)<=%$0+*(567
                                           ''./0*'3*)>-+*()567
                                           ''8/%0'9*)>-+*()5./0*'8-$quot;*67
                                           ?'@@'./0*


Thursday, March 26, 2009
“All This Buzz About Meta - It Drives
                 Me Crazy!”




Thursday, March 26, 2009
“All This Buzz About Meta - It Drives
                 Me Crazy!”




Thursday, March 26, 2009
“All This Buzz About Meta - It Drives
                 Me Crazy!”




Thursday, March 26, 2009
Don’t Panic.
Thursday, March 26, 2009
Meta = Description

                                                            aNode1
                                                         label: quot;carquot;

                           0..1
                           parent                                          aNode2
                                         Node                           label: quot;wheelquot;
                                    label: EString
                                                                           aNode3
                                              0..*                      label: quot;wheelquot;
                                              children

                                                                           aNode4
                                                                        label: quot;wheelquot;

                                                                           aNode5
                                                                        label: quot;wheelquot;




Thursday, March 26, 2009
Meta = Description

                                                             aNode1
                                                          label: quot;carquot;

                            0..1
                            parent                                             aNode2
                                          Node                              label: quot;wheelquot;
                                     label: EString
                                                                               aNode3
                                               0..*                         label: quot;wheelquot;
                                               children

                                                                               aNode4
                                                                            label: quot;wheelquot;

                                                                               aNode5
                                                                            label: quot;wheelquot;




                           Description                                   Instance

Thursday, March 26, 2009
Meta = Description

                                                             aNode1
                                                          label: quot;carquot;

                            0..1
                            parent                                             aNode2
                                          Node                              label: quot;wheelquot;
                                     label: EString
                                                                               aNode3
                                               0..*                         label: quot;wheelquot;
                                               children

                                                                               aNode4
                                                                            label: quot;wheelquot;

                                                                               aNode5
                                                                            label: quot;wheelquot;




                           Description                                   Instance

Thursday, March 26, 2009
Meta = Description

                                                             aNode1
                                                          label: quot;carquot;

                            0..1
                            parent                                             aNode2
                                          Node                              label: quot;wheelquot;
                                     label: EString
                                                                               aNode3
                                               0..*                         label: quot;wheelquot;
                                               children

                                                                               aNode4
                                                                            label: quot;wheelquot;

                                                                               aNode5
                                                                            label: quot;wheelquot;




                           Description                                   Instance

Thursday, March 26, 2009
“Modeling is Too Restrictive...”




                               http://www.flickr.com/photos/two-wrongs/205467442/




                           “...it will limit my creativity”
Thursday, March 26, 2009
Let’s Talk About Creativity




Thursday, March 26, 2009
Let’s Talk About Creativity
                                     How To Create A Bean Class
                                      With A Simple Property

                                 – Create an interface to represent the API
                                   for X
                                    • A method to get the value of y
                                    • A method to set the value of y


                                 – A class to implement that API for X
                                   • A variable to store the state for y
                                   • Code to initialize the default value
                                   • A method to get the value of y
                                   • A method to set the value of y


                                 – A factory interface for creating
                                   instances
                                    • A method to create an instance of X


                                 – An class to implement the factory
                                   interface
                                    • A method to create an instance of the
                                      class for X



Thursday, March 26, 2009
Let’s Talk About Creativity
                       How To Create A Bean Class
                        With A Simple Property

                 – Create an interface to represent the API
                   for X
                    • A method to get the value of y
                    • A method to set the value of y


                 – A class to implement that API for X
                   • A variable to store the state for y
                   • Code to initialize the default value
                   • A method to get the value of y
                   • A method to set the value of y


                 – A factory interface for creating
                   instances
                    • A method to create an instance of X


                 – An class to implement the factory
                   interface
                    • A method to create an instance of the
                      class for X



Thursday, March 26, 2009
Let’s Talk About Creativity
                       How To Create A Bean Class
                        With A Simple Property

                 – Create an interface to represent the API
                   for X
                    • A method to get the value of y
                    • A method to set the value of y


                 – A class to implement that API for X
                   • A variable to store the state for y
                   • Code to initialize the default value
                   • A method to get the value of y
                   • A method to set the value of y


                 – A factory interface for creating
                   instances
                    • A method to create an instance of X


                 – An class to implement the factory
                   interface
                    • A method to create an instance of the
                      class for X



Thursday, March 26, 2009
Tedium is the True Killer of Creativity


                                             manually written
                                                 code

                                                                Frameworks

                           schematic code (manually written)



                                                Libraries




Thursday, March 26, 2009
Code Generation Kills Tedium

                            Model
                                             manually written
                                                 code
                           Generator
                                                                Frameworks

                               schematic code (generated)




                                                 Libraries




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge
                                    Eclipse Guru
                                     Generator




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge
       Step 2: provide model




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge
       Step 2: provide model



   entity CustomerInfo
   	      (id=CUST_ID, sequenceName=CUST_SEQ) {
   	
   	      String emailAddress (notNull, length = 128)
   	
   }




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge
       Step 2: provide model
       Step 3: generate code


   entity CustomerInfo
   	      (id=CUST_ID, sequenceName=CUST_SEQ) {
   	
   	      String emailAddress (notNull, length = 128)
   	
   }




Thursday, March 26, 2009
How Code Generation Works
       Step 1: capture knowledge
       Step 2: provide model
       Step 3: generate code
                                    @SuppressWarnings(quot;serialquot;)
                                    @Entity
                                    @Table(name = quot;CUSTOMER_INFOquot;)
                                    public class CustomerInfo implements Serializable {

                                    	      @Id
                                    	      @GeneratedValue(strategy = GenerationType.SEQUENCE,
                                                             generator = quot;idSeqquot;)
                                    	      @SequenceGenerator(name = quot;idSeqquot;, sequenceName =
                                                               quot;CUST_SEQquot;, allocationSize = 1)
                                    	      @Column(name = quot;CUST_IDquot;, nullable = false)
                                    	      private String customerId;

                                    	      public void setCustomerId(String customerId) {
                                    	      	      this.customerId = customerId;
                                    	      }

                                    	      public entity CustomerInfo
                                                   String getCustomerId() {
                                                  	      (id=CUST_ID, sequenceName=CUST_SEQ) {
                                    	      	        return customerId;
                                                  	
                                    	      }      	      String emailAddress (notNull, length =   128)
                                                     	
                                                     }

                                    	      @Column(name = quot;EMAILquot;, nullable = false, length = 128)
                                    	      private String emailAddress;

                                    	      public String getEmailAddress() {
                                    	      	      return emailAddress;
                                    	      }

                                    	      public     void setEmailAddress(String emailAddress) {
                                    	      	          String oldValue = emailAddress;
                                    	      	          this.emailAddress = emailAddress;
                                    	      	          firePropertyChangedEvent(quot;emailAddressquot;,
                                                            oldValue, this.emailAddress);
                                    	      }




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                                 Oh, really?!




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator

                           •   YOU are responsible for code quality




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator

                           •   YOU are responsible for code quality

                           •   YOU are responsible for performance




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator

                           •   YOU are responsible for code quality

                           •   YOU are responsible for performance




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator

                           •   YOU are responsible for code quality

                           •   YOU are responsible for performance



                    •      Template Languages have matured




Thursday, March 26, 2009
“Ok, But Generated Code Sucks”

                    •      YOU write the code generator

                           •   YOU are responsible for code quality

                           •   YOU are responsible for performance



                    •      Template Languages have matured

                           •   JET / Acceleo / Xpand




Thursday, March 26, 2009
“Diagrams Suck”




Thursday, March 26, 2009
“Diagrams Suck”

                                      •   Use wisely!




Thursday, March 26, 2009
“Diagrams Suck”

                                      •   Use wisely!

                                      •   Domain Specific
                                          Diagrams :-)




Thursday, March 26, 2009
“Diagrams Suck”

                                      •   Use wisely!

                                      •   Domain Specific
                                          Diagrams :-)

                                      •   Overview :-)




Thursday, March 26, 2009
“Diagrams Suck”

                                      •   Use wisely!

                                      •   Domain Specific
                                          Diagrams :-)

                                      •   Overview :-)

                                      •   Reverse
                                          Engineering :-(




Thursday, March 26, 2009
“DSLs will create a Tower of Babel”




Thursday, March 26, 2009
“DSLs will create a Tower of Babel”




Thursday, March 26, 2009
“DSLs will create a Tower of Babel”

                           Will domain experts write programs?




Thursday, March 26, 2009
“DSLs will create a Tower of Babel”

                            Will domain experts write programs?

                           No - but they will be able to read them!




Thursday, March 26, 2009
“DSLs will create a Tower of Babel”

                            Will domain experts write programs?

                           No - but they will be able to read them!



                             Language barriers get torn down !




Thursday, March 26, 2009
“Modeling Enforces Onerous Processes”




                           http://www.flickr.com/photos/orvaratli/2620988946/




Thursday, March 26, 2009
“Modeling Enforces Onerous Processes”




Thursday, March 26, 2009
“Modeling Enforces Onerous Processes”




                           Modeling is just a tool




Thursday, March 26, 2009
“Modeling Enforces Onerous Processes”




                                   Modeling is just a tool
                           Tools are orthogonal to your process


Thursday, March 26, 2009
“Modeling Enforces Onerous Processes”




                               Modeling is just a tool
                       Tools are orthogonal to your process
                    Modeling can be use with any kind of process

Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”

                 Expensive tools




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”

                 Expensive tools

                 Vendor lock-in




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”

                 Expensive tools

                 Vendor lock-in

                 Expensive support
                 contracts




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”

                 Expensive tools

                 Vendor lock-in

                 Expensive support
                 contracts

                 Incompatible versions




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”

                 Expensive tools

                 Vendor lock-in

                 Expensive support
                 contracts

                 Incompatible versions




Thursday, March 26, 2009
“Modeling is Just a Marketing Ploy”




                            Can you say “Open Source”?
                           SD Times rates EMF “Top Shelf”
      (http://www.sdtimes.com/content/article.aspx?ArticleID=32287)

Thursday, March 26, 2009
“Modeling Will Make Me Redundant”




Thursday, March 26, 2009
Three Things To Take Home




Thursday, March 26, 2009
Three Things To Take Home

                               Generated code is as good as the
                               effort you put into the Generator




Thursday, March 26, 2009
Three Things To Take Home

                               Generated code is as good as the
                               effort you put into the Generator

                      The Eclipse Modeling Project
                      provides a great tool stack - for free!




Thursday, March 26, 2009
Three Things To Take Home

                               Generated code is as good as the
                               effort you put into the Generator

                      The Eclipse Modeling Project
                      provides a great tool stack - for free!


                              Modeling will set your creativity free!


Thursday, March 26, 2009

Weitere ähnliche Inhalte

Was ist angesagt?

All about ISO/IEC/IEEE 42010 (r5)
All about ISO/IEC/IEEE 42010 (r5)All about ISO/IEC/IEEE 42010 (r5)
All about ISO/IEC/IEEE 42010 (r5)Rich Hilliard
 
Görüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriGörüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriTalha Kabakus
 
Pso introduction
Pso introductionPso introduction
Pso introductionrutika12345
 
Genetic Algorithms - Artificial Intelligence
Genetic Algorithms - Artificial IntelligenceGenetic Algorithms - Artificial Intelligence
Genetic Algorithms - Artificial IntelligenceSahil Kumar
 
Decision trees in Machine Learning
Decision trees in Machine Learning Decision trees in Machine Learning
Decision trees in Machine Learning Mohammad Junaid Khan
 
Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)Simeon Warner
 
Evolution of Our Software Architecture
Evolution of Our Software ArchitectureEvolution of Our Software Architecture
Evolution of Our Software ArchitecturePaul Lam
 
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...Christian Schneider
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
Cuckoo search final
Cuckoo search finalCuckoo search final
Cuckoo search finalNepalAdz
 
1.Introduction to virtualization
1.Introduction to virtualization1.Introduction to virtualization
1.Introduction to virtualizationHwanju Kim
 
Nonnegative Matrix Factorization
Nonnegative Matrix FactorizationNonnegative Matrix Factorization
Nonnegative Matrix FactorizationTatsuya Yokota
 
Multi objective optimization and Benchmark functions result
Multi objective optimization and Benchmark functions resultMulti objective optimization and Benchmark functions result
Multi objective optimization and Benchmark functions resultPiyush Agarwal
 
Introduction to XGBoost
Introduction to XGBoostIntroduction to XGBoost
Introduction to XGBoostJoonyoung Yi
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
Simulation with Python and MATLAB® in Capella
Simulation with Python and MATLAB® in CapellaSimulation with Python and MATLAB® in Capella
Simulation with Python and MATLAB® in CapellaObeo
 

Was ist angesagt? (20)

Anomaly detection
Anomaly detectionAnomaly detection
Anomaly detection
 
All about ISO/IEC/IEEE 42010 (r5)
All about ISO/IEC/IEEE 42010 (r5)All about ISO/IEC/IEEE 42010 (r5)
All about ISO/IEC/IEEE 42010 (r5)
 
Görüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriGörüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleri
 
Pso introduction
Pso introductionPso introduction
Pso introduction
 
Genetic Algorithms - Artificial Intelligence
Genetic Algorithms - Artificial IntelligenceGenetic Algorithms - Artificial Intelligence
Genetic Algorithms - Artificial Intelligence
 
Decision trees in Machine Learning
Decision trees in Machine Learning Decision trees in Machine Learning
Decision trees in Machine Learning
 
Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)
 
Evolution of Our Software Architecture
Evolution of Our Software ArchitectureEvolution of Our Software Architecture
Evolution of Our Software Architecture
 
PSO
PSOPSO
PSO
 
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Cuckoo search final
Cuckoo search finalCuckoo search final
Cuckoo search final
 
1.Introduction to virtualization
1.Introduction to virtualization1.Introduction to virtualization
1.Introduction to virtualization
 
Nonnegative Matrix Factorization
Nonnegative Matrix FactorizationNonnegative Matrix Factorization
Nonnegative Matrix Factorization
 
SOLID
SOLIDSOLID
SOLID
 
Multi objective optimization and Benchmark functions result
Multi objective optimization and Benchmark functions resultMulti objective optimization and Benchmark functions result
Multi objective optimization and Benchmark functions result
 
Introduction to XGBoost
Introduction to XGBoostIntroduction to XGBoost
Introduction to XGBoost
 
Supervised Machine Learning
Supervised Machine LearningSupervised Machine Learning
Supervised Machine Learning
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
Simulation with Python and MATLAB® in Capella
Simulation with Python and MATLAB® in CapellaSimulation with Python and MATLAB® in Capella
Simulation with Python and MATLAB® in Capella
 

Andere mochten auch

Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageMario Fusco
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionMarco Brambilla
 
Domain-Specific Languages
Domain-Specific LanguagesDomain-Specific Languages
Domain-Specific LanguagesJavier Canovas
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)Jordi Cabot
 
EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)mikaelbarbero
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...Marco Brambilla
 
You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesPhilip Langer
 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Marco Brambilla
 
Programming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfProgramming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfEd Seidewitz
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010fmadiot
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework XtextSebastian Zarnekow
 
ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008William Piers
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Pythonkwatch
 
20 examples on Domain-Specific Modeling Languages
20 examples on Domain-Specific Modeling Languages20 examples on Domain-Specific Modeling Languages
20 examples on Domain-Specific Modeling LanguagesJuha-Pekka Tolvanen
 
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...Marco Brambilla
 
Industrial experiences on Domain-Specific Modeling
Industrial experiences on Domain-Specific ModelingIndustrial experiences on Domain-Specific Modeling
Industrial experiences on Domain-Specific ModelingJuha-Pekka Tolvanen
 

Andere mochten auch (20)

Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same language
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
 
Domain-Specific Languages
Domain-Specific LanguagesDomain-Specific Languages
Domain-Specific Languages
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
 
EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
 
You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF Profiles
 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...
 
Programming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfProgramming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and Alf
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework Xtext
 
Acceleo Code Generation
Acceleo Code GenerationAcceleo Code Generation
Acceleo Code Generation
 
Eugenia
EugeniaEugenia
Eugenia
 
ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008
 
OCL tutorial
OCL tutorial OCL tutorial
OCL tutorial
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
20 examples on Domain-Specific Modeling Languages
20 examples on Domain-Specific Modeling Languages20 examples on Domain-Specific Modeling Languages
20 examples on Domain-Specific Modeling Languages
 
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
 
Industrial experiences on Domain-Specific Modeling
Industrial experiences on Domain-Specific ModelingIndustrial experiences on Domain-Specific Modeling
Industrial experiences on Domain-Specific Modeling
 

Mehr von Peter Friese

Building Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsBuilding Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsPeter Friese
 
Firebase & SwiftUI Workshop
Firebase & SwiftUI WorkshopFirebase & SwiftUI Workshop
Firebase & SwiftUI WorkshopPeter Friese
 
Building Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsBuilding Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsPeter Friese
 
Firebase for Apple Developers - SwiftHeroes
Firebase for Apple Developers - SwiftHeroesFirebase for Apple Developers - SwiftHeroes
Firebase for Apple Developers - SwiftHeroesPeter Friese
 
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift LeedsPeter Friese
 
async/await in Swift
async/await in Swiftasync/await in Swift
async/await in SwiftPeter Friese
 
Firebase for Apple Developers
Firebase for Apple DevelopersFirebase for Apple Developers
Firebase for Apple DevelopersPeter Friese
 
Building Apps with SwiftUI and Firebase
Building Apps with SwiftUI and FirebaseBuilding Apps with SwiftUI and Firebase
Building Apps with SwiftUI and FirebasePeter Friese
 
Rapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebaseRapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebasePeter Friese
 
Rapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebaseRapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebasePeter Friese
 
6 Things You Didn't Know About Firebase Auth
6 Things You Didn't Know About Firebase Auth6 Things You Didn't Know About Firebase Auth
6 Things You Didn't Know About Firebase AuthPeter Friese
 
Five Things You Didn't Know About Firebase Auth
Five Things You Didn't Know About Firebase AuthFive Things You Didn't Know About Firebase Auth
Five Things You Didn't Know About Firebase AuthPeter Friese
 
Building High-Quality Apps for Google Assistant
Building High-Quality Apps for Google AssistantBuilding High-Quality Apps for Google Assistant
Building High-Quality Apps for Google AssistantPeter Friese
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Peter Friese
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on GoogleBuilding Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on GooglePeter Friese
 
What's new in Android Wear 2.0
What's new in Android Wear 2.0What's new in Android Wear 2.0
What's new in Android Wear 2.0Peter Friese
 
Google Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinGoogle Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinPeter Friese
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android WearPeter Friese
 
Google Play Services Rock
Google Play Services RockGoogle Play Services Rock
Google Play Services RockPeter Friese
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android WearPeter Friese
 

Mehr von Peter Friese (20)

Building Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsBuilding Reusable SwiftUI Components
Building Reusable SwiftUI Components
 
Firebase & SwiftUI Workshop
Firebase & SwiftUI WorkshopFirebase & SwiftUI Workshop
Firebase & SwiftUI Workshop
 
Building Reusable SwiftUI Components
Building Reusable SwiftUI ComponentsBuilding Reusable SwiftUI Components
Building Reusable SwiftUI Components
 
Firebase for Apple Developers - SwiftHeroes
Firebase for Apple Developers - SwiftHeroesFirebase for Apple Developers - SwiftHeroes
Firebase for Apple Developers - SwiftHeroes
 
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 
async/await in Swift
async/await in Swiftasync/await in Swift
async/await in Swift
 
Firebase for Apple Developers
Firebase for Apple DevelopersFirebase for Apple Developers
Firebase for Apple Developers
 
Building Apps with SwiftUI and Firebase
Building Apps with SwiftUI and FirebaseBuilding Apps with SwiftUI and Firebase
Building Apps with SwiftUI and Firebase
 
Rapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebaseRapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and Firebase
 
Rapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and FirebaseRapid Application Development with SwiftUI and Firebase
Rapid Application Development with SwiftUI and Firebase
 
6 Things You Didn't Know About Firebase Auth
6 Things You Didn't Know About Firebase Auth6 Things You Didn't Know About Firebase Auth
6 Things You Didn't Know About Firebase Auth
 
Five Things You Didn't Know About Firebase Auth
Five Things You Didn't Know About Firebase AuthFive Things You Didn't Know About Firebase Auth
Five Things You Didn't Know About Firebase Auth
 
Building High-Quality Apps for Google Assistant
Building High-Quality Apps for Google AssistantBuilding High-Quality Apps for Google Assistant
Building High-Quality Apps for Google Assistant
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on GoogleBuilding Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google
 
What's new in Android Wear 2.0
What's new in Android Wear 2.0What's new in Android Wear 2.0
What's new in Android Wear 2.0
 
Google Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinGoogle Fit, Android Wear & Xamarin
Google Fit, Android Wear & Xamarin
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android Wear
 
Google Play Services Rock
Google Play Services RockGoogle Play Services Rock
Google Play Services Rock
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android Wear
 

Kürzlich hochgeladen

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Kürzlich hochgeladen (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

The Unbearable Stupidity of Modeling

  • 1. The Unbearable Stupidity of Modeling Ed Merks | Peter Friese (c) 2009 Ed Merks | Peter Friese. Distributed under the EDL V1.0 - http://www.eclipse.org/org/documents/edl-v10.php Thursday, March 26, 2009
  • 2. Twitter: #eclipsecon #emf http://ed-merks.blogspot.com http://www.peterfriese.de Thursday, March 26, 2009
  • 3. “The Learning Curve is Too Steep” Thursday, March 26, 2009
  • 4. “The Learning Curve is Too Steep” Thursday, March 26, 2009
  • 5. “The Learning Curve is Too Steep” • Use newsgroups Thursday, March 26, 2009
  • 6. “The Learning Curve is Too Steep” • Use newsgroups • Get Trained: Eclipse Training Alliance Thursday, March 26, 2009
  • 7. “The Learning Curve is Too Steep” • Use newsgroups • Get Trained: Eclipse Training Alliance • Consult with someone who knows Thursday, March 26, 2009
  • 8. “UML is Way Too Complex” Thursday, March 26, 2009
  • 9. “UML is Way Too Complex” Thursday, March 26, 2009
  • 10. “UML is Way Too Complex” UML 1: 9 diagram types Thursday, March 26, 2009
  • 11. “UML is Way Too Complex” UML 1: 9 diagram types UML 2: 13 diagram types Thursday, March 26, 2009
  • 12. “UML is Way Too Complex” UML 1: 9 diagram types UML 2: 13 diagram types Complex underlying structure Thursday, March 26, 2009
  • 13. “UML is Way Too Complex” UML 1: 9 diagram types UML 2: 13 diagram types Complex underlying structure UML ≠ Modeling Thursday, March 26, 2009
  • 14. “UML is Way Too Complex” UML 1: 9 diagram types UML 2: 13 diagram types Complex underlying structure UML ≠ Modeling You don’t need to use it! Thursday, March 26, 2009
  • 15. So What is Modeling Anyway? Basically a model is a simplified abstract view of the complex reality (Wikipedia) Thursday, March 26, 2009
  • 16. So What is Modeling Anyway? Basically a model is a simplified abstract view of the complex reality (Wikipedia) Thursday, March 26, 2009
  • 17. It’s about simplicity! Basically a model is a simplified abstract view of the complex reality (Wikipedia) Thursday, March 26, 2009
  • 18. It’s about simplicity! Basically a model is a simplified abstract view of the complex reality (Wikipedia) Thursday, March 26, 2009
  • 19. It’s about simplicity! Basically a model is a simplified abstract view of the complex reality (Wikipedia) Thursday, March 26, 2009
  • 20. It’s about simplicity! Basically a model is a simplified abstract view of the complex reality (Wikipedia) Car color maxSpeed startEngine accelerate stopEngine brake Thursday, March 26, 2009
  • 21. “Oh, That’s Too Abstract For Me!” Thursday, March 26, 2009
  • 22. “Oh, That’s Too Abstract For Me!” Abstraction is the process [...] of reducing the information content of a concept [...] to retain only information which is relevant for a particular purpose. Thursday, March 26, 2009
  • 23. @SuppressWarnings(quot;serialquot;) @Entity @Table(name = quot;CUSTOMER_INFOquot;) public class CustomerInfo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;) @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1) @Column(name = quot;CUST_IDquot;, nullable = false) private String customerId; public void setCustomerId(String customerId) { this.customerId = customerId; } public String getCustomerId() { return customerId; } @Column(name = quot;EMAILquot;, nullable = false, length = 128) private String emailAddress; public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { String oldValue = emailAddress; this.emailAddress = emailAddress; firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress); } Thursday, March 26, 2009
  • 24. @SuppressWarnings(quot;serialquot;) @Entity @Table(name = quot;CUSTOMER_INFOquot;) public class CustomerInfo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;) @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1) @Column(name = quot;CUST_IDquot;, nullable = false) private String customerId; public void setCustomerId(String customerId) { this.customerId = customerId; } public String getCustomerId() { return customerId; } @Column(name = quot;EMAILquot;, nullable = false, length = 128) private String emailAddress; public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { String oldValue = emailAddress; this.emailAddress = emailAddress; firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress); } Thursday, March 26, 2009
  • 25. entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } Thursday, March 26, 2009
  • 26. entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } This actually is a model! Thursday, March 26, 2009
  • 27. entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } This actually is a model! Don’t believe? Come to the Xtext BOF. Thursday, March 26, 2009
  • 28. Models Can Take Different Shapes Basically a model is a simplified abstract view of the complex reality (Wikipedia) !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ....!quot;#$%#+56+/&+4 ......!quot;#$%+*+(+/7. ......../0(+12&89*$:+/2. ........7-)+127:++%3'$+2. ........(9/;&&6:#12<2 ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 ....!>quot;#$%#+56+/&+4 !quot;#$%&'%()*+,-&*'./0*'1 ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. ''2)+%(3'3*)4-#*$567 ......7-)+12quot;#$%#7:9/?2>4 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 !>quot;#$%&'()*+quot;,-)+4 ''4%9):./0*;'3*)<=%$0+*(567 ''./0*'3*)>-+*()567 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ?'@@'./0* 0..1 parent Node label: EString 0..* children Thursday, March 26, 2009
  • 29. Models Can Take Different Shapes Basically a model is a simplified abstract view of the complex reality (Wikipedia) !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ....!quot;#$%#+56+/&+4 ......!quot;#$%+*+(+/7. 0..1 ......../0(+12&89*$:+/2. parent ........7-)+127:++%3'$+2. Node ........(9/;&&6:#12<2 label: EString ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 0..* ....!>quot;#$%#+56+/&+4 children ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. !quot;#$%&'%()*+,-&*'./0*'1 ......7-)+12quot;#$%#7:9/?2>4 !>quot;#$%&'()*+quot;,-)+4 ''2)+%(3'3*)4-#*$567 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 ''4%9):./0*;'3*)<=%$0+*(567 ''./0*'3*)>-+*()567 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ?'@@'./0* Thursday, March 26, 2009
  • 30. Models Can Take Different Shapes Basically a model is a simplified abstract view of the complex reality (Wikipedia) 0..1 parent Node label: EString 0..* children !quot;#$%&'%()*+,-&*'./0*'1 ''2)+%(3'3*)4-#*$567 !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 ''4%9):./0*;'3*)<=%$0+*(567 ....!quot;#$%#+56+/&+4 ''./0*'3*)>-+*()567 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ?'@@'./0* ......!quot;#$%+*+(+/7. ......../0(+12&89*$:+/2. ........7-)+127:++%3'$+2. ........(9/;&&6:#12<2 ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 ....!>quot;#$%#+56+/&+4 ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. ......7-)+12quot;#$%#7:9/?2>4 !>quot;#$%&'()*+quot;,-)+4 Thursday, March 26, 2009
  • 31. Models Can Take Different Shapes Basically a model is a simplified abstract view of the complex reality (Wikipedia) !quot;#$%&'%()*+,-&*'./0*'1 ''2)+%(3'3*)4-#*$567 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 ''4%9):./0*;'3*)<=%$0+*(567 !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ''./0*'3*)>-+*()567 ....!quot;#$%#+56+/&+4 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ......!quot;#$%+*+(+/7. 0..1 ?'@@'./0* ......../0(+12&89*$:+/2. parent ........7-)+127:++%3'$+2. Node ........(9/;&&6:#12<2 label: EString ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 0..* ....!>quot;#$%#+56+/&+4 children ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. ......7-)+12quot;#$%#7:9/?2>4 !>quot;#$%&'()*+quot;,-)+4 Thursday, March 26, 2009
  • 32. EMF Acts as a Hub for Models !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ....!quot;#$%#+56+/&+4 0..1 ......!quot;#$%+*+(+/7. parent ......../0(+12&89*$:+/2. Node ........7-)+127:++%3'$+2. label: EString ........(9/;&&6:#12<2 ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 0..* ....!>quot;#$%#+56+/&+4 children ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. ......7-)+12quot;#$%#7:9/?2>4 !>quot;#$%&'()*+quot;,-)+4 !quot;#$%&'%()*+,-&*'./0*'1 ''2)+%(3'3*)4-#*$567 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 ''4%9):./0*;'3*)<=%$0+*(567 ''./0*'3*)>-+*()567 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ?'@@'./0* Thursday, March 26, 2009
  • 33. EMF Acts as a Hub for Models !quot;#$%&'()*+quot;,-)+./0(+123'$+24 ....!quot;#$%#+56+/&+4 0..1 ......!quot;#$%+*+(+/7. parent ......../0(+12&89*$:+/2. Node ........7-)+127:++%3'$+2. label: EString ........(9/;&&6:#12<2 ........(0quot;;&&6:#126/='6/$+$2. ........+&':+%'))'#97+12)0:+/72>4 0..* ....!>quot;#$%#+56+/&+4 children ....!quot;#$%077:9=67+. ....../0(+12*0=+*2. ......7-)+12quot;#$%#7:9/?2>4 !>quot;#$%&'()*+quot;,-)+4 !quot;#$%&'%()*+,-&*'./0*'1 ''2)+%(3'3*)4-#*$567 ''8/%0'9*)4-#*$52)+%(3'8-$quot;*67 ''4%9):./0*;'3*)<=%$0+*(567 ''./0*'3*)>-+*()567 ''8/%0'9*)>-+*()5./0*'8-$quot;*67 ?'@@'./0* Thursday, March 26, 2009
  • 34. “All This Buzz About Meta - It Drives Me Crazy!” Thursday, March 26, 2009
  • 35. “All This Buzz About Meta - It Drives Me Crazy!” Thursday, March 26, 2009
  • 36. “All This Buzz About Meta - It Drives Me Crazy!” Thursday, March 26, 2009
  • 38. Meta = Description aNode1 label: quot;carquot; 0..1 parent aNode2 Node label: quot;wheelquot; label: EString aNode3 0..* label: quot;wheelquot; children aNode4 label: quot;wheelquot; aNode5 label: quot;wheelquot; Thursday, March 26, 2009
  • 39. Meta = Description aNode1 label: quot;carquot; 0..1 parent aNode2 Node label: quot;wheelquot; label: EString aNode3 0..* label: quot;wheelquot; children aNode4 label: quot;wheelquot; aNode5 label: quot;wheelquot; Description Instance Thursday, March 26, 2009
  • 40. Meta = Description aNode1 label: quot;carquot; 0..1 parent aNode2 Node label: quot;wheelquot; label: EString aNode3 0..* label: quot;wheelquot; children aNode4 label: quot;wheelquot; aNode5 label: quot;wheelquot; Description Instance Thursday, March 26, 2009
  • 41. Meta = Description aNode1 label: quot;carquot; 0..1 parent aNode2 Node label: quot;wheelquot; label: EString aNode3 0..* label: quot;wheelquot; children aNode4 label: quot;wheelquot; aNode5 label: quot;wheelquot; Description Instance Thursday, March 26, 2009
  • 42. “Modeling is Too Restrictive...” http://www.flickr.com/photos/two-wrongs/205467442/ “...it will limit my creativity” Thursday, March 26, 2009
  • 43. Let’s Talk About Creativity Thursday, March 26, 2009
  • 44. Let’s Talk About Creativity How To Create A Bean Class With A Simple Property – Create an interface to represent the API for X • A method to get the value of y • A method to set the value of y – A class to implement that API for X • A variable to store the state for y • Code to initialize the default value • A method to get the value of y • A method to set the value of y – A factory interface for creating instances • A method to create an instance of X – An class to implement the factory interface • A method to create an instance of the class for X Thursday, March 26, 2009
  • 45. Let’s Talk About Creativity How To Create A Bean Class With A Simple Property – Create an interface to represent the API for X • A method to get the value of y • A method to set the value of y – A class to implement that API for X • A variable to store the state for y • Code to initialize the default value • A method to get the value of y • A method to set the value of y – A factory interface for creating instances • A method to create an instance of X – An class to implement the factory interface • A method to create an instance of the class for X Thursday, March 26, 2009
  • 46. Let’s Talk About Creativity How To Create A Bean Class With A Simple Property – Create an interface to represent the API for X • A method to get the value of y • A method to set the value of y – A class to implement that API for X • A variable to store the state for y • Code to initialize the default value • A method to get the value of y • A method to set the value of y – A factory interface for creating instances • A method to create an instance of X – An class to implement the factory interface • A method to create an instance of the class for X Thursday, March 26, 2009
  • 47. Tedium is the True Killer of Creativity manually written code Frameworks schematic code (manually written) Libraries Thursday, March 26, 2009
  • 48. Code Generation Kills Tedium Model manually written code Generator Frameworks schematic code (generated) Libraries Thursday, March 26, 2009
  • 49. How Code Generation Works Step 1: capture knowledge Thursday, March 26, 2009
  • 50. How Code Generation Works Step 1: capture knowledge Eclipse Guru Generator Thursday, March 26, 2009
  • 51. How Code Generation Works Step 1: capture knowledge Thursday, March 26, 2009
  • 52. How Code Generation Works Step 1: capture knowledge Thursday, March 26, 2009
  • 53. How Code Generation Works Step 1: capture knowledge Step 2: provide model Thursday, March 26, 2009
  • 54. How Code Generation Works Step 1: capture knowledge Step 2: provide model entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } Thursday, March 26, 2009
  • 55. How Code Generation Works Step 1: capture knowledge Step 2: provide model Step 3: generate code entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } Thursday, March 26, 2009
  • 56. How Code Generation Works Step 1: capture knowledge Step 2: provide model Step 3: generate code @SuppressWarnings(quot;serialquot;) @Entity @Table(name = quot;CUSTOMER_INFOquot;) public class CustomerInfo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;) @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1) @Column(name = quot;CUST_IDquot;, nullable = false) private String customerId; public void setCustomerId(String customerId) { this.customerId = customerId; } public entity CustomerInfo String getCustomerId() { (id=CUST_ID, sequenceName=CUST_SEQ) { return customerId; } String emailAddress (notNull, length = 128) } @Column(name = quot;EMAILquot;, nullable = false, length = 128) private String emailAddress; public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { String oldValue = emailAddress; this.emailAddress = emailAddress; firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress); } Thursday, March 26, 2009
  • 57. “Ok, But Generated Code Sucks” Thursday, March 26, 2009
  • 58. “Ok, But Generated Code Sucks” Oh, really?! Thursday, March 26, 2009
  • 59. “Ok, But Generated Code Sucks” Thursday, March 26, 2009
  • 60. “Ok, But Generated Code Sucks” • YOU write the code generator Thursday, March 26, 2009
  • 61. “Ok, But Generated Code Sucks” • YOU write the code generator • YOU are responsible for code quality Thursday, March 26, 2009
  • 62. “Ok, But Generated Code Sucks” • YOU write the code generator • YOU are responsible for code quality • YOU are responsible for performance Thursday, March 26, 2009
  • 63. “Ok, But Generated Code Sucks” • YOU write the code generator • YOU are responsible for code quality • YOU are responsible for performance Thursday, March 26, 2009
  • 64. “Ok, But Generated Code Sucks” • YOU write the code generator • YOU are responsible for code quality • YOU are responsible for performance • Template Languages have matured Thursday, March 26, 2009
  • 65. “Ok, But Generated Code Sucks” • YOU write the code generator • YOU are responsible for code quality • YOU are responsible for performance • Template Languages have matured • JET / Acceleo / Xpand Thursday, March 26, 2009
  • 67. “Diagrams Suck” • Use wisely! Thursday, March 26, 2009
  • 68. “Diagrams Suck” • Use wisely! • Domain Specific Diagrams :-) Thursday, March 26, 2009
  • 69. “Diagrams Suck” • Use wisely! • Domain Specific Diagrams :-) • Overview :-) Thursday, March 26, 2009
  • 70. “Diagrams Suck” • Use wisely! • Domain Specific Diagrams :-) • Overview :-) • Reverse Engineering :-( Thursday, March 26, 2009
  • 71. “DSLs will create a Tower of Babel” Thursday, March 26, 2009
  • 72. “DSLs will create a Tower of Babel” Thursday, March 26, 2009
  • 73. “DSLs will create a Tower of Babel” Will domain experts write programs? Thursday, March 26, 2009
  • 74. “DSLs will create a Tower of Babel” Will domain experts write programs? No - but they will be able to read them! Thursday, March 26, 2009
  • 75. “DSLs will create a Tower of Babel” Will domain experts write programs? No - but they will be able to read them! Language barriers get torn down ! Thursday, March 26, 2009
  • 76. “Modeling Enforces Onerous Processes” http://www.flickr.com/photos/orvaratli/2620988946/ Thursday, March 26, 2009
  • 77. “Modeling Enforces Onerous Processes” Thursday, March 26, 2009
  • 78. “Modeling Enforces Onerous Processes” Modeling is just a tool Thursday, March 26, 2009
  • 79. “Modeling Enforces Onerous Processes” Modeling is just a tool Tools are orthogonal to your process Thursday, March 26, 2009
  • 80. “Modeling Enforces Onerous Processes” Modeling is just a tool Tools are orthogonal to your process Modeling can be use with any kind of process Thursday, March 26, 2009
  • 81. “Modeling is Just a Marketing Ploy” Thursday, March 26, 2009
  • 82. “Modeling is Just a Marketing Ploy” Expensive tools Thursday, March 26, 2009
  • 83. “Modeling is Just a Marketing Ploy” Expensive tools Vendor lock-in Thursday, March 26, 2009
  • 84. “Modeling is Just a Marketing Ploy” Expensive tools Vendor lock-in Expensive support contracts Thursday, March 26, 2009
  • 85. “Modeling is Just a Marketing Ploy” Expensive tools Vendor lock-in Expensive support contracts Incompatible versions Thursday, March 26, 2009
  • 86. “Modeling is Just a Marketing Ploy” Expensive tools Vendor lock-in Expensive support contracts Incompatible versions Thursday, March 26, 2009
  • 87. “Modeling is Just a Marketing Ploy” Can you say “Open Source”? SD Times rates EMF “Top Shelf” (http://www.sdtimes.com/content/article.aspx?ArticleID=32287) Thursday, March 26, 2009
  • 88. “Modeling Will Make Me Redundant” Thursday, March 26, 2009
  • 89. Three Things To Take Home Thursday, March 26, 2009
  • 90. Three Things To Take Home Generated code is as good as the effort you put into the Generator Thursday, March 26, 2009
  • 91. Three Things To Take Home Generated code is as good as the effort you put into the Generator The Eclipse Modeling Project provides a great tool stack - for free! Thursday, March 26, 2009
  • 92. Three Things To Take Home Generated code is as good as the effort you put into the Generator The Eclipse Modeling Project provides a great tool stack - for free! Modeling will set your creativity free! Thursday, March 26, 2009

Hinweis der Redaktion