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

Preview:

DESCRIPTION

 

Citation preview

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

Stephan HochdörferbitExpert AG

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

Über mich

Stephan Hochdörfer, bitExpert AG

Department Manager Research Labs

S.Hochdoerfer@bitExpert.de

@shochdoerfer

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

Software-Generator?

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

Software-Generator?

WTF?!?

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

Software-Generator?

Bin ich bald arbeitslos?

Entwickler vs. Geschäftsmann

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

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

Standardisieren du sollst!

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

Generalisieren du sollst!

Generative Programmierung

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

Softwaresystemfamilien, Implementierungskomponenten

und Konfigurationswissen

Generative Programmierung: Workflow

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

GeneratorGenerator

Generative Programmierung: Workflow

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

Konfiguration(DSL)

Konfiguration(DSL)

GeneratorGenerator

Generative Programmierung: Workflow

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

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

Generative Programmierung: Workflow

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

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

ProduktProdukt

1..n

Generative Programmierung: Workflow

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

Konfiguration(DSL)

Konfiguration(DSL)

Implementierungs-komponenten

Implementierungs-komponenten GeneratorGenerator

Kunde 1Kunde 1

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

Softwaresystemfamilie

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

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

Familienmitglieder.

Generative Programmierung

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

Generator

Domain Engineering

Domänen-analyse

Domänen-design

Domänen-implementierung

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

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

Standardisieren du sollst!

Generative Programmierung: Framework

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

Java + Maven + Spring + Eclipse

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

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

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>

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>

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>

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>

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>

Generative Programmierung: ContentProvider

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

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

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>

Generative Programmierung: Generator

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

mvn replicator:run

Generative Programmierung

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

Wie kommt nun mein Code in den Generator?

Generative Programmierung

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

Ganz einfach: Importieren ;)

Generative Programmierung: Ziel

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

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

Generative Programmierung: Ziel

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

Optimierte Anwendungen nach Bedarf bauen können!

Generative Programmierung: Ziel

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

Zusammenbau der einzelnen Komponenten automatisieren!

Generative Programmierung: Bonus

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

Generative Programmierung: Bonus

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

Durch Automatisierung weniger fehleranfällig!

Generative Programmierung: Bonus

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

Reduzierung der Komplexität der Endprodukte.

Generative Programmierung: Bonus

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

Nur ein Code-Repository: Der Softwaregenerator

Generative Programmierung: Bonus

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

Wartungsaufwände reduzieren

Generative Programmierung: Bonus

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

MerkmalImplementierungs-

komponente

Generative Programmierung: Bonus

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

Merkmal Kunde

Generative Programmierung: Bonus

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

Merkmal

Implementierungs-komponente

Kunde

Generative Programmierung: Das Buch

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

Lust auf mehr?

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

http://replicatorframework.org

Vielen Dank!

Recommended