Event-B specification templates for defining dynamic semantics - - PowerPoint PPT Presentation

event b specification templates for defining dynamic
SMART_READER_LITE
LIVE PREVIEW

Event-B specification templates for defining dynamic semantics - - PowerPoint PPT Presentation

Event-B specification templates for defining dynamic semantics of DSLs Ulyana Tikhonova u.tikhonova@tue.nl Mark van den Brand, Tim Willemse, Tom Verhoeff, Maarten Manders Language concepts (statements) Semantic mapping Operational


slide-1
SLIDE 1

Event-B specification templates

Ulyana Tikhonova u.tikhonova@tue.nl

for defining dynamic semantics

  • f DSLs

Mark van den Brand, Tim Willemse, Tom Verhoeff, Maarten Manders

slide-2
SLIDE 2

Defining dynamic semantics of programming languages

2

Semantic mapping Semantic domain

  • Variables/memory
  • Control flow
  • Branching

Language concepts (statements)

  • Operational semantics (SOS)
  • Action semantics
  • Denotational semantics
slide-3
SLIDE 3

Domain-Specific Languages (DSLs)

3

slide-4
SLIDE 4

4

slide-5
SLIDE 5

Defining dynamic semantics of domain specific languages

5

Semantic mapping Semantic domain

  • Variables/memory
  • Control flow
  • Branching

Language concepts (statements)

  • Operational semantics (SOS)
  • Action semantics
  • Denotational semantics
slide-6
SLIDE 6

Defining dynamic semantics of domain specific languages

6

Semantic mapping Semantic domain

  • Variables/memory
  • Control flow
  • Branching

Language concepts (statements) Semantic domain Semantic mapping

  • Architecture layers
  • Design patterns
  • Synchronization

protocols

  • Operational semantics (SOS)
  • Action semantics
  • Denotational semantics
slide-7
SLIDE 7

Defining dynamic semantics of domain specific languages

7

Semantic mapping Semantic domain

  • Variables/memory
  • Control flow
  • Branching

Language concepts (statements) Semantic domain Semantic mapping

  • Architecture layers
  • Design patterns
  • Synchronization

protocols

  • Simulation
  • Formal analysis
  • Visualization

Specification templates

slide-8
SLIDE 8

8

slide-9
SLIDE 9

9

slide-10
SLIDE 10

10

VARIABLES curr_job, curr_la, la_input, ssa_output INVARIANTS la_input ∈ ℕ ⇸ LogicalActions ssa_output ∈ ℕ ⇸ SSActions curr_job ∈ ℙ(SSAOccurences) curr_la ∈ LogicalActions EVENTS Initialisation curr_la :∈ LogicalActions curr_job ≔ ∅ la_input ≔ ∅ ssa_output ≔ ∅ request_la (la, n) where la ∈ LogicalActions curr_job = ∅ n ∈ ℕ la_input ≠ ∅ ⇒ ∀ i · i ∈ dom(la_input) ⇒ n > i then curr_job ≔ dom(LALabelDef(la)) curr_la ≔ la la_input ≔ la_input ∪ { n ↦ la } request_ssa (ssaction, occurence) where

  • ccurence ∈ curr_job
  • ccurence ↦ ssaction ∈ LALabelDef (curr_la)

then curr_job ≔ curr_job \ {occurence} execute_ssa (ssaction, n) where ssaction ∈ SSActions n ∈ ℕ ssa_output ≠ ∅ ⇒ ∀ i · i ∈ dom(ssa_output) ⇒ n > i then ssa_output ≔ ssa_output ∪ { n ↦ ssaction } END

slide-11
SLIDE 11

Generic programming: reuse of code

11

static void MakeAtLeast<T>(T[] list, T lowest) where T : IComparable<T> { for (int i = 0; i < list.Length; i++) if (list[i].CompareTo(lowest) < 0) list[i] = lowest; } static void Main() { int[] array = { 0, 1, 2, 3 }; MakeAtLeast<int>(array, 2); }

slide-12
SLIDE 12

12

MACHINE queue_machine SEES queue_context VARIABLES queue INVARIANTS inv1: queue ∈ ℕ ⇸ ElementType EVENTS INITIALISATION ≙ act1: queue ≔ ∅ END enqueue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ↦ element ∈ queue grd3: ∀i·i ∈ dom(queue) ⇒ index ≤ i THEN act1: queue ≔ queue ∖ {index ↦ element} END dequeue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ∈ ℕ grd3: queue ≠ ∅ ⇒ (∀i·i ∈ dom(queue) ⇒ index > i) grd4: {index ↦ element} ∈ ℕ ⇸ ElementType grd5: index ∉ dom(queue) THEN act2: queue ≔ queue ∪ {index ↦ element} END END

MyType MyType MyType MyType

slide-13
SLIDE 13

Aspect Oriented Programming: cross cutting concerns

13

Queue enqueue dequeue Listener subscribe notify Partial Order init_partial_order is_max_element remove_element method1 subscribe init_partial_order method2 notify enqueue is_max_element method3 dequeue remove_element

slide-14
SLIDE 14

14

Listener Queue Partial Order method1 subscribe init_partial_order method2 notify enqueue is_max_element method3 dequeue remove_element Specializations of specification templates from the generic library

slide-15
SLIDE 15

demo 15

slide-16
SLIDE 16

16

Meta-model DSL model Event-B specification templates Event-B specification

DSL/Ecore Event-B/Rodin

Specification templates Constelle definition Constelle-to-Event-B

slide-17
SLIDE 17

Conclusions

17

  • Constelle as a front-end

– Reuse of Event-B code via generic programming – Clear design via composition/mapping of aspects – Intermediate layer for bridging different technological platforms

  • Event-B as a back-end

– Generic instantiation – (Shared event) composition – Library of reusable specification templates