microsoft academic program domain specific languages ralf westphal student technology conference...

33
Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Upload: elfriede-gerst

Post on 05-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic Program

Domain Specific Languages Ralf Westphal

Student Technology Conference 2005

Page 2: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

Domain Specific Languages

• Ralf Westphal• Freier Autor, Berater, Trainer, Entwickler

und Associate of thinktecture• Microsoft Regional Director & MVP• [email protected]

Page 3: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Allgemeine Programmierung

• General Purpose Languages (GPL)• Generic Languages• C#, VB.NET, C, C++, Java, Modula-2, Ada usw.

– Meist imperative Programmierung– „Turing Complete“

• Fallunterscheidungen• Schleifen/Sprünge• IO• Datentypen/Speicherzugriff

– Keiner Problemdomäne (z.B. Finanzwesen, Betriebssysteme, UI) zugeordnet

• Lösungen für alle möglichen Probleme lassen sich „irgendwie“ formulieren

Page 4: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Beispiel Suchen: GPL

• VB.NET Code– Suche „ab“ oder „ac“ in einem String. Private Function Match(ByVal input As String) As Boolean Dim iA As Integer = -1 Do iA = input.IndexOf("a", iA + 1) If iA < 0 Then Return False

If iA < input.Length - 1 Then Dim nextChar As Char nextChar = input.Chars(iA + 1) If nextChar = "b" Or nextChar = "c" Then Return True End If End If Loop End Function

• NutzungIf Match(t) Then ...

Page 5: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005What is a Domain?

Implementation

Specification

Requirements

Deployment

BusinessSystems

Real-TimeSystems

Aircraftcontrol

systems

AirlineBaggageHandlingSystems

InsuranceManagement

Systems

Page 6: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005What is a Language?

C(x) h C(x) t 2m xih = –

Textual Pictorial

Declarative

Procedural

