SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Domänenspezifische Sprachen für
Ausführbare Spezifikationen
OUTPUT 2017
Jens Nerche
Kontext E GmbH
Softwarearchitektur, Technischen Schulden, Brownfield-
Projekte, Agile Softwareentwicklung
Email j.nerche@kontext-e.de
Twitter @jensnerche
Blog http://techblog.kontext-e.de
Homepage www.kontext-e.de
Agile Softwareentwicklung
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Quelle: http://agilemanifesto.org
Agile Softwareentwicklung
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Quelle: http://agilemanifesto.org
Customer Collaboration
Customer Collaboration
As a $Role
I want $Feature
So that $Benefit
Customer Collaboration
As a $Role
I want $Feature
So that $Benefit
As shown by $Evidence
Customer Collaboration
As shown by $Evidence
Customer Collaboration
public class cucumberJava {
WebDriver driver = null;
@Given("^I have open the browser$")
public void openBrowser() {
driver = new FirefoxDriver();
}
@When("^I open Facebook website$")
public void goToFacebook() {
driver.navigate().to("https://www.facebook.com/");
}
@Then("^Login button should exits$")
public void loginButton() {
if(driver.findElement(By.id("u_0_v")).isEnabled()) {
System.out.println("Test 1 Pass");
} else {
System.out.println("Test 1 Fail");
}
driver.close();
} }
Quelle: https://www.tutorialspoint.com/cucumber/cucumber_java_testing.htm
through early
and continuous delivery
Deliver Value Continuously
Our highest priority is to satisfy the customer
of valuable software.
Quelle: http://agilemanifesto.org/principles.html
System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Deliver Value Continuously
Test Pyramide
System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Softwareentwickler
Fachabteilung
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Programmiersprachen
Domänensprachen
System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Softwareentwickler
Fachabteilung
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Programmiersprachen
Domänensprachen
Interne DSL mit Java, Cucumber –
Interactions, Customer Collaboration!?
Syntaxhighlighting
Codevervollständigungen
VCS-Unterstützung, insb.
Mergen
Starten, Debuggen
Freiheiten bei der
Gestaltung: Syntax der
Host-Sprache
Bilder, Tabellen,
Aufzählungen, Formeln
Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen,
Statistiken (8 fertig, 3 WIP, 23 Backlog)
Sprache und Notation
Aber in der
der Domäne
Externe DSL mit (Open)Office und FIT
Syntaxhighlighting
Codevervollständigungen
VCS-Unterstützung, insb.
Mergen
Starten, Debuggen
Freiheiten bei der
Gestaltung: Syntax der
Host-Sprache
Bilder, Tabellen,
Aufzählungen, Formeln
Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen,
Statistiken (8 fertig, 3 WIP, 23 Backlog)
Gesucht: doppelfreu
Freiheiten bei der Gestaltung
Bilder, Tabellen, Aufzählungen, Formeln
Syntaxhighlighting
Codevervollständigungen
VCS-Unterstützung, insb. Mergen
Starten, Debuggen
Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen,
Statistiken (8 fertig, 3 WIP, 23 Backlog)
Gesucht:
„Ausführen“-Knopf an die Spezifikation
Programmiersprachen
IDE
Notation der Domäne
„Ausführen“-Knopf an die Spezifikation
„Ausführen“-Knopf an die Spezifikation
IDE für Programmiersprachen
Actions („Editor-Magie“)
Contraints
Editor
Intentions
Sprachelemente
Typesystem
Generator
IDE für Programmiersprachen
Debugger
VCS-Integration
RefactoringTestunterstützung
Plugins
Language Workbenches
JetBrains MPS
Hersteller: JetBrains
Lizenz: Apache 2.0
Released: Q3/2009
Aktuelle Version: 2017.1
● Hosting: GitHub
Referenzen: YouTrack, mbeddr
Demo Time
Zusammenfassung
Automatische Tests auf Abstraktionslevel und in der
Sprache der Domäne schreiben
Von Interne auf Externe DSLs wechseln
Language Workbenches sind Werkzeuge für Erstellung
Externer DSLs und benötigter Tools
Quellen
Workshops: Twitter, diverse Accounts und RTs
Smilies: Wikimedia
Kunde: http://classicprogrammerpaintings.com/
Language Workbench Logos: deren Homepages
Petclinic Bild: Screenshot spring-petclinic
User Story Notation inspiriert von Kevlin Henney
Jens Nerche
Kontext E GmbH
Softwarearchitektur, Technischen Schulden, Brownfield-
Projekte, Agile Softwareentwicklung, Domänenspezifische
Sprachen
Email j.nerche@kontext-e.de
Twitter @jensnerche
Blog http://techblog.kontext-e.de
Homepage www.kontext-e.de
Folien Slideshare
Code https://github.com/catwob/Catwob

