hybris -- efficient analysis of hybrid systems · 2015-10-16 · hybris – efficient analysis of...

88
HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨ otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska Germany {kirsten,bisanz,ulrichh,jp}@informatik.uni-bremen.de

Upload: others

Post on 17-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HYBRIS – Efficient Analysis of Hybrid Systems

Kirsten Berkenkotter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Germany

{kirsten,bisanz,ulrichh,jp}@informatik.uni-bremen.de

Page 2: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Outline Universitat Bremen

Outline

1. HybridUML – Specification Formalism for Hybrid Systems

2. Automated Model-Based Code Generation – The Hybrid Low-Level Framework HL3 as

Compilation Target for Real-Time Specification Formalisms

3. Automated Testing against (Hybrid) Real-Time Specifications – Timed CSP, HybridCSP,

HybridUML

4. Domain-Specific Descriptions for Railway Control Systems

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 3: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML – Specification Formalism for Hybrid Systems Universitat Bremen

HybridUML – Specification Formalism for Hybrid Systems

• Formal Semantics

• UML

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 4: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML – Specification Formalism for Hybrid Systems Universitat Bremen

HybridUML – Specification Formalism for Hybrid Systems

• Formal Semantics

+ Hybrid automata (Henzinger)

+ Hierarchic Modelling

+ Semantics by Transformation ⇒ HL3

+ Semantically well-defined

+ Executable in Hard Real-Time

• UML

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 5: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML – Specification Formalism for Hybrid Systems Universitat Bremen

HybridUML – Specification Formalism for Hybrid Systems

• Formal Semantics

• UML

+ Customisation of UML 2.0 – HybridUML Profile:

Property

Class StateMachineAgent

Constraint

\initState\parameter

0..1

(from StructuredClasses){required}

base

�stereotype�

0..1*

(from Constraint)(from Classes)

{subsets ownedAttribute} {subsets ownedRule}

(from BehaviorStatemachines){subsetsownedBehavior}

1

\mode

Additional constraints, i.e. self.mode->forAll(oclIsTypeOf(Mode))

+ Enhanced by (time-continuous) Flow Constraints and Invariants

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 6: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML – Specification Formalism for Hybrid Systems Universitat Bremen

HybridUML – Specification Formalism for Hybrid Systems

HybridUML ProfileGraphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

HL3 Framework

Φ

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML

HybridUML Models

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 7: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

HybridUML Graphical Notation

HybridUML ProfileGraphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

HL3 Framework

Φ

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML

HybridUML Models – Graphical Notation

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 8: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

BrakePointController

�agent�CloseRequestController

�agent�CrossingStatusControllerCore

�agent�

�agent�LocalizationController

�agent�

�agent�UserInteractionController

�agent�EmergencyController

�agent�MovementController

�agent�TrainRadioController

�agent�StatusMapper

�agent�CrossingStatusController

TrainController

Class diagram of TrainController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 9: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

: LocalizationController

closeAckknowledged[]

class TrainController

sendCrossing[](. . . )

recvCrossing[](. . . )

a

x

tclosedTooLong[]

brakingRequired

const

x

v

vtpActive[]

ra

: BrakePointController

v

location ra

vallowed

x

: TrainRadioController

sendCrossing[](. . . )

vtpActive[]

v

x

: EmergencyController

ra

emergency()

closeAckknowledged[]

x

v

statusFailed(. . . )

ra

crossingStatusReq(. . . )

vtpActive[]

const

crossingStatus(. . . )

v

auser

a

const

brakingRequired

: CrossingStatusController

tclosedTooLong[]

: MovementController

emergency()

vallowed

activateCrossing(. . . )

crossingActivated(. . . )

crossingNotActivated(. . . )

vtpActive[]

closingFailed(. . . )

const

x

v

ra

: CloseRequestController

auser

: UserInteractionController

crossingStatus(. . . )

crossingStatusReq(. . . )

activateCrossing(. . . )

crossingActivated(. . . )

crossingNotActivated(. . . )

recvCrossing[](. . . )

Structure diagram of TrainController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 10: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

: LocalizationController

closeAckknowledged[]

class TrainController

sendCrossing[](. . . )

recvCrossing[](. . . )

a

x

tclosedTooLong[]

brakingRequired

const

x

v

vtpActive[]

ra

: BrakePointController

v

location ra

vallowed

x

: TrainRadioController

sendCrossing[](. . . )

vtpActive[]

v

x

: EmergencyController

ra

emergency()

closeAckknowledged[]

x

v

statusFailed(. . . )

ra

crossingStatusReq(. . . )

vtpActive[]

const

crossingStatus(. . . )

v

auser

a

const

brakingRequired

: CrossingStatusController

tclosedTooLong[]

: MovementController

emergency()

vallowed

activateCrossing(. . . )

