a family of languages for architecture description dsm’08 @ oopsla 2008 markus voelter...

54
A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter ([email protected] , www.voelter.de )

Upload: marilynn-hawkins

Post on 24-Dec-2015

223 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

A Family of Languages for Architecture Description

DSM’08 @ OOPSLA 2008

Markus Voelter([email protected], www.voelter.de)

Page 2: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org
Page 3: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Context

Page 4: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Architecture is often

non tangible or technology specific

Page 5: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Architecture

DSL

Page 6: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

As you understandand develop

yourArchitecture…

Page 7: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Develop a language to express it!

Page 8: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Language resembles architectural concepts

Page 9: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

We express the application(s) with

the language.

Page 10: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Textual Syntax:

We know how this works from our experience with code.

Page 11: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Textual Syntax:

We know how this works from our experience with code.

Editors are easy to build.

Page 12: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Textual Syntax:

We know how this works from our experience with code.

Editors are easy to build.

Integrates well with existing Version Control Systems etc.

Page 13: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

component DelayCalculator { provides IDelayCalculator requires IInfoScreen}component InfoScreen { provides IInfoScreen }component AircraftModule { provides IAircraftModule requires IDelayCalculator}

interface IDelayCalculator {}interface IInfoScreen {}interface IAircraftModule {}

Page 14: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

component DelayCalculator { requires screens[0..n]: IInfoScreen …}

component InfoScreen { provides default: IInfoScreen }

instance dc: DelayCalculatorinstance screen1: InfoScreeninstance screen2: InfoScreen connect dc.screens to (screen1.default, screen2.default)

Page 15: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

interface IAircraftStatus {

oneway message reportPosition (aircraft: ID, pos: Position )

request-reply message reportProblem { request (aircraft: ID, problem: Problem, comment: String) reply (repairProcedure: ID) }

}

Page 16: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

struct FlightInfo { from: Airport to: Airport scheduled: Time expected: Time …} replicated singleton flights { flights: FlightInfo[]} component DelayCalculator { publishes flights} component InfoScreen { consumes flights}

Page 17: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

interface IAircraftStatus { oneway message registerAircraft(aircraft: ID! ) oneway message unregisterAircraft(aircraft: ID! ) oneway message reportPosition(aircraft: ID!, pos: Position! ) request-reply message reportProblem { request (aircraft: ID!, problem: Problem!, comment: String!) reply (repairProcedure: !ID) } protocol initial = new { state new { registerAircraft => registered } state registered { unregisterAircraft => new reportPosition reportProblem } }}

Page 18: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

When a graphical notation

is better, you can

visualize.

Page 19: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Graphviz

Page 20: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Via M2MRead-OnlyAuto-LayoutDrill-Down

Page 21: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Textual DSLs vs. Graphical vs. Visualization

Page 22: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

I‘ve done real projectwork this way!

Page 23: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Currently in use with four of my customers

Page 24: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org
Page 25: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Challenge

Page 26: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

New languagefor eachsystem?

Page 27: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

CommonBase?

Page 28: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

ReusableLanguageModules?

Page 29: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

LanguageFamily?PLE?

Page 30: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org
Page 31: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Solution Approach

Page 32: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Identify common, reusable architectural

abstractions(Experience, Patterns)

Page 33: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Define syntax

Page 34: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Use PLE to configure custom DSL

Page 35: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

ComponentsHierarchical, Stateless/ful,

Persistent, Threadsafe, Parameters,Runtime Instantiation, Active

Page 36: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

InterfacesRPC, Messaging, Async, Pub/Sub,

Exceptions, Data Types, DBC,Protocol State Machines

Page 37: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

PortsUni/Bidirectional,

Caridinalities, Optional/Required

Page 38: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

ConnectorsStatic, Dynamic, Lookup,Failover, Backup, Multi

Page 39: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Data Replication

Realtime, On Demand,

1..1, 1..n

Page 40: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org
Page 41: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Solution Tooling

Page 42: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

DSL Editors Built withEclipse oAW Xtext

Page 43: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Variability is expressed

as a feature model

in pure::variants

Page 44: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Select Features for your language variant

Page 45: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

(code completion, constraint checks, outline, folding, cross-file nav)

Results in a DSL incl.

fancy editor

Page 46: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Customization:Add you own specificLanguage elements(beyond what the

configuration supports)

Page 47: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org
Page 48: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Tool

Implementation

Page 49: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Grammar Elements

connected to feature

models

Page 50: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Joinpoints to which

more grammar

can be “advised”

Page 51: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Joinpoints to which

more grammar

can be “advised”

Page 52: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

Same approach used for other artifacts

(constraints, editor customization, etc.)

Page 53: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

You’ll have to read the paper for details

Page 54: A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter (voelter@acm.org, )voelter@acm.org

THE END.Thank you.

Questions?