SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Downloaden Sie, um offline zu lesen
Wie Software-Generatoren die Welt
        verändern können

       Stephan Hochdörfer
             bitExpert 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?
Wie Software-Generatoren die Welt verändern können




    Entwickler              vs.       Geschäftsmann
Wie Software-Generatoren die Welt verändern können




              Standardisieren du sollst!
Wie Software-Generatoren die Welt verändern können




               Generalisieren du sollst!
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung



       Softwaresystemfamilien,
     Implementierungskomponenten
       und Konfigurationswissen
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Workflow




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

 Generative Programmierung: Workflow

                            Konfiguration
                             Konfiguration
                               (DSL)
                                (DSL)




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

 Generative Programmierung: Workflow

                            Konfiguration
                             Konfiguration
                               (DSL)
                                (DSL)




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

 Generative Programmierung: Workflow

                            Konfiguration
                             Konfiguration
                               (DSL)
                                (DSL)



                                                     1..n
  Implementierungs-
   Implementierungs-
    komponenten
                             Generator
                             Generator                 Produkt
     komponenten                                        Produkt
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Workflow

                            Konfiguration
                             Konfiguration
                               (DSL)
                                (DSL)




  Implementierungs-
   Implementierungs-
    komponenten
                             Generator
                             Generator               Kunde 11
     komponenten                                      Kunde
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Workflow

                            Konfiguration
                             Konfiguration
                               (DSL)
                                (DSL)
                                                     Kunde 22
                                                      Kunde



  Implementierungs-
   Implementierungs-
    komponenten
                             Generator
                             Generator               Kunde 11
     komponenten                                      Kunde
Wie Software-Generatoren die Welt verändern können

 Softwaresystemfamilie


  Eine Menge von Applikationen mit
  ähnlichen Eigenschaften wie auch
  speziellen Ausprägungen einzelner
          Familienmitglieder.
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung
           Generator
       Domain Engineering


           Domänen-
            analyse


           Domänen-
            design


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

 Generative Programmierung
           Generator                           Produkt
       Domain Engineering                   App. Engineering
                            Neue
                            Anforderungen

           Domänen-                          Anforderungs-
            analyse                             analyse


           Domänen-                            Produkt-
            design                           konfiguration


                            Komponenten,
            Domänen-        DSL,              Testen und
         implementierung    Generatoren,      Integration
                            Infrastruktur
Wie Software-Generatoren die Welt verändern können




              Standardisieren du sollst!
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Framework




   Java + Maven + Spring + Eclipse
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Framework
 ./samplegenerator
    |-config
    |---generator.properties
    |---gpl.xml
    |-src
    |---main
    |-----java
    |-----resources
    |-------frames
    |-------generator
    |---------contentProvider.xml
    |---------features.xml
    |---------frames.xml
    |---------generatorContext.xml
    |---test
    |-----java
    |-----resources
    |-target
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Features
 ./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" />

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




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

 Generative Programmierung: Frames
 ./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>

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

 Generative Programmierung: Frame + Feature
./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>


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

 Generative Programmierung: ContentProvider
./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>




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

 Generative Programmierung: ContentProvider
./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>

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

 Generative Programmierung: ContentProvider
./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>

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

 Generative Programmierung: ContentProvider




          Args! Zu viel XML!
    Ich will doch programmieren....
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Konfiguration
./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>




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

 Generative Programmierung: Generator




               mvn replicator:run
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung




      Wie kommt nun mein Code in
            den Generator?
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung




      Ganz einfach: Importieren ;)
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Ziel




      Steigerung von Produktivität,
         Qualität und Lieferzeit.
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Ziel




     Optimierte Anwendungen nach
         Bedarf bauen können!
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Ziel




     Zusammenbau der einzelnen
     Komponenten automatisieren!
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Bonus
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Bonus




    Durch Automatisierung weniger
            fehleranfällig!
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Bonus




   Reduzierung der Komplexität der
            Endprodukte.
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Bonus




         Nur ein Code-Repository:
          Der Softwaregenerator
Wie Software-Generatoren die Welt verändern können

 Generative Programmierung: Bonus




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

 Generative Programmierung: Bonus




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

 Generative Programmierung: Bonus




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

 Generative Programmierung: Bonus

                           Kunde




                          Merkmal




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

 Generative Programmierung: Das Buch