Weitere ähnliche Inhalte

Ähnlich wie Domänenspezifische Sprachen für Ausführbare Spezifikationen

Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsGünther Haslbeck
 
Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010SharepointUGDD
 
DNUG Dresden Blend
DNUG Dresden BlendDNUG Dresden Blend
DNUG Dresden BlendMartin Hey
 
Voice Assistants: Neuigkeiten von Alexa und Google Home
Voice Assistants: Neuigkeiten von Alexa und Google HomeVoice Assistants: Neuigkeiten von Alexa und Google Home
Voice Assistants: Neuigkeiten von Alexa und Google Homeinovex GmbH
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestBastian Feder
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Gregor Biswanger
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
 
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias Bosch
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias BoschDer Browser als App-Plattform - Mobile DevCon 2011 - Tobias Bosch
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias BoschOPITZ CONSULTING Deutschland
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapGregor Biswanger
 
Chatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot FrameworkChatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot FrameworkJens Siebert
 

Ähnlich wie Domänenspezifische Sprachen für Ausführbare Spezifikationen (20)

Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Ec2009 Templates
Ec2009 TemplatesEc2009 Templates
Ec2009 Templates
 
WWruhr2018
WWruhr2018WWruhr2018
WWruhr2018
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
GUIs mit Expression Blend
GUIs mit Expression BlendGUIs mit Expression Blend
GUIs mit Expression Blend
 
Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010
 
DNUG Dresden Blend
DNUG Dresden BlendDNUG Dresden Blend
DNUG Dresden Blend
 
Voice Assistants: Neuigkeiten von Alexa und Google Home
Voice Assistants: Neuigkeiten von Alexa und Google HomeVoice Assistants: Neuigkeiten von Alexa und Google Home
Voice Assistants: Neuigkeiten von Alexa und Google Home
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google Suggest
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias Bosch
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias BoschDer Browser als App-Plattform - Mobile DevCon 2011 - Tobias Bosch
Der Browser als App-Plattform - Mobile DevCon 2011 - Tobias Bosch
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit Bootstrap
 
Chatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot FrameworkChatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot Framework
 

