software automation with eclipse modeling

46
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

Upload: peter-friese

Post on 15-Jan-2015

1.779 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Software Automation with Eclipse Modeling

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

Page 2: Software Automation with Eclipse Modeling
Page 3: Software Automation with Eclipse Modeling
Page 4: Software Automation with Eclipse Modeling
Page 5: Software Automation with Eclipse Modeling
Page 6: Software Automation with Eclipse Modeling
Page 7: Software Automation with Eclipse Modeling

Some Typical Situations in

Software Development

Page 8: Software Automation with Eclipse Modeling

Boring code

Page 9: Software Automation with Eclipse Modeling

Accidental complexity

Page 10: Software Automation with Eclipse Modeling

Wrong level of abstraction

Page 11: Software Automation with Eclipse Modeling

Anatomy of Modern Software

Software artifact

Page 12: Software Automation with Eclipse Modeling

Anatomy of Modern Software

Libraries

Frameworksmanually written code

Page 13: Software Automation with Eclipse Modeling

Anatomy of Modern Software

schematic code (manually written)

Libraries

Frameworks

manually written code

Page 14: Software Automation with Eclipse Modeling

The Result?

Page 15: Software Automation with Eclipse Modeling

More and more code to write

Page 16: Software Automation with Eclipse Modeling

More and more code to write

Page 17: Software Automation with Eclipse Modeling

More and more code to write

Page 18: Software Automation with Eclipse Modeling

Problems

Page 19: Software Automation with Eclipse Modeling

Problems

Page 20: Software Automation with Eclipse Modeling

Problems

Can we solve them with models?

Page 21: Software Automation with Eclipse Modeling

Yes, we can!

Page 22: Software Automation with Eclipse Modeling

schematic code (generated)

Libraries

Frameworks

manually written code

Model

Generator

Code Generation Helps

Page 23: Software Automation with Eclipse Modeling

MDSD

Metamodel

Model

<<instanceof>>

Generator

Modelgeneratedcode

Platform

manually written code

Page 24: Software Automation with Eclipse Modeling

MDSD with UML

UML

Metamodel

Model

<<instanceof>>

Generator

Modelgeneratedcode

Platform

manually written code

Page 25: Software Automation with Eclipse Modeling

Demo

Page 26: Software Automation with Eclipse Modeling
Page 27: Software Automation with Eclipse Modeling

@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); }

Page 28: Software Automation with Eclipse Modeling

@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); }

Page 29: Software Automation with Eclipse Modeling

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

Page 30: Software Automation with Eclipse Modeling

Bean(POJO) DAO

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

Page 31: Software Automation with Eclipse Modeling
Page 32: Software Automation with Eclipse Modeling

Page 33: Software Automation with Eclipse Modeling

Concentrate on Essentials

Page 34: Software Automation with Eclipse Modeling

Higher Efficiency

Page 35: Software Automation with Eclipse Modeling

Better Maintainability

http://www.flickr.com/photos/flyforfun/2638180406/

Page 36: Software Automation with Eclipse Modeling

No More Boring Code

Page 37: Software Automation with Eclipse Modeling

Some

Users

Page 38: Software Automation with Eclipse Modeling

Deutsche Börse Systems AG

Page 39: Software Automation with Eclipse Modeling

Deutsche Börse Systems AG

Page 40: Software Automation with Eclipse Modeling

APG Affichage

Page 41: Software Automation with Eclipse Modeling

APG Affichage

Page 42: Software Automation with Eclipse Modeling

Fraunhofer IWES

Page 43: Software Automation with Eclipse Modeling

Fraunhofer IWES

Page 44: Software Automation with Eclipse Modeling

BMW Car IT

Page 45: Software Automation with Eclipse Modeling

BMW Car IT

Page 46: Software Automation with Eclipse Modeling

Twitter: @xtexthttp://www.xtext.org