Wie Software-Generatoren die Welt verändern können

 Lust auf mehr?




                    http://replicatorframework.org
Vielen Dank!

Weitere ähnliche Inhalte

Andere mochten auch

Torsten Grote: Freie Software
Torsten Grote: Freie SoftwareTorsten Grote: Freie Software
Torsten Grote: Freie SoftwareStefanMz
 
Présentation update crm lsi
Présentation update crm lsi Présentation update crm lsi
Présentation update crm lsi SaaS Guru
 
Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Matthias Stürmer
 
Das Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimierenDas Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimierenMatthias Stürmer
 
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...Ayelt Komus
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social SoftwareGPMS
 
Wertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenWertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenMichael Moser
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010MD DAY
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...ljaquet
 
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...styropor
 
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementSoftware Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementALTAIDE
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk AG
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines AosdCédric WILLIAMSON
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsAndreas Schreiber
 
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Club Alliances
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando CódigosRafael Rosa
 

Andere mochten auch (20)

Torsten Grote: Freie Software
Torsten Grote: Freie SoftwareTorsten Grote: Freie Software
Torsten Grote: Freie Software
 
Présentation update crm lsi
Présentation update crm lsi Présentation update crm lsi
Présentation update crm lsi
 
Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?
 
Das Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimierenDas Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimieren
 
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social Software
 
Wertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenWertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-Systemen
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
 
FABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriertFABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriert
 
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
 
Lm software
Lm softwareLm software
Lm software
 
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementSoftware Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines Aosd
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
Slide Lewis Chimarro
Slide   Lewis ChimarroSlide   Lewis Chimarro
Slide Lewis Chimarro
 
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos
 
Arcsys software - Le coffre fort numérique
Arcsys software - Le coffre fort numériqueArcsys software - Le coffre fort numérique
Arcsys software - Le coffre fort numérique
 

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

Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineggedoplan
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
 
Standardsoftware von der Stange - gearconf11
Standardsoftware von der Stange - gearconf11Standardsoftware von der Stange - gearconf11
Standardsoftware von der Stange - gearconf11Stephan Hochdörfer
 
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...Aberla
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1DNUG e.V.
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!adesso AG
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdataHenning Blohm
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEEguestc44b7b
 
Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhereberndmueller
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndré Krämer
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 

Ähnlich wie Wie Software-Generatoren die Welt verändern können - Herbstcampus12 (20)

Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
Standardsoftware von der Stange - gearconf11
Standardsoftware von der Stange - gearconf11Standardsoftware von der Stange - gearconf11
Standardsoftware von der Stange - gearconf11
 
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...
ESEconf2011 - Hochdoerfer Stephan: "Assembly line production of software appl...
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhere
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 

Mehr von Stephan Hochdörfer

Phing for power users - frOSCon8
Phing for power users - frOSCon8Phing for power users - frOSCon8
Phing for power users - frOSCon8Stephan Hochdörfer
 
Offline strategies for HTML5 web applications - frOSCon8
Offline strategies for HTML5 web applications - frOSCon8Offline strategies for HTML5 web applications - frOSCon8
Offline strategies for HTML5 web applications - frOSCon8Stephan Hochdörfer
 
Offline Strategies for HTML5 Web Applications - oscon13
Offline Strategies for HTML5 Web Applications - oscon13Offline Strategies for HTML5 Web Applications - oscon13
Offline Strategies for HTML5 Web Applications - oscon13Stephan Hochdörfer
 
Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13Stephan Hochdörfer
 
Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Stephan Hochdörfer
 
Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Stephan Hochdörfer
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Stephan Hochdörfer
 
Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13Stephan Hochdörfer
 
Offline Strategies for HTML5 Web Applications - ipc13
Offline Strategies for HTML5 Web Applications - ipc13Offline Strategies for HTML5 Web Applications - ipc13
Offline Strategies for HTML5 Web Applications - ipc13Stephan Hochdörfer
 
Offline-Strategien für HTML5 Web Applikationen - wmka
Offline-Strategien für HTML5 Web Applikationen - wmkaOffline-Strategien für HTML5 Web Applikationen - wmka
Offline-Strategien für HTML5 Web Applikationen - wmkaStephan Hochdörfer
 
Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Stephan Hochdörfer
 
Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Stephan Hochdörfer
 