Domänenspezifische Sprachen für Ausführbare Spezifikationen

  • 2. Jens Nerche Kontext E GmbH Softwarearchitektur, Technischen Schulden, Brownfield- Projekte, Agile Softwareentwicklung Email j.nerche@kontext-e.de Twitter @jensnerche Blog http://techblog.kontext-e.de Homepage www.kontext-e.de
  • 3. Agile Softwareentwicklung Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan Quelle: http://agilemanifesto.org
  • 4. Agile Softwareentwicklung Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan Quelle: http://agilemanifesto.org
  • 6. Customer Collaboration As a $Role I want $Feature So that $Benefit
  • 7. Customer Collaboration As a $Role I want $Feature So that $Benefit As shown by $Evidence
  • 9. Customer Collaboration public class cucumberJava { WebDriver driver = null; @Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") public void loginButton() { if(driver.findElement(By.id("u_0_v")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } driver.close(); } } Quelle: https://www.tutorialspoint.com/cucumber/cucumber_java_testing.htm
  • 10.
  • 11. through early and continuous delivery Deliver Value Continuously Our highest priority is to satisfy the customer of valuable software. Quelle: http://agilemanifesto.org/principles.html
  • 12. System, MicroService Lieferung durchgeführtAkzeptanztest Java, Cucumber Module, Komponenten, Bausteine Integrationstest Java, JUnit System integriert Klassen, kleine Klassenverbunde Unit Test Java, JUnit Systemelemente realisiert Deliver Value Continuously Test Pyramide
  • 13. System, MicroService Lieferung durchgeführtAkzeptanztest Java, Cucumber Module, Komponenten, Bausteine Integrationstest Java, JUnit System integriert Softwareentwickler Fachabteilung Klassen, kleine Klassenverbunde Unit Test Java, JUnit Systemelemente realisiert Programmiersprachen Domänensprachen
  • 14. System, MicroService Lieferung durchgeführtAkzeptanztest Java, Cucumber Module, Komponenten, Bausteine Integrationstest Java, JUnit System integriert Softwareentwickler Fachabteilung Klassen, kleine Klassenverbunde Unit Test Java, JUnit Systemelemente realisiert Programmiersprachen Domänensprachen
  • 15. Interne DSL mit Java, Cucumber – Interactions, Customer Collaboration!? Syntaxhighlighting Codevervollständigungen VCS-Unterstützung, insb. Mergen Starten, Debuggen Freiheiten bei der Gestaltung: Syntax der Host-Sprache Bilder, Tabellen, Aufzählungen, Formeln Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen, Statistiken (8 fertig, 3 WIP, 23 Backlog)
  • 16. Sprache und Notation Aber in der der Domäne
  • 17. Externe DSL mit (Open)Office und FIT Syntaxhighlighting Codevervollständigungen VCS-Unterstützung, insb. Mergen Starten, Debuggen Freiheiten bei der Gestaltung: Syntax der Host-Sprache Bilder, Tabellen, Aufzählungen, Formeln Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen, Statistiken (8 fertig, 3 WIP, 23 Backlog)
  • 18. Gesucht: doppelfreu Freiheiten bei der Gestaltung Bilder, Tabellen, Aufzählungen, Formeln Syntaxhighlighting Codevervollständigungen VCS-Unterstützung, insb. Mergen Starten, Debuggen Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen, Statistiken (8 fertig, 3 WIP, 23 Backlog)
  • 19. Gesucht: „Ausführen“-Knopf an die Spezifikation Programmiersprachen IDE Notation der Domäne
  • 22. IDE für Programmiersprachen Actions („Editor-Magie“) Contraints Editor Intentions Sprachelemente Typesystem Generator
  • 25. JetBrains MPS Hersteller: JetBrains Lizenz: Apache 2.0 Released: Q3/2009 Aktuelle Version: 2017.1 ● Hosting: GitHub Referenzen: YouTrack, mbeddr
  • 27. Zusammenfassung Automatische Tests auf Abstraktionslevel und in der Sprache der Domäne schreiben Von Interne auf Externe DSLs wechseln Language Workbenches sind Werkzeuge für Erstellung Externer DSLs und benötigter Tools
  • 28. Quellen Workshops: Twitter, diverse Accounts und RTs Smilies: Wikimedia Kunde: http://classicprogrammerpaintings.com/ Language Workbench Logos: deren Homepages Petclinic Bild: Screenshot spring-petclinic User Story Notation inspiriert von Kevlin Henney
  • 29. Jens Nerche Kontext E GmbH Softwarearchitektur, Technischen Schulden, Brownfield- Projekte, Agile Softwareentwicklung, Domänenspezifische Sprachen Email j.nerche@kontext-e.de Twitter @jensnerche Blog http://techblog.kontext-e.de Homepage www.kontext-e.de Folien Slideshare Code https://github.com/catwob/Catwob