crossingActivated(. . . )

crossingNotActivated(. . . )

vtpActive[]

closingFailed(. . . )

const

x

v

ra

: CloseRequestController

auser

: UserInteractionController

crossingStatus(. . . )

crossingStatusReq(. . . )

activateCrossing(. . . )

crossingActivated(. . . )

crossingNotActivated(. . . )

recvCrossing[](. . . )

Structure diagram of TrainController

Zooming . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 11: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

v

vallowed

tclosedTooLong[]

: CrossingStatusController

tclosedTooLong[]

: MovementController

emergency()

vallowed

x

: LocalizationController

class TrainController

vtpActive[]

closeAckknowledged[]

const

x

ra

v

statusFailed(. . . )

ra

: BrakePointController

crossingStatusReq(. . . )

a

vtpActive[]

v

const

x

crossingStatus(. . . )

v

location

auser

brakingRequired

a

const

brakingRequired

ra

Focus on BrakePointController

Zooming . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 12: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

x

v

v

: CrossingStatusController

tclosedTooLong[]

: MovementController

emergency()

const

statusFailed(. . . )

vtpActive[]

ra

brakingRequired

crossingStatusReq(. . . )

ra

vtpActive[]

const

crossingStatus(. . . )

: BrakePointControllerv

vallowed

auser

x

a

closeAckknowledged[]

const

tclosedTooLong[]

brakingRequired

Focus on BrakePointController

Zooming . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 13: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

x

v

v

: CrossingStatusController

tclosedTooLong[]

: MovementController

emergency()

vallowed

const

statusFailed(. . . )

vtpActive[]

ra

brakingRequired

crossingStatusReq(. . . )

ra

vtpActive[]

const

crossingStatus(. . . )

: BrakePointControllerv

auser

x

a

closeAckknowledged[]

const

tclosedTooLong[]

brakingRequired

Focus on BrakePointController

Zooming . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 14: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

vtpActive[]

: CrossingStatusController

: MovementController

a

brakingRequired

brakingRequired

x

v

vtpActive[]

: BrakePointController

Focus on BrakePointController

Zooming . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 15: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

: BrakePointController

brakingRequired

v

x

vtpActive[]

Focus on BrakePointController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 16: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

statemachine brakePointControl

[ inv: (1) condBrakingRequired ]

BrakingRequired

[ inv: (2) condBrakingNotRequired ]

/ brakingRequired := true

[ (2) condBrakingNotRequired ]

/ brakingRequired := false

BrakingNotRequired

[ alge: (4) algeBrakePoint ]

[ alge: (5) algeStoppingDistance ]

[ alge: (6) algeStoppingDuration ]

[ (1) condBrakingRequired ]

[ alge: (7) algeGuaranteedPosition1 ]

[ alge: (8) algeGuaranteedPosition2 ]

[ flow: ∀c ∈ {1..CROSSING COUNT} • tclosedTooLong[c] = −1 ]

Behaviour of BrakePointController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 17: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

statemachine brakePointControl

[ inv: (1) condBrakingRequired ]

BrakingRequired

[ inv: (2) condBrakingNotRequired ]

/ brakingRequired := true

[ (2) condBrakingNotRequired ]

/ brakingRequired := false

BrakingNotRequired

[ alge: (4) algeBrakePoint ]

[ alge: (5) algeStoppingDistance ]

[ alge: (6) algeStoppingDuration ]

[ (1) condBrakingRequired ]

[ alge: (7) algeGuaranteedPosition1 ]

[ alge: (8) algeGuaranteedPosition2 ]

[ flow: ∀c ∈ {1..CROSSING COUNT} • tclosedTooLong[c] = −1 ]

Behaviour of BrakePointController

Simplifying . . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 18: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

statemachine brakePointControl

[ inv: (1) condBrakingRequired ]

BrakingRequired

[ inv: (2) condBrakingNotRequired ]

/ brakingRequired := true

[ (2) condBrakingNotRequired ]

/ brakingRequired := false

BrakingNotRequired

[ alge: (4) algeBrakePoint ]

[ (1) condBrakingRequired ]

Simplified behaviour of BrakePointController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 19: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

HybridUML Internal Data Structure

HybridUML ProfileGraphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

HL3 Framework

Φ

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML

HybridUML Models – Internal Data Structure

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 20: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

FlowConstraint

DataType

InvariantConstraint

PropertyValue

RTSignal

HybridUML Internal Data Structure

RTTrigger

VariablePort

GuardConstraint

VariableConnector

Action

SignalPort

ControlPointAgent

AlgebraicConstraint

SignalConnector

Transition

Mode

Property

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 21: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

: BrakePointController

brakingRequired

v

vtpActive[]

x

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 22: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

: BrakePointController

brakingRequired

v

vtpActive[]

x

