Architecture As Language

85
Architecture As Language www.voelter.de [email protected] Markus Voelter www.itemis.de [email protected] Andreas Graf

Transcript of Architecture As Language

Page 1: Architecture As Language

Architecture As Language

[email protected]

Markus [email protected]

Andreas Graf

Page 2: Architecture As Language
Page 3: Architecture As Language

About

Page 4: Architecture As Language
Page 5: Architecture As Language

1

What is a language?

Page 6: Architecture As Language

Set of well-defined terms

INFORMAL

Page 7: Architecture As Language

Stakeholdersagree on meaning

INFORMAL

Page 8: Architecture As Language

MetamodelFORMAL

Page 9: Architecture As Language

MetamodelGrammar

FORMAL

Page 10: Architecture As Language

MetamodelGrammarNotation

FORMAL

Page 11: Architecture As Language

A DSL is a focussed, processable

language for describing a specific

concern when building a system in a

specific domain. The abstractions and

notations used are natural/suitable for

the stakeholders who specify that

particular concern.

Page 12: Architecture As Language
Page 13: Architecture As Language

2

Architecture DSLs

Page 14: Architecture As Language

Architecture

Page 15: Architecture As Language

As youunderstandand develop

yourArchitecture…

Page 16: Architecture As Language

Develop a language toexpress it!

Page 17: Architecture As Language

Language resemblesarchitectural concepts

Page 18: Architecture As Language

We express theapplication(s) with

the language.

Page 19: Architecture As Language

DEMO I

An architectural DSL for embedded systems

Page 20: Architecture As Language
Page 21: Architecture As Language

3

Benefits

Page 22: Architecture As Language

Clear Understandingfrom building the

language

Page 23: Architecture As Language

UnambigiousVocabulary

Page 24: Architecture As Language

Concepts independentfrom Technology

Page 25: Architecture As Language

Programming Model canbe defined based on

Conceptual Arcitecture

Page 26: Architecture As Language

Architecture „executable“(i.e. more than rules and docs)

Page 27: Architecture As Language
Page 28: Architecture As Language

4

Why Textual?

Page 29: Architecture As Language

4

… or: why not graphical?

Page 30: Architecture As Language

Languages and Editorsare easier to build

Page 31: Architecture As Language

Languages and Editorsare easier to build

Evolve Language and simple editoras you understand and discuss the

architecture, in real time!

Page 32: Architecture As Language

Integrates easily withcurrent infrastructure:CVS/SVN diff/merge

Page 33: Architecture As Language

Model evolutionis trivial, you canalways use grep.

adapting existingmodels as the DSL evolves

Page 34: Architecture As Language

Many Developers prefer textual

notations

Page 35: Architecture As Language

When a graphicalnotation

is better, you can

visualize.

Page 36: Architecture As Language
Page 37: Architecture As Language

5

Tooling

Page 38: Architecture As Language

Several tools available.Example: oAW Xtext

Page 39: Architecture As Language

Specify Grammar

Page 40: Architecture As Language

Antlr Grammar andParser is generated

from this specification

Page 41: Architecture As Language

Generated Metamodel

Page 42: Architecture As Language

Specify Constraints

Page 43: Architecture As Language

Generated Editor

Page 44: Architecture As Language

DEMO II

The language-aware editor for our DSL

Page 45: Architecture As Language
Page 46: Architecture As Language

6

Generating Code

Page 47: Architecture As Language

Since we alreadyhave a formal model….

Page 48: Architecture As Language

Generate APIMaps Architectural Concepts to

Implementation language (non-trivial!)

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 49: Architecture As Language

ImplementationImplementation only depends on

the generated programming model API

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 50: Architecture As Language

Programming ModelGenerated API + Usage Idioms

Completely Technology-Independent

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 51: Architecture As Language

Runtime InfrastructureSelect based on fit wrt. to architectural

concepts and non-functional requirements

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 52: Architecture As Language

Glue CodeAka Technology Mapping CodeMaps API to selected platform

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 53: Architecture As Language

Glue CodeContains Configuration Files for Platform

Might require „mix in models“

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Page 54: Architecture As Language