class Magnox : NuclearPowerStation {

public void dropRods ()

jo biscuits 24 green

pat cakes 32 pink

Employeename

addresspromote

Jobdescription

payassign

0..*

a>b && c==d

call

CallRecord

call length

base rate: £/s

store

<CallRecord>

<caller><number>07713248</number>

Page 7: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Spezielle Programmierung

• Domain Specific Languages (DSL)– Einer Problemdomäne zugeordnet

• Verringerung der semantischen Distanz zwischen Problem und Programm

• Es soll bewusst nicht alles möglich sein

– Oft auch: Little Languages, Mini Languages– Horizontal: SQL, Reg Ex, XSLT, HTML– Vertikal: EBNF, lex/yacc, Call/C, Frob, LexiFi,

Postscript, Tex, VHDL– Oft deklarativ

• Oft nicht „Turing complete“

Page 8: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Beispiel Suchen: DSL

• Reg Ex Code a(b|c)

• NutzungIf RegEx.Match(t, "a(b|c)").Success Then ...

Page 9: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005DSLs machen Probleme

„überschaubar“

• Ziel von DSL ist die Artefaktgenerierung!

• Höhere Produktivität– Weniger Zeilen Code– Deklarativ statt imperativ

• Bessere Wartbarkeit– Höhere Transparenz, bessere Lesbarkeit– Modularisierung– Code Reuse

• Höhere Sicherheit– „Sandbox“

• Involvierung von Domänenexperten– Hohe Ausdrucksfähigkeit, Vokabular der Domäne steht

zur Verfügung– Leichte Erlernbarkeit

Page 10: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Primzahlenermittlung ist

“überschaubar”…

• …wenn wir ein System haben, dass…– multiplizieren und dividieren und– Dinge wiederholt tun kann

_*__*__/__/_

_%__%_while (…) {…}while (…) {…}

C, Pascal, Fortran,…Von Neumann computer with conventional CPU

language:platform:

Page 11: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Teilelisten ermitteln ist

“überschaubar”…

• …wenn wir ein System haben, dass…– Lange Listen speichern und schnell

traviersieren kann– Listen filtern und kombinieren kann

CREATE …CREATE …JOIN …… WHERE …

JOIN …… WHERE … SELECT …SELECT …

Relational Database SQL

platform: language:

Page 12: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005GUI-Entwicklung ist “überschaubar”…

• …wenn wir ein Systen haben, dass…– Fenster und Controls anzeigen kann und– Strukturen interaktiv modifizierbar macht

Visual programminglanguages

Interactive appplatform

platform: language:

Page 13: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

• …wenn wir eine language dafür haben…

• …und eine runtime platform

Telefonabrechnungssysteme sind “überschaubar”…

Phone Billing Engine

call

calendarmonth

CallRecord

call length

base rate: £/s

call length

friend discount rate: £/sstore

friends calls

other calls

-

bill

billing period

store

Telephone Billing Scheme

Page 14: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

prospectinitiated

prospective sale

empty

overflow

Sat

weekly

accumulator4

£20

1 week delay

£30

prospectcancels

salesperson’saccount31

monthly

bank a/c

pay

7

£

tablet PC

customer

customer

-facingdeveloper

animator prototype

for review

tweak

hack

Mit einer DSL arbeiten

generator phone billsystem

Page 15: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005DSL-Output

prospectinitiated

prospective sale

empty

overflow

Sat

weekly

accumulator4

£20

1 week delay

£30

prospectcancels

salesperson’saccount31

monthly

bank a/c

pay

7

£

generator phone billsystem

animator prototype

for review

generator list of parts

generator business plan

C#

XML

C#C#, Java

XML

SQL

mixed codeand configfiles

Page 16: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005“Mind The Gap” – Von der Abstraktion zum

Code

Model

Application Code

PlatformFrameworks

Model

Generated Code

Platform

Model

Application Code

PlatformFrameworks

Model

Generated Code

Platform

Model

Application Code

PlatformFrameworks

Model

Generated Code

Platform

Model

Application Code

PlatformFrameworks

Model

Generated Code

Platform

(b)(b)

Model

Application CodeDomain Specific

Framework

PlatformFrameworks

Model

Generated CodeFramework

Pattern Language

Platform

Model

Application CodeDomain Specific

Framework

PlatformFrameworks

Model

Generated CodeFramework

Pattern Language

Platform

Model

Application CodeDomain Specific

Framework

PlatformFrameworks

Model

Generated CodeFramework

Pattern Language

Platform

Model

Application CodeDomain Specific

Framework

PlatformFrameworks

Model

Generated Code

Framework

Platform

(c)(c)

Application Code

Model

PlatformFrameworks

Generated Code

Model

Platform

Application Code

Model

PlatformFrameworks

Generated Code

Model

Platform

Application Code

Model

PlatformFrameworks

Generated Code

Model

Platform

Application Code

Model

PlatformFrameworks

Generated Code

Model

Platform

(a)(a)

PlatformFrameworks

Application Code

Model

Platform

Generated Code

Model

PlatformFrameworks

Application Code

Model

Platform

Generated Code

Model

PlatformFrameworks

Application Code

Model

Platform

Generated Code

Model

PlatformFrameworks

Application Code

Model

Platform

Generated Code

Model

(d)(d)

Page 17: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Microsofts DSL Tools für VS2005

Page 18: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005DSL Definition in VS2005

• Domain Model– Abbildung einer Problemdomäne in ein Klassenmodell– Verknüpfung von Konzepten über Beziehungen inkl.

Nebenbedingungen– Beschreibung mittels Designer

• Designer Definition– Visualisierung des Domain Model

• Wie sollen Konzepte dargestellt werden?• Wie sollen Beziehungen dargestellt werden?

– Beschreibung mittels XML Dokument• Artifact Generator

– Template basiert– Übersetzt Instanzierung des Domain Models in „Code“

• Microsofts DSLs sind immer visuell!

Page 19: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Domain Model Designer

Page 20: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005DSL-Programmierung

Page 21: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Microsoft DSLs I

• Application Designer

Page 22: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Microsoft DSLs II

• System Designer

Page 23: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Microsoft DSLs III

• Logical Datacenter Designer

Page 24: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

• Deployment Designer

Microsoft DSLs IV

Page 25: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Microsoft DSLs V

• Class Designer

Page 26: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005War das alles?

• Microsoft unterstützt textuelle DSL z.Z. nur schlecht– DSL Tools fokussieren auf visuelle DSLs– VSIP Babel ist umständlich zu nutzen

• C++ bzw. COM-basiert• Schlechte Dokumentation• Unterstützt nur Lex/Yacc bzw. Bison

– Common Compiler Infrastructure (CCI) nur für den akademischen Bereich verfügbar

• VS200x Add-Ins bieten einen alternativen Einstieg– DSL-Code = textueller Project Item

• Gemischtsprachige Entwicklung möglich– Add-In implementiert Übersetzer

• Übersetzung autom. oder durch Benutzer angestoßen– Ergebnis der Übersetzung steht im Projekt sofort zur Verfügung– Fehlermeldungen in Task Pane möglich– Allerdings…

• Kein Syntax Highlighting• Kein Intellisense in DSL-Code

– Ausnahme: XML-basierte DSL

Page 27: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Beispiel einer textuellen DSL

• Kapselung von SQL Anweisungen– XML-basiert, horizontal– Deklarativ– Codeerzeugung mit Templates

• Kapselung von SQL Anweisungen– Eigene Grammatik, horizontal– Deklarativ– Codeerzeugung durch Compiler-Compiler

erzeugten Übersetzer mit Zwischensprache• „Pipelining“

Page 28: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

adc.sqlobjects.compiler.cocor

SqlObjectsPreCompiler

sqlobjects ……end sqlobjects

adcSqlObjectsAddIn

Connect

adc.sqlobjects.compiler

Xml.SqlObjects.Compiler<sqlobjects name="…">

Architektur der Beispiel-DSL

Scanner Parser

adc.compiler.shared

ACompiler CompilerResult

sqlobjectsgrammar.ATG

Coco/R

Cocor.SqlObjects.Compiler

sqlobjects ……end sqlobjects

<sqlobjects name="…">

CodeSmith

Page 29: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Fazit

• DSLs sind nicht nur cool, sondern hilfreich– Codereduktion– Modularisierung– Horizontal & vertikal

• DSLs sind nicht so schwer zu implementieren, wie allgemein angenommen– DSL Tools unterstützen graphische Sprachen mit enger

Integration in VS2005– XML oder Coco/R bieten Tools für die Analyse von DSL-Quelltext– CodeSmith bietet Unterstützung bei der Codeerzeugung

• DSLs können schon heute in VS.NET integriert werden!

Page 30: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

Questions and Answers ??

??

?

Page 31: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Ressourcen

• DSL– Microsoft DSL Tools, http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/ – Wikipedia, Domain Specific Language, http://c2.com/cgi/wiki?DomainSpecificLanguage – Wikipedia, Turing Complete, http://c2.com/cgi/wiki?TuringComplete – Paul Klint et al., Domain-Specific Languages: An Annotated Bibliography,

http://homepages.cwi.nl/~arie/papers/dslbib/ – Diomidis Spinellis, Notable Design Patterns for Domain-Specific Languages,

http://www.dmst.aueb.gr/dds/pubs/jrnl/2000-JSS-DSLPatterns/html/dslpat.html– Eric Steven Raymond, Designing Minilanguages in: The Art of Unix Programming, http://www.faqs.org/docs/artu/

• Compilerbau/Codegenerierung– Pat Terry, Comiling with C# and Java, Addison-Wesley 2005 (setzt Coco/R ein)– Kathleen Dollard, Code Generation in Microsoft .NET, apress 2004– Edward G. Nigles, Build Your Own .NET Language and Compiler, apress 2004– Codesmith, http://www.codesmithtools.com/– Coco/R, http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/ – http://www.codegeneration.net/

• VS2003 Integration– Les Smith, Writing Add-ins for Visual Studio .NET, apress 2002

• Quellen für Teile des Vortrags– Joel Semeniuk, Visual Studio Team System – Feature Roundup, Microsoft,

http://download.microsoft.com/documents/uk/partner/events/presentations/downloads/2005-03-08/business1-vsts-feature-roundup.ppt

– José António Silva, DSL Tools in Visual Studio, Microsoft, http://labnet.cc.isel.ipl.pt/docs/Eventos/6-04-2005/20050405%20DSL%20Tools%20VS2005%20joseas%20ISEL.ppt

Page 32: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005Über den Referenten

• Ralf Westphal (www.ralfw.de) ist freier Softwaretechnologievermittler. Er arbeitet als Fachautor, Coach/Berater, Softwareentwickler und Sprecher auf Entwickler-Events im In- und Ausland wie dem Microsoft Technical Summit, Microsoft DevDays, ADC, BASTA!, COMDEX oder SD West. Der Schwerpunkt seiner Arbeit liegt bei der Vermittlung und Anwendung moderner Softwaretechnologien und -konzepte im Zusammenhang mit dem .NET Framework.

• Darüber hinaus ist Ralf Westphal einer der unabhängigen deutschen Microsoft Regional Directors, Produzent von .NET TV (www.dotnettv.de), Associate der ersten Stunde bei thinktecture (www.thinktecture.com) und zusammen mit Christian Weyer einer der .NET Twins (www.dotnettwins.de).

•Email: [email protected]

www.thinktecture.com

Page 33: Microsoft Academic Program Domain Specific Languages Ralf Westphal Student Technology Conference 2005

Microsoft Academic

Program

Student Technology Conference 2005

.NET kompakt, Spektrum Akademischer Verlag 2002, ISBN 3827411858

Bücher

ADO.NET Datenbankprogrammierung, Addison-Wesley 2002, ISBN 3827319978

Jetzt lerne ich ADO.NET, Markt+Technik, 2003, ISBN 3827262291(zusammen mit Christian Weyer)

In Fachzeitschriften

Publikationen

www.dotnettv.de tv.dotnetpro.de

Video