vtpActive[VTP COUNT] : Property

BrakePointController : Agent

brakingRequired : Property

x : Property

v : Property

: VariablePort

: VariablePort

: VariablePort

: VariablePort

brakePointControl : Mode

Internal Data Structure Representation of BrakePointController

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 23: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

[ alge: algeBrakePoint ]

/ brakingRequired := true

/ brakingRequired := false

[ condBrakingRequired ]

[ condBrakingNotRequired ]

statemachine brakePointControl

BrakingNotRequired

[ inv: condBrakingNotRequired ]

BrakingRequired

[ inv: condBrakingRequired ]

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 24: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Internal Data Structure Universitat Bremen

brakePointControl : Mode

algeBrakePoint : AlgebraicConstraint

condBrakingNotRequired : InvariantConstraint

brakingNotRequired : Mode brakingRequired : Mode

de : ControlPoint

dx : ControlPoint de : ControlPoint

condBrakingRequired : InvariantConstraint

dx : ControlPoint

submodesubmode

Internal Data Structure Representation of BrakePointController

[ alge: algeBrakePoint ]

/ brakingRequired := true

/ brakingRequired := false

[ condBrakingRequired ]

[ condBrakingNotRequired ]

statemachine brakePointControl

BrakingNotRequired

[ inv: condBrakingNotRequired ]

BrakingRequired

[ inv: condBrakingRequired ]

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 25: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

HL3 Framework

HL3 Framework

Graphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

Φ

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML ProfileHybridUML

HybridUML Models – HL3 Framework

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 26: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

HL3 Framework

• Generic compilation target for hybrid high-level formalisms

• Development and test of embedded applications

• Transformation of high-level models (e.g. HybridUML specifications)

→ executable code

• Executable code defines formal semantics, based on:

– Runtime environment

– Design pattern

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 27: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 28: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

Runtime Environment

Provides low level constructs to be used by HL3 programs: (1) Channel (2) Cluster-

Communication (3) TimeService (4) Scheduler

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 29: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 30: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

TimeService

Scheduler

Channel

getHL3Time()

getHL3Time()

Channel:

• represents a global variable or signal (of the high-level model)

• provides consistent view on global data

• stores and provides time-stamped values

• restricts the set of readers (by scope)

• (receiver, timestamp) → VisibilitySet

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 31: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 32: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

TimeService

Scheduler

Channel

getHL3Time()

getHL3Time()

Channel

AM0 : AbstractMachine

put(. . . )

AM0 : AbstractMachine

AM1 : AbstractMachine

put(. . . )

t

(v1, t1, {AM2})

hl3time

get(. . . )

get(. . . )

put(. . . )

AM2 : AbstractMachine

(v0, t0, {AM1, AM2})

(v2, t2, {AM1})

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 33: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 34: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

Scheduler

TimeService

getHL3Time()

getHL3Time()TimeService:

• provides cluster time t ∈ N ≈ physical time

• provides logical HL3 time (t0, t1) ∈ N× N:

t0 visible time tick

t1 provides causal ordering at t0

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 35: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 36: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

Scheduler:

• schedules AbstractMachines, Transitions, Flows, InterfaceModules

• Flows and InterfaceModules are scheduled periodically

• activities have bounded duration ⇒ scheduling at pre-determined points in time

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 37: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 38: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Flow

Abstract MachineInterface Module

Transition

Selector

getHL3Time()

getHL3Time()

Design Pattern Proposes how to decompose (models of) a high-level formalism:

(1) AbstractMachine (2) Transition (3) Flow (4) InterfaceModule (per high-level formal-

ism + per model)

(5) Selector (per high-level formalism)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 39: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 40: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Abstract Machine getHL3Time()

getHL3Time()

AbstractMachine:

• represents local behaviour of sequential components

• encapsulates local control structure

• provides currently enabled discrete steps (Transitions)

• indicates whether continuous steps (Flows) are admissible

• controls activation of associated Flows

• does not activate steps itself

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 41: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 42: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

Flow

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Transition

getHL3Time()

getHL3Time()

Transition:

• transforms state atomically – discrete step

• guarded by conditions on data space

• executes associated Action on data space

• data space is accessed by means of Channels

• supports separation of control state (locations) and data state

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 43: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 44: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

Transition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Flow

getHL3Time()

getHL3Time()

Flow:

• represents integration function – (time-)continuous step

• applies a discretised representation

• data space is accessed by means of Channels

• associates VisibilitySet on written data for synchronisation of steps

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 45: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 46: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HL3 Framework Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

SchedulerSelector

getHL3Time()

getHL3Time()

Selector:

• controls Transition and Flow synchronisation

• provides Selection (of Transitions and Flow Phase) to Scheduler

• controls logical HL3 time

• depends on high-level formalism

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 47: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

Φ → HL3 Program