Several PlatformsDifferent Platforms, not Languages

Support for Scaling (non-functional req)

Im plem entation

Code

Program m ing

M odel A PI

Runtim e Infrastructure

(Platform /M iddlew are)

G lue Code

Platform 2

G lue Code 2

Testing!

Page 55: Architecture As Language

Benefits:More Efficient Impl.Technology IndependentConsistence/QualityArchitecture-Conformance

Page 56: Architecture As Language

Code Gen Sequence

Im plem entation

Code

Program m ing

M odel A PI

P latform

G lue Code

1) Generate API

2) Write Impl Code

3) Select Platform

4) Generate Glue Code

Page 57: Architecture As Language

Separate Modelsfor stuff relevant for the APIvs. system/deployment stuff

Program m ing

M odel A PI

M odel 1

(Types)

M odel 2

(System ,

D eploym ent)

G lue Code

Page 58: Architecture As Language

DEMO III

Generating C for thetarget device

Page 59: Architecture As Language
Page 60: Architecture As Language

7

Expressing Variability

Page 61: Architecture As Language

Different Variantsof the Systemfor different customers.

Page 62: Architecture As Language

How do I express

this in themodels?

Page 63: Architecture As Language

Negative Variability:Conditionally taking

something away

Page 64: Architecture As Language

Negative Variability:Conditionally taking

something away

Feature Models

Page 65: Architecture As Language

System

Failover Monitoring

Graceful

DegradationRedundancy

Data

Management

Centralized Distributed

Page 66: Architecture As Language

component DelayCalculator {

provides default: IDelayCalculator

requires screens[0..n]: IInfoScreen

provides mon: IMonitoring feature monitoring

}

Page 67: Architecture As Language

component DelayCalculator {

provides default: IDelayCalculator

requires screens[0..n]: IInfoScreen

provides mon: IMonitoring feature monitoring

}

System

Failover Monitoring

Graceful

DegradationRedundancy

Data

Management

Centralized Distributed

Page 68: Architecture As Language

namespace monitoringStuff feature monitoring {

component MonitoringConsole {

requires devices:[*]: IMonitor

}

instance monitor: MonitoringConsole

dynamic connect monitor.devices query {

type = IMonitor

}

}

Page 69: Architecture As Language
Page 70: Architecture As Language

Positive Variability:Conditionally adding

something to a minimal core

Page 71: Architecture As Language

Positive Variability:Conditionally adding

something to a minimal core

Aspects

Page 72: Architecture As Language

namespace monitoring {

component MonitoringConsole …

instance monitor: …

dynamic connect monitor.devices …

aspect (*) component {

provides mon: IMonitoring

}

}

Page 73: Architecture As Language

component DelayCalculator {

}

component AircraftModule {

}

component InfoScreen {

}

Page 74: Architecture As Language

component DelayCalculator {

}

component AircraftModule {

}

component InfoScreen {

}component DelayCalculator {

provides mon: IMonitoring

}

component AircraftModule {

provides mon: IMonitoring

}

component InfoScreen {

provides mon: IMmonitoring

}

aspect (*) component {

provides mon: IMonitoring

}

Page 75: Architecture As Language

Weaver is generic:

works with all (container)model elements

Page 76: Architecture As Language

aspect (*) <type>all instances of type

aspect (tag=bla) <type>all instances with tag bla

aspect (name=S*) <type>all instances whose namestarts with S

Page 77: Architecture As Language

namespace monitoring feature monitoring {

component MonitoringConsole …

instance monitor: …

dynamic connect monitor.devices …

aspect (*) component {

provides mon: IMonitoring

}

}

AO + Features

Page 78: Architecture As Language

DEMO III

Adding Variability and connectivity to a feature model to the previous DSL

Page 79: Architecture As Language
Page 80: Architecture As Language

Based on actualpractical experience

Page 81: Architecture As Language

Currently in use withfour of my customers

Page 82: Architecture As Language

Benchmarked bysuitability for use in today‘s projects

Page 83: Architecture As Language
Page 84: Architecture As Language

THE END.Thank you.

Questions?

Page 85: Architecture As Language