SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Test Desiderativo
Test DesiderativoTest Desiderativo
Test Desiderativonatytolo1
 
Aplicaciones de HTP
Aplicaciones de HTPAplicaciones de HTP
Aplicaciones de HTPAide Ortega
 
Rutas absolutas y relativas
Rutas absolutas y relativasRutas absolutas y relativas
Rutas absolutas y relativasermendalirenda
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolvesounakano
 
Bd master guide extract encapsulated bios
Bd master guide extract encapsulated biosBd master guide extract encapsulated bios
Bd master guide extract encapsulated biosIman Teguh Pribadi
 
SFO15-503: Secure storage in OP-TEE
SFO15-503: Secure storage in OP-TEESFO15-503: Secure storage in OP-TEE
SFO15-503: Secure storage in OP-TEELinaro
 
Historia clínica Psicológica
Historia clínica PsicológicaHistoria clínica Psicológica
Historia clínica PsicológicaAndrea Luna
 
コンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみるコンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみるinfinite_loop
 
LCU14-103: How to create and run Trusted Applications on OP-TEE
LCU14-103: How to create and run Trusted Applications on OP-TEELCU14-103: How to create and run Trusted Applications on OP-TEE
LCU14-103: How to create and run Trusted Applications on OP-TEELinaro
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLinaro
 
Secret of Intel Management Engine by Igor Skochinsky
Secret of Intel Management Engine  by Igor SkochinskySecret of Intel Management Engine  by Igor Skochinsky
Secret of Intel Management Engine by Igor SkochinskyCODE BLUE
 

La actualidad más candente (16)

Test Desiderativo
Test DesiderativoTest Desiderativo
Test Desiderativo
 
Aplicaciones de HTP
Aplicaciones de HTPAplicaciones de HTP
Aplicaciones de HTP
 
Rutas absolutas y relativas
Rutas absolutas y relativasRutas absolutas y relativas
Rutas absolutas y relativas
 
Cuadernillo de estimulos Wisc-IV Nº 01
Cuadernillo de estimulos Wisc-IV Nº 01Cuadernillo de estimulos Wisc-IV Nº 01
Cuadernillo de estimulos Wisc-IV Nº 01
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolve
 
Bd master guide extract encapsulated bios
Bd master guide extract encapsulated biosBd master guide extract encapsulated bios
Bd master guide extract encapsulated bios
 
SFO15-503: Secure storage in OP-TEE
SFO15-503: Secure storage in OP-TEESFO15-503: Secure storage in OP-TEE
SFO15-503: Secure storage in OP-TEE
 
Historia clínica Psicológica
Historia clínica PsicológicaHistoria clínica Psicológica
Historia clínica Psicológica
 
Manual
ManualManual
Manual
 
test Dibujo familia
test Dibujo familiatest Dibujo familia
test Dibujo familia
 
コンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみるコンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみる
 
LCU14-103: How to create and run Trusted Applications on OP-TEE
LCU14-103: How to create and run Trusted Applications on OP-TEELCU14-103: How to create and run Trusted Applications on OP-TEE
LCU14-103: How to create and run Trusted Applications on OP-TEE
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
 
Secret of Intel Management Engine by Igor Skochinsky
Secret of Intel Management Engine  by Igor SkochinskySecret of Intel Management Engine  by Igor Skochinsky
Secret of Intel Management Engine by Igor Skochinsky
 
Tat
TatTat
Tat
 
ELF
ELFELF
ELF
 

Destacado

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
 

Destacado (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
 

Más de 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
 

Más de 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
 

Último

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
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
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Último (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

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

Notas del editor