Φ

Graphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

HL3 Framework

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML ProfileHybridUML

HybridUML Models – HL3 Program

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 48: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

Φ

Transforming Internal Data Structure into a HL3 program by applying the HL3 Design

Pattern.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 49: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Flow

Abstract MachineInterface Module

Transition

Selector

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 50: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Abstract Machine getHL3Time()

getHL3Time()

Step 1 – Generate HL3::AbstractMachine

→ AbstractMachine class: once

→ notifyTrans(...), update(...), . . . : once

→ data structure for HybridUML Modes’ local control structure: once

⇒ AbstractMachine instances for HybridUML basic agents: for each HybridUML model

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 51: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

AbstractMachine example: BrakePointController

IDScondBrakingRequired : InvariantConstraint

de : ControlPoint

brakePointControl : Mode algeBrakePoint : AlgebraicConstraint

brakingRequired : ModebrakingNotRequired : Mode

condBrakingNotRequired : InvariantConstraint

dx : ControlPoint

de : ControlPointdx : ControlPoint

: Action: TransitioncondBrakingNotRequired : Condition

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 52: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

submode

: InvariantConstraint

condition() = bexp((1) condBrakingRequired)

: AbstractMachine

: FlowConstraint

: ControlPointsource dx

: Action

writeSet = {brakingRequired}readSet = ∅

action() = proc(brakingRequired := false)

id = 1

invariant invariant

BrakingNotRequired : Mode BrakingRequired : Mode

submode

parentparent

brakePointControl : Mode

topLevelMode

flow

: Flow

id = 0integrate() = proc((4) algeBrakePoint)

: InvariantConstraint

condition() = bexp((2) condBrakingNotRequired)

: Transition

id = 1

id = 1readSet = (9) readSetTransBrakingRequired

: Condition

: ModeTransition: ControlPoint targetde

: Guard

condition() = bexp((2) condBrakingNotRequired)

isTrueCondition() = bexp((2) condBrakingNotRequired)

AbstractMachine example: BrakePointController

IDScondBrakingRequired : InvariantConstraint

de : ControlPoint

brakePointControl : Mode algeBrakePoint : AlgebraicConstraint

brakingRequired : ModebrakingNotRequired : Mode

condBrakingNotRequired : InvariantConstraint

dx : ControlPoint

de : ControlPointdx : ControlPoint

: Action: TransitioncondBrakingNotRequired : Condition

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 53: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

id = 1

: AbstractMachine

: FlowConstraint

: ControlPointsource dx

invariant invariant

BrakingNotRequired : Mode BrakingRequired : Mode

submode

parentparent

brakePointControl : Mode

topLevelMode

flow

: Flow

id = 0integrate() = proc((4) algeBrakePoint)

: InvariantConstraint

condition() = bexp((2) condBrakingNotRequired)

: Transition

id = 1

id = 1readSet = (9) readSetTransBrakingRequired

: Condition

: ModeTransition: ControlPoint targetde

: Guard

condition() = bexp((2) condBrakingNotRequired)

isTrueCondition() = bexp((2) condBrakingNotRequired)

submode

: InvariantConstraint

condition() = bexp((1) condBrakingRequired)

: Action

writeSet = {brakingRequired}readSet = ∅

action() = proc(brakingRequired := false)

AbstractMachine example: BrakePointController

IDScondBrakingRequired : InvariantConstraint

de : ControlPoint

brakePointControl : Mode algeBrakePoint : AlgebraicConstraint

brakingRequired : ModebrakingNotRequired : Mode

condBrakingNotRequired : InvariantConstraint

dx : ControlPoint

de : ControlPointdx : ControlPoint

: Action: TransitioncondBrakingNotRequired : Condition

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 54: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 55: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

Transition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Flow

getHL3Time()

getHL3Time()

Step 2 – Generate HL3::Flow

⇒ Flow class: once

⇒ integrate(...): once

→ Flow instances for HybridUML algebraic and flow constraints: for each HybridUML

model

⇒ integration operations for each instance: for each HybridUML model

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 56: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

class Flow {

public:

static void flowBrakePoint1 (const VisibilitySet &);

static void flowBrakePoint2 (const VisibilitySet &);

/* ... */

private:

/** The flow’s condition that guards if the flow is active or not. */

bool m_guard;

/** The associated abstract machine. */

amId_t m_amId;

/** The function that internally executes the integration step. */

void (*const m_pItgrFct)(const VisibilitySet &);

public:

/** Executes an integration step. */

void integrate (const VisibilitySet &v) {if (m_guard) (*m_pItgrFct)(v);}

};

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 57: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