Testing untestable code - ConFoo13
Testing untestable code - ConFoo13Testing untestable code - ConFoo13
Testing untestable code - ConFoo13Stephan Hochdörfer
 
Offline strategies for HTML5 web applications - ConFoo13
Offline strategies for HTML5 web applications - ConFoo13Offline strategies for HTML5 web applications - ConFoo13
Offline strategies for HTML5 web applications - ConFoo13Stephan Hochdörfer
 
Offline-Strategien für HTML5Web Applikationen - WMMRN12
Offline-Strategien für HTML5Web Applikationen - WMMRN12Offline-Strategien für HTML5Web Applikationen - WMMRN12
Offline-Strategien für HTML5Web Applikationen - WMMRN12Stephan Hochdörfer
 
Offline strategies for HTML5 web applications - IPC12
Offline strategies for HTML5 web applications - IPC12Offline strategies for HTML5 web applications - IPC12
Offline strategies for HTML5 web applications - IPC12Stephan Hochdörfer
 
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12Stephan Hochdörfer
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Stephan Hochdörfer
 

Mehr von Stephan Hochdörfer (20)

Phing for power users - frOSCon8
Phing for power users - frOSCon8Phing for power users - frOSCon8
Phing for power users - frOSCon8
 
Offline strategies for HTML5 web applications - frOSCon8
Offline strategies for HTML5 web applications - frOSCon8Offline strategies for HTML5 web applications - frOSCon8
Offline strategies for HTML5 web applications - frOSCon8
 
Offline Strategies for HTML5 Web Applications - oscon13
Offline Strategies for HTML5 Web Applications - oscon13Offline Strategies for HTML5 Web Applications - oscon13
Offline Strategies for HTML5 Web Applications - oscon13
 
Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13
 
Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13
 
Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13
 
Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13
 
Offline Strategies for HTML5 Web Applications - ipc13
Offline Strategies for HTML5 Web Applications - ipc13Offline Strategies for HTML5 Web Applications - ipc13
Offline Strategies for HTML5 Web Applications - ipc13
 
Offline-Strategien für HTML5 Web Applikationen - wmka
Offline-Strategien für HTML5 Web Applikationen - wmkaOffline-Strategien für HTML5 Web Applikationen - wmka
Offline-Strategien für HTML5 Web Applikationen - wmka
 
Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13
 
Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13
 
Testing untestable code - ConFoo13
Testing untestable code - ConFoo13Testing untestable code - ConFoo13
Testing untestable code - ConFoo13
 
A Phing fairy tale - ConFoo13
A Phing fairy tale - ConFoo13A Phing fairy tale - ConFoo13
A Phing fairy tale - ConFoo13
 
Offline strategies for HTML5 web applications - ConFoo13
Offline strategies for HTML5 web applications - ConFoo13Offline strategies for HTML5 web applications - ConFoo13
Offline strategies for HTML5 web applications - ConFoo13
 
Offline-Strategien für HTML5Web Applikationen - WMMRN12
Offline-Strategien für HTML5Web Applikationen - WMMRN12Offline-Strategien für HTML5Web Applikationen - WMMRN12
Offline-Strategien für HTML5Web Applikationen - WMMRN12
 
Testing untestable code - IPC12
Testing untestable code - IPC12Testing untestable code - IPC12
Testing untestable code - IPC12
 
