Software Automation with Eclipse Modeling

2,042 views
1,977 views

Published on

Slides for my talk at http://www.itemis.de/itemis-ag/veranstaltungen/2009/language=de/taps=646/27333/innovative-softwareentwicklung-modellbasiert-agil-und-nutzerzentriert

Published in: Technology

Software Automation with Eclipse Modeling

  1. 1. Software Automation with Eclipse Modeling Peter Friese, itemis @peterfriese @xtext (c) 2009 Peter Friese. Distributed under the EDL V1.0 - http://www.eclipse.org/org/documents/edl-v10.php More info: http://www.peterfriese.de / http://www.itemis.com
  2. 2. Some Typical Situations in Software Development
  3. 3. Boring code
  4. 4. Accidental complexity
  5. 5. Wrong level of abstraction
  6. 6. Anatomy of Modern Software Software artifact
  7. 7. Anatomy of Modern Software manually written code Frameworks Libraries
  8. 8. Anatomy of Modern Software manually written code Frameworks schematic code (manually written) Libraries
  9. 9. The Result?
  10. 10. More and more code to write
  11. 11. More and more code to write
  12. 12. More and more code to write
  13. 13. Problems
  14. 14. Problems
  15. 15. Problems Can we solve them with models?
  16. 16. Yes, we can!
  17. 17. Code Generation Helps Model manually written code Generator Frameworks schematic code (generated) Libraries
  18. 18. MDSD Metamodel <<instanceof>> generated manually written Model Model code code Generator Platform
  19. 19. MDSD with UML Metamodel <<instanceof>> generated manually written Model Model code code Generator UML Platform
  20. 20. Demo
  21. 21. @SuppressWarnings("serial") @Entity @Table(name = "CUSTOMER_INFO") public class CustomerInfo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idSeq") @SequenceGenerator(name = "idSeq", sequenceName = "CUST_SEQ", allocationSize = 1) @Column(name = "CUST_ID", nullable = false) private String customerId; public void setCustomerId(String customerId) { this.customerId = customerId; } public String getCustomerId() { return customerId; } @Column(name = "EMAIL", nullable = false, length = 128) private String emailAddress; public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { String oldValue = emailAddress; this.emailAddress = emailAddress; firePropertyChangedEvent("emailAddress", oldValue, this.emailAddress); }
  22. 22. @SuppressWarnings("serial") @Entity @Table(name = "CUSTOMER_INFO") public class CustomerInfo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idSeq") @SequenceGenerator(name = "idSeq", sequenceName = "CUST_SEQ", allocationSize = 1) @Column(name = "CUST_ID", nullable = false) private String customerId; public void setCustomerId(String customerId) { this.customerId = customerId; } public String getCustomerId() { return customerId; } @Column(name = "EMAIL", nullable = false, length = 128) private String emailAddress; public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { String oldValue = emailAddress; this.emailAddress = emailAddress; firePropertyChangedEvent("emailAddress", oldValue, this.emailAddress); }
  23. 23. entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) }
  24. 24. entity CustomerInfo (id=CUST_ID, sequenceName=CUST_SEQ) { String emailAddress (notNull, length = 128) } Bean DAO (POJO)
  25. 25.
  26. 26. Concentrate on Essentials
  27. 27. Higher Efficiency
  28. 28. Better Maintainability http://www.flickr.com/photos/flyforfun/2638180406/
  29. 29. No More Boring Code
  30. 30. Some Users
  31. 31. Deutsche Börse Systems AG
  32. 32. Deutsche Börse Systems AG
  33. 33. APG Affichage
  34. 34. APG Affichage
  35. 35. Fraunhofer IWES
  36. 36. Fraunhofer IWES
  37. 37. BMW Car IT
  38. 38. BMW Car IT
  39. 39. Twitter: @xtext http://www.xtext.org

×