75
Wie Software-Generatoren die Welt verändern können Stephan Hochdörfer bitExpert AG

Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Stephan HochdörferbitExpert AG

Page 2: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Über mich

Stephan Hochdörfer, bitExpert AG

Department Manager Research Labs

[email protected]

@shochdoerfer

Page 3: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Software-Generator?

Page 4: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Software-Generator?

WTF?!?

Page 5: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Software-Generator?

Bin ich bald arbeitslos?

Page 6: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 7: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Entwickler vs. Geschäftsmann

Wie Software-Generatoren die Welt verändern können

Page 8: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 9: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 10: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 11: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 12: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 13: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Standardisieren du sollst!

Page 14: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 15: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 16: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 17: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 18: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Generalisieren du sollst!

Page 19: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung

Wie Software-Generatoren die Welt verändern können

Softwaresystemfamilien, Implementierungskomponenten

und Konfigurationswissen

Page 20: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

GeneratorGenerator

Page 21: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

Konfiguration(DSL)

Konfiguration(DSL)

GeneratorGenerator

Page 22: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

Page 23: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

ProduktProdukt

1..n

Page 24: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

Kunde 1Kunde 1

Page 25: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Workflow

Wie Software-Generatoren die Welt verändern können

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

Kunde 1Kunde 1

Kunde 2Kunde 2

Page 26: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 27: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Softwaresystemfamilie

Wie Software-Generatoren die Welt verändern können

Eine Menge von Applikationen mit ähnlichen Eigenschaften wie auch speziellen Ausprägungen einzelner

Familienmitglieder.

Page 28: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 29: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 30: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 31: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 32: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 33: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 34: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 35: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 36: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 37: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 38: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 39: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 40: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 41: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 42: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 43: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung

Wie Software-Generatoren die Welt verändern können

Generator

Domain Engineering

Domänen-analyse

Domänen-design

Domänen-implementierung

Page 44: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung

Wie Software-Generatoren die Welt verändern können

Generator Produkt

Domain Engineering App. Engineering

Domänen-analyse

Domänen-design

Domänen-implementierung

Anforderungs-analyse

Produkt-konfiguration

Testen undIntegration

NeueAnforderungen

Komponenten,DSL,Generatoren,Infrastruktur

Page 45: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 46: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 47: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Wie Software-Generatoren die Welt verändern können

Standardisieren du sollst!

Page 48: Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Page 49: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Framework

Wie Software-Generatoren die Welt verändern können

Java + Maven + Spring + Eclipse

Page 50: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Framework

Wie Software-Generatoren die Welt verändern können

./samplegenerator |-config |---generator.properties |---gpl.xml |-src |---main |-----java |-----resources |-------frames |-------generator |---------contentProvider.xml |---------features.xml |---------frames.xml |---------generatorContext.xml |---test |-----java |-----resources |-target

Page 51: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Features

Wie Software-Generatoren die Welt verändern können

51

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:gp="http://www.replicatorframework.org/schema/gp"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/...">

<gp:feature name="ContactForm" />

<gp:feature name="HintLayer" /></beans>

./src/main/resources/generator/features.xml

Page 52: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Frames

Wie Software-Generatoren die Welt verändern können

52

./src/main/resources/generator/frames.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:gp="http://www.replicatorframework.org/schema/gp"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/...">

<gp:fileframe id="App.ContactForm" sourcePath="frames/webroot/form.frm" exportPath="webroot/form.html"></gp:fileframe>

<gp:frame id="App.ContactForm.HintLayer" sourcePath="frames/webroot/hintlayer.frm"></gp:frame>

<gp:bundle id="App.Resources.Images" sourcePath="frames/webroot/resources/img" exportPath="webroot/resources/img" />

</beans>

Page 53: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Frame + Feature

Wie Software-Generatoren die Welt verändern können

53

./src/main/resources/generator/features.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:gp="http://www.replicatorframework.org/schema/gp"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/...">