Offline strategies for HTML5 web applications - IPC12
Offline strategies for HTML5 web applications - IPC12Offline strategies for HTML5 web applications - IPC12
Offline strategies for HTML5 web applications - IPC12
 
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012
 

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

  • 1. Wie Software-Generatoren die Welt verändern können Stephan Hochdörfer bitExpert AG
  • 2. 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
  • 3. Wie Software-Generatoren die Welt verändern können Software-Generator?
  • 4. Wie Software-Generatoren die Welt verändern können Software-Generator? WTF?!?
  • 5. Wie Software-Generatoren die Welt verändern können Software-Generator? Bin ich bald arbeitslos?
  • 6.
  • 7. Wie Software-Generatoren die Welt verändern können Entwickler vs. Geschäftsmann
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Wie Software-Generatoren die Welt verändern können Standardisieren du sollst!
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Wie Software-Generatoren die Welt verändern können Generalisieren du sollst!
  • 19. Wie Software-Generatoren die Welt verändern können Generative Programmierung Softwaresystemfamilien, Implementierungskomponenten und Konfigurationswissen
  • 20. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Generator Generator
  • 21. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Konfiguration Konfiguration (DSL) (DSL) Generator Generator
  • 22. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Konfiguration Konfiguration (DSL) (DSL) Implementierungs- Implementierungs- komponenten Generator Generator komponenten
  • 23. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Konfiguration Konfiguration (DSL) (DSL) 1..n Implementierungs- Implementierungs- komponenten Generator Generator Produkt komponenten Produkt
  • 24. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Konfiguration Konfiguration (DSL) (DSL) Implementierungs- Implementierungs- komponenten Generator Generator Kunde 11 komponenten Kunde
  • 25. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Workflow Konfiguration Konfiguration (DSL) (DSL) Kunde 22 Kunde Implementierungs- Implementierungs- komponenten Generator Generator Kunde 11 komponenten Kunde
  • 26.
  • 27. Wie Software-Generatoren die Welt verändern können Softwaresystemfamilie Eine Menge von Applikationen mit ähnlichen Eigenschaften wie auch speziellen Ausprägungen einzelner Familienmitglieder.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43. Wie Software-Generatoren die Welt verändern können Generative Programmierung Generator Domain Engineering Domänen- analyse Domänen- design Domänen- implementierung
  • 44. Wie Software-Generatoren die Welt verändern können Generative Programmierung Generator Produkt Domain Engineering App. Engineering Neue Anforderungen Domänen- Anforderungs- analyse analyse Domänen- Produkt- design konfiguration Komponenten, Domänen- DSL, Testen und implementierung Generatoren, Integration Infrastruktur
  • 45.
  • 46.
  • 47. Wie Software-Generatoren die Welt verändern können Standardisieren du sollst!
  • 48.
  • 49. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Framework Java + Maven + Spring + Eclipse
  • 50. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Framework ./samplegenerator |-config |---generator.properties |---gpl.xml |-src |---main |-----java |-----resources |-------frames |-------generator |---------contentProvider.xml |---------features.xml |---------frames.xml |---------generatorContext.xml |---test |-----java |-----resources |-target
  • 51. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Features ./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" /> <gp:feature name="HintLayer" /> </beans> 51
  • 52. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Frames ./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> 52
  • 53. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Frame + Feature ./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> 53
  • 54. Wie Software-Generatoren die Welt verändern können Generative Programmierung: ContentProvider ./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> 54 54
  • 55. Wie Software-Generatoren die Welt verändern können Generative Programmierung: ContentProvider ./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> 55
  • 56. Wie Software-Generatoren die Welt verändern können Generative Programmierung: ContentProvider ./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> 56
  • 57. Wie Software-Generatoren die Welt verändern können Generative Programmierung: ContentProvider Args! Zu viel XML! Ich will doch programmieren....
  • 58. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Konfiguration ./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> 58
  • 59. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Generator mvn replicator:run
  • 60. Wie Software-Generatoren die Welt verändern können Generative Programmierung Wie kommt nun mein Code in den Generator?
  • 61. Wie Software-Generatoren die Welt verändern können Generative Programmierung Ganz einfach: Importieren ;)
  • 62. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Ziel Steigerung von Produktivität, Qualität und Lieferzeit.
  • 63. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Ziel Optimierte Anwendungen nach Bedarf bauen können!
  • 64. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Ziel Zusammenbau der einzelnen Komponenten automatisieren!
  • 65. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus
  • 66. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Durch Automatisierung weniger fehleranfällig!
  • 67. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Reduzierung der Komplexität der Endprodukte.
  • 68. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Nur ein Code-Repository: Der Softwaregenerator
  • 69. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Wartungsaufwände reduzieren
  • 70. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Implementierungs- Merkmal komponente
  • 71. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Merkmal Kunde
  • 72. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Bonus Kunde Merkmal Implementierungs- komponente
  • 73. Wie Software-Generatoren die Welt verändern können Generative Programmierung: Das Buch
  • 74. Wie Software-Generatoren die Welt verändern können Lust auf mehr? http://replicatorframework.org