void Flow::flowBrakePoint1 (const VisibilitySet &visSet) {

/* read values needed for calculation */

RouteAtlas &ra = *(RouteAtlas*)Channel::ra.get(m_amId);

float &v = *(float*)Channel::v.get(m_amId);

GlobalConstants &gc = *(GlobalConstants*)Channel::gc.get(m_amId);

/* prepare result */

byteSeq_t byteSeq(sizeof(float));

float &brakePoint1 = (float&)byteSeq;

/* do calculate */

brakePoint1

= ra.vtp[1].x - (ra.vtp[1].v * ra.vtp[1].v - v * v) / 2 * gc.a_min;

/* write result */

Channel::brakePoint1.put(byteSeq, visSet);

}

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 58: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

getHL3Time()

getHL3Time()

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 59: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Selector

Abstract Machine

Flow

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

Scheduler

Transition

getHL3Time()

getHL3Time()

Step 3 – Generate HL3::Transition. . .

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 60: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Φ → HL3 Program Universitat Bremen

get/setHL3Time()

getTrans()isFlowEnabled()

Periodicscheduling of

poll()transmit()

Periodic scheduling of integrate()

enables/disables via guardevaluates condition

trigger init(), getSelection()

AbstractMachine, Flow, InterfaceModule,Transition, Selector; read/write globalstate to/from instances of Channel

+id: transId+c: Condition+a: Action

+id: ifmId+freqPoll: int+freqTx: int

+poll(v:VisibilitySet)+transmit()

trigger init(), notifyTrans(), update()

+init(): bool+getSelection(leftFlowPhase:bool): Selection

+id: amId+amStatus: active|suspended|stopped

+init()+notifyTrans(tr:transId)+update()+getTrans(id:amId): set of transId+isFlowEnabled(id:amId): bool

trigger action a.action()

+id: flowId+guard: bool+frequency: int

+integrate(v:VisibilitySet)

+clustertime: nat−hl3time: timeTick

+getHL3Time(): timeTick+setHL3Time(t:timeTick)+synchronize()

−e: set of ChannelEntry

+put(d:seq of byte,v:VisibilitySet)+get(id:amId + ifmId): seq of byte

+tx(n:nodeId,d:seq of byte)+rx(n:nodeId): seq of byte

Abstract Machine

FlowTransition

Interface Module

HL3 Framework

ClusterCommunication

Channel

TimeService

SchedulerSelector

getHL3Time()

getHL3Time()

Step 4 – Generate HL3::Selector

→ Selector class: once

⇒ getSelection(...), . . . : once

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 61: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Selector – getSelection(...) Universitat Bremen

HybridUML Selector – getSelection(...)

HybridUML: interleaving of discrete and continuous steps

Discrete step • A single basic agent fires one transition.

Continuous step • All agents synchronously let time pass.

• Active algebraic and flow conditions are applied.

• All invariants of current mode configurations must be satisfied.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 62: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Selector – getSelection(...) Universitat Bremen

1. Active invariants are checked. ⇒ e(c) : Continuous step c admissible?

2. Set Tenabled of enabled transitions is calculated.

3. |Tenabled| > 0 ⇒ One enabled transition t ∈ Tenabled is chosen non-deterministically.

4. e(c) ∧ ¬(|Tenabled| > 0) — c is chosen.

¬e(c) ∧ |Tenabled| > 0 — t is chosen.

e(c) ∧ (|Tenabled| > 0) — Non-deterministic choice of t or c.

¬e(c) ∧ ¬(|Tenabled| > 0) — Deadlock.

5. The chosen step is taken, then proceeded with 1.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 63: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

. . . High-Level Semantics of HybridUML Universitat Bremen

. . . High-Level Semantics of HybridUML

HybridUML ProfileGraphical Notation

HybridUMLTextual Notation

HybridUMLInternal Data Structure

HybridUMLXMI (XML Metadata Interchange)

HL3 Framework

Φ

HL3 Program

HL3 – Hybrid Low-Level Language

HybridUML

HybridUML Models

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 64: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

. . . High-Level Semantics of HybridUML Universitat Bremen

. . . High-Level Semantics of HybridUML

. . . .

[cond]/action

[cond]/action[cond’]/action’

. . . .

[cond’]/action

[C2]

x1x2x3

t1t0t

High-Level Semantics(Timed Labelled Transition System)

Timed State-Transition System

Simulation Relation

(takes discretisation into account)

Hard Real-Time ExecutionHardware-in-the-Loop Test

Model Checking

Test Case Generation

[C1]

HL3 program

HL3 Framework

BrakingNotRequired

BrakingRequired

[ inv: condBrakingNotRequired ]

[ inv: condBrakingRequired ]

[ alge: algeBrakePoint ]

statemachine brakePointControl

HybridUML model

Φ

x′1

x′2

x′3

t′1

t′0

t′

Low-Level Semantics

tor

Selec

HybridUML Model – High-Level Model – HL3 Program

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 65: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Semantics Universitat Bremen

HybridUML Semantics

Semantics of agents are induced by (flat) Timed Labelled Transition System (LTS).

• Hierarchical structure of modes is encoded in location set Loc.

• A state σ maps (local and global) variable symbols to (appropriately typed) values

• Γ is a global structure denoting the signal space.

• Execution with respect to some global clock value t ∈ R+.

=⇒ An agent configuration is a tuple (loc, σ,Γ, t).

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 66: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Semantics Universitat Bremen

Discrete Transitions

A discrete transition step labelled c[b]/f(σ); d between two nodes loc and loc′ in agent i is

thus handled as transition

(loc, σ,Γ, t)c−→ (loc′, σ′,Γ′, t)

if Γ |= (c, i) and σ |= b,

with σ′ = f(σ), Γ′ |= ¬(c, i) and Γ |= (d, j) for all agents j.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 67: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Semantics Universitat Bremen

Flow Transitions

A flow transition f acts on all time-continuous variables simultaneously.

We have a transition

(loc, σ,Γ, t) −→ (loc, σ′,Γ′, t′)

if the flow f is defined on the interval [0, t′ − t] and enabled on the interval [t, t′],with f(0) = σ, f(t′ − t) = σ′, and Γ′ |= ¬(sig, i) for all signals sig and all agents j.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 68: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Automated Testing against (Hybrid) Real-Time Specifications Universitat Bremen

Automated Testing against (Hybrid) Real-Time Specifications

• Automated Testing against Timed CSP specifications

– W-Method style theorem: Correct coverage of testing tree and characterisation set

implies correctness of system under test in the sense of Timed Failures Refinement

– Efficient test data selection heuristics for systems with constant timer durations

• Test data selection for time-continuous observables:

– Select piecewise smooth curves through tangent vector fields on differentiable manifolds

– Equivalence between specification and implementation may be characterised as isom-

etry between manifolds – metric tensor maps coordinates of physical state space to

coordinates of implementation state space

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 69: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Automated Testing against (Hybrid) Real-Time Specifications Universitat Bremen

Automated Testing against (Hybrid) Real-Time Specifications

Conjecture: We cannot find a weaker relation than isometry for implementation

correctness

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 70: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Illustration of W-Method Universitat Bremen

T4 = <e.u,x,a> T5 = <e.u,e.w,a> T6 = <e.z,a>

1

2

1

1 1 1

2 2

TG(QU)

a

x(refused)

e.z [z < u]

a (refused)e.w

xe.u

1

2

TRANSITION COVER T

x(refused)

x

a e.u e.z

CHARACTERISATION SET W = { <a> }

TEST TRACES

complete set of tests if SUT has the same number of states as Q

TESTS DEFINED BY T^W

a (refused) e.w

T1 = <x,a> T2 = <a,a> T3 = <e.u,a,a>

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 71: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Domain-specific description of railway control systems Universitat Bremen

Domain-specific description of railway control systems

• Motivation:

– Wide-spectrum formalism are suitable for most application domains, but require con-siderable IT expertise ⇒ too complicated to be used as a means of communicationbetween domain experts and IT specialists

– Reason: language elements of wide-spectrum formalisms do not map directly ontoconcrete objects of the application domain

• Objectives of domain-specific formalisms:

– Facilitate communication between domain experts and IT specialists by using terms andobjects of the application domain in a direct way.

– Define formal meaning of domain-specific descriptions by mapping into formal model orinto wide-spectrum language with well-defined semantics

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 72: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Domain-specific description of railway control systems Universitat Bremen

• Question: Is UML suitable for domain-specific descriptions?

• Answer: Yes – but we need UML2.0 with full profiling support:

– Explain terms and objects of the application domain by means of the UML2 profile

mechanism

– Semi-formal semantics is given by the UML2.0-style profile description

– Formal semantics is available, as long as constructs used in profile have formal meaning

– for example, HybridUML constructs

– Use domain-specific icons to depict the language elements of the new profile

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 73: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Domain-specific description of railway control systems Universitat Bremen

• Examples from the railway domain:

– Abstract railway networks are diagrams with nodes Signal, Point, Sensor, Track

Segment and associations such as connected-to

– These nodes are derived from HybridUML stereotype Agent – that is, from Class and

StateMachine

– Generic transition rules are encoded by StateMachines associated with each type of

agent

– A project-specific railway network is a concrete object diagram instantiated from the

Agent diagram

– Concrete object behaviour is specified by inserting concrete object identifications into

StateMachines

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 74: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Domain-specific description of railway control systems – tramway network Universitat Bremen

TRAM MAINTENANCE SITES22

G24.2

W118

W100

TRAMWAY MAIN ROUTES: 1: S20−G21 (NORTH−SOUTH) 3: S21−G23 (SOUTH−NORTH)

ROUTE 4: S21−G25

ROUTE 5: S22−G23

ROUTE 2:S20−G25

ROUTE 6:S22−G21

ROUTE 3S21−G23

G22.1

G22.0

G22.3

G25.0 G25.1

G23.1

G23.0

G21.1

G21.0

S20

S21

G24.0G24.1

G24.3

G22.2

S20−G21ROUTE 1:

G20.0

G20.1

G20.2 G20.3

W102

Tramway network

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 75: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Tramway network – UML2.0 representation Universitat Bremen

. . . . . . . . .

is−neighbour

has−stem−at

has−left−branch−at

has−straight−branch−at

connected−to

. . . . . . . . .

W102:Point

S20:Signal

G200:Sensor

isEntrySensor = TRUE

G201:Sensor

G202:Sensor G201:Sensor

Tramway network – UML2.0 representation

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 76: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Conclusion – Impact of the HYBRIS Project Universitat Bremen

Conclusion – Impact of the HYBRIS Project

20 publications

6 Dissertations

DFG−SPP1064

SpecificationFormalisms

Theory ofTest Automation Operating

Systems

KATO PBSE

DFG TRANSFER CENTRE(planned for 2005)

Real−Time

SiemensAzSME

Model−basedSoftwareDevelopment

Airbus A380

TestsHW/SW Integration

VICTORIAEU PROJECT

AirbusBMBF PROJECT

Airbus Siemens

Test EnginesReal−Time

Verified Systems

RTTLTest LanguageReal−Time

Verified Systems

Verified Systems

TTTech: Tests

Technologyfor Time Triggered

(planned)

TechnologyTransferProjects

IndustrialProjects

BasicResearch

HYBRIS

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 77: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Contributions by . . . Universitat Bremen

Contributions by . . .

Peter Amthor – Kirsten Berkenkotter – Stefan Bisanz – Bettina Buth – Markus Dahlweid –

Rolf Drechsler – Christof Efkemann – Ingo Fiß – Daniel Große – Ulrich Hannemann – Anne E.

Haxthausen – Detlef Kendelbacher – Oliver Meyer – Jan Peleska – Holger Schlingloff – Uwe

Schulze – Aliki Tsiolakis

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 78: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Literature Universitat Bremen

Literature

[1] Kirsten Berkenkotter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska. Executable HybridUML and itsapplication to train control systems. In H. Ehrig, W. Damm, J. Desel, M. Große-Rhode, W. Reif, E. Schnieder, andE. Westkamper, editors, Integration of Software Specification Techniques for Applications in Engineering, volume3147 of Lecture Notes in Computer Science. Springer Verlag, September 2004. ISBN 3-540-23135-8.

[2] Kirsten Berkenkotter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska. Spezifikation von Echtzeit-Automatisierungssystemen mit HybridUML. atp – Automatisierungstechnische Praxis, 46(8):54–60, August 2004.ISSN 0178-2320.

[3] Kirsten Berkenkotter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska. HybridUMLProfile for UML 2.0. SVERTS Workshop at the �UML� 2003 Conference, October 2003.http://www-verimag.imag.fr/EVENTS/2003/SVERTS/.

[4] Jan Peleska. Formal methods for test automation - hard real-time testing of controllers for the airbus aircraftfamily. In Proc. of the Sixth Biennial World Conference on Integrated Design & Process Technology (IDPT2002),Pasadena, California. Society for Design and Process Science, June 2002. To appear.

[5] J. Peleska and A. Tsiolakis. Automated Integration Testing for Avionics Systems. In Proceedings of the 3rdICSTEST – International Conference on Software Testing, April 2002.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 79: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Literature Universitat Bremen

[6] J. Peleska, S. Bisanz, I. Fiß, and M. Endreß. Non-Standard Graphical Simulation Techniques for TestSpecification Development. In H. Szczerbicka, editor, Modelling and simulation: A tool for the next millenium.13th European Simulation Multiconference 1999, volume 1, pages 575–580, Delft, 1999. Society for ComputerSimulation International.

[7] A. Haxthausen and J. Peleska. Formal Development and Verification of a Distributed Railway Control System.In Proceedings of First FMERail Workshop, 1998.

[8] A. E. Haxthausen and J. Peleska. Formal Development and Verification of a Distributed Railway ControlSystem. In Proceedings of Formal Methods World Congress FM’99, number 1709 in Lecture Notes in ComputerScience, pages 1546 – 1563. Springer-Verlag, 1999.

[9] J. Peleska, A. Baer, and A. E. Haxthausen. Towards Domain-Specific Formal Specification Languages forRailway Control Systems. In Proceedings of the 9th IFAC Symposium on Control in Transportation Systems 2000,June 13-15, 2000, Braunschweig, Germany, pages 147–152, 2000.