<gp:feature name="ContactForm"> <!-- refers to the defined FileFrame --> <gp:resource ref="App.ContactForm"/> <!-- refers to the defined ResourceBundle --> <gp:resource ref="App.Resources.Images"/></gp:feature>

<gp:feature name="HintLayer" /></beans>

Page 54: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: ContentProvider

Wie Software-Generatoren die Welt verändern können

5454

./src/main/resources/frames/webroot/form.frm

<html><head> <title>Sample form</title></head><body><h1><!{hello}!></h1><form action="index.do" method="post"><textarea name="msg"></textarea></form><!{hint}!></body></html>

Page 55: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: ContentProvider

Wie Software-Generatoren die Welt verändern können

55

./src/main/resources/generator/contentProvider.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:gp="http://www.replicatorframework.org/schema/gp"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/...">

<gp:contentProvider id="GenericContentProvider" type="generic">

<gp:rule> <gp:condition>

<gp:group type="AND"> <gp:hasFeature name="ContactForm"/>

</gp:group> </gp:condition>

<gp:bind slot="hello" value="Hello World!"></gp:bind> </gp:rule></gp:contentProvider>

</beans>

Page 56: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: ContentProvider

Wie Software-Generatoren die Welt verändern können

5656

./src/main/resources/generator/contentProvider.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:gp="http://www.replicatorframework.org/schema/gp"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/...">

<gp:contentProvider id="GenericContentProvider" type="generic">

<gp:rule> <gp:condition> <gp:hasFeature name="HintLayer"/>

</gp:condition> <gp:bind slot="hint"

ref="App.ContactForm.HintLayer" /> </gp:rule></gp:contentProvider>

</beans>

Page 57: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: ContentProvider

Wie Software-Generatoren die Welt verändern können

Args! Zu viel XML! Ich will doch programmieren....

Page 58: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Konfiguration

Wie Software-Generatoren die Welt verändern können

5858

./config/gpl.xml<?xml version="1.0" encoding="UTF-8"?><features xmlns="http://www.replicatorframework.org/schema/gpl"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.replicatorframework.org/... http://www.replicatorframework.org/schema/gpl/gpl-

0.0.6.xsd">

<feature name="hintLayer"> <param name="color" type="String" value="#000" /> <param name="autoClose" type="Boolean" value="true" /></feature>

</features>

Page 59: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Generator

Wie Software-Generatoren die Welt verändern können

mvn replicator:run

Page 60: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung

Wie Software-Generatoren die Welt verändern können

Wie kommt nun mein Code in den Generator?

Page 61: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung

Wie Software-Generatoren die Welt verändern können

Ganz einfach: Importieren ;)

Page 62: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Ziel

Wie Software-Generatoren die Welt verändern können

Steigerung von Produktivität, Qualität und Lieferzeit.

Page 63: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Ziel

Wie Software-Generatoren die Welt verändern können

Optimierte Anwendungen nach Bedarf bauen können!

Page 64: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Ziel

Wie Software-Generatoren die Welt verändern können

Zusammenbau der einzelnen Komponenten automatisieren!

Page 65: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Page 66: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Durch Automatisierung weniger fehleranfällig!

Page 67: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Reduzierung der Komplexität der Endprodukte.

Page 68: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Nur ein Code-Repository: Der Softwaregenerator

Page 69: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Wartungsaufwände reduzieren

Page 70: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

MerkmalImplementierungs-

komponente

Page 71: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Merkmal Kunde

Page 72: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Bonus

Wie Software-Generatoren die Welt verändern können

Merkmal

Implementierungs-komponente

Kunde

Page 73: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Generative Programmierung: Das Buch

Wie Software-Generatoren die Welt verändern können

Page 74: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Lust auf mehr?

Wie Software-Generatoren die Welt verändern können

http://replicatorframework.org

Page 75: Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Vielen Dank!