[10] A. E. Haxthausen and J. Peleska. Formal Development and Verification of a Distributed Railway ControlSystem. IEEE Transaction on Software Engineering, 26(8):687–701, 2000.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 80: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

Literature Universitat Bremen

[11] A. E. Haxthausen and J. Peleska. Formal Methods for the Specification and Verification of DistributedRailway Control Systems: From Algebraic Specifications to Distributed Hybrid Real-Time Systems. In Forms’99 - Formale Techniken fur die Eisenbahnsicherung Fortschritt-Berichte VDI, Reihe 12, Nr. 436, pages 263–271.VDI-Verlag, Dusseldorf, 2000.

[12] A. E. Haxthausen and J. Peleska. A Domain Specific Language for Railway Control Systems. InProceedings of the Sixth Biennial World Conference on Integrated Design and Process Technology, (IDPT2002),Pasadena, California, June 23-28 2002.

[13] A. E. Haxthausen and J. Peleska. Generation of Executable Railway Control Components from Domain-Specific Descriptions. In Proceedings of the Symposium on Formal Methods for Railway Operation and ControlSystems (FORMS’2003), Budapest/Hungary, pages 83–90. L’Harmattan Hongrie, May 15-16 2003.

[14] A. E. Haxthausen and J. Peleska. Automatic Verification, Validation and Test for Railway Control Systemsbased on Domain-Specific Descriptions. In Proceedings of the 10th IFAC Symposium on Control in TransportationSystems. Elsevier Science Ltd, Oxford, 2003.

[15] A. E. Haxthausen J. Peleska, D. Große and Rolf Drechsler. Automated Verification for Train ControlSystems. In Submitted to Forms ’04, 2004.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 81: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

The end. Universitat Bremen

The end.

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 82: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

condBrakingRequired ≡∃i ∈ {1..V TP COUNT}•

brakePoint[i].x ≤ x ∧ ra.vtp[i].v < v ∧ ra.vtp[i].x > x∧(vtpActive[i] ∨ (3) condTooLate)

(1)

condBrakingNotRequired ≡∀i ∈ {1..V TP COUNT}•¬(brakePoint[i].x ≤ x ∧ ra.vtp[i].v < v ∧ ra.vtp[i].x > x∧

(vtpActive[i] ∨ (3) condTooLate))

(2)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 83: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

condTooLate ≡ra.vtp[i].type = V TP TY PE.CROSSING∧((xclosedTooLong,1[ra.vtp[i].cr.id] ≤ ra.vtp[i].cr.xend + const.l

∧ tclosedTooLong[ra.vtp[i].cr.id] ≤ tbrake)∨ (xclosedTooLong,2[ra.vtp[i].cr.id] ≤ ra.vtp[i].cr.xend + const.l

∧ tclosedTooLong[ra.vtp[i].cr.id] > tbrake))

(3)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 84: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

algeBrakePoint ≡∀i ∈ {1..V TP COUNT} • brakePoint[i] = ra.vtp[i].x− ra.vtp[i].v2−v2

2·const.amin

(4)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 85: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

algeStoppingDistance ≡sbrake = −v2

2·const.amin

(5)

algeStoppingDuration ≡tbrake = −v

const.amin

(6)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 86: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

algeGuaranteedPosition1 ≡∀c ∈ {1..CROSSING COUNT}•xclosedTooLong,1[c] = x + const.amin

2 · tclosedTooLong[c]2 + v · tclosedTooLong[c]

(7)

algeGuaranteedPosition2 ≡∀c ∈ {1..CROSSING COUNT}•xclosedTooLong,2[c] = x + sbrake + (tclosedTooLong[c]− tbrake) · const.vpass

(8)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 87: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

RouteAtlas

VelocityTargetPoint

x:Real

�dataType�

v:Realtype: VTP TYPEid:Integer

xbeginning:Realxend:Realtyellow:Realtgate:Realtapproach:Realid:Integer

�dataType�Crossing

vtp VTP COUNTCROSSING COUNTcr

vtp cr

0..1

�dataType�

1

Datatypes

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz

Page 88: HYBRIS -- Efficient Analysis of Hybrid Systems · 2015-10-16 · HYBRIS – Efficient Analysis of Hybrid Systems Kirsten Berkenk¨otter, Stefan Bisanz, Ulrich Hannemann, and Jan Peleska

HybridUML Graphical Notation Universitat Bremen

readSetTransBrakingRequired ≡{v | ∃i ∈ {1..V TP COUNT}•v ≡ chan(vtpActive[i]) ∨ v ≡ chan(brakePoint[i])∨v ≡ chan(ra.vtp[i].v) ∨ v ≡ chan(ra.vtp[i].x)} ∪ {chan(x), chan(v)}

(9)

28.09.2004 HYBRIS – Efficient Analysis of Hybrid Systems J. Peleska, S. Bisanz