RML: RUNTIME MONITORING LANGUAGE

Luca Franceschini
Advisor: Prof. Davide Ancona

PhD evaluation committee meeting

A System-Agnostic DSL for Runtime Verification

RML LANGUAGE

Goals:

  • Instrumentation-independent
    (thus language-independent)
  • Programmer-friendly syntax
  • Expressivity
  • JSON-encoded events
  • Both offline and online RV

PROPOSED ARCHITECTURE

EXAMPLE: ITERATORS

iterator matches { name: 'iterator' };
hasNext(res) matches { name: 'hasNext', result: res };
next matches { name: 'next' };

Main = empty ∨ iterator (hasNext(true) next)* hasNext(false);

Event domain: method calls

PARAMETRICITY

iterator(id) matches { name: 'iterator', resultId: id };
hasNext(id, res) matches { name: 'hasNext', result: res, targetId: id };
next(id) matches { name: 'next', targetId: id };

Main = empty ∨ { let id;
    iterator(id)
    (hasNext(id, true) next(id))*
    hasNext(id, false)
};

Event domain: method calls

MONITORING MANY OBJECTS

iterator(id) matches { name: 'iterator', resultId: id };
hasNext(id, res) matches { name: 'hasNext', result: res, targetId: id };
next(id) matches { name: 'next', targetId: id };

Main = empty ∨ { let id; iterator(id)
    (Main | (hasNext(id, true) next(id))* hasNext(id, false))
};

Event domain: method calls

GENERICS AND COMPUTATIONS

// event types push(val), pop(val), size(s) to be defined

Stack<s> = size(s)* { let val;
    push(val) Stack<s+1> pop(val) Stack<s>
}?;

Main = Stack<0>;

INTERSECTION AND FILTERS

// event types enq(val), deq and deq(val) to be defined

Main = { let val;
    enq(val)
    ((deq | Main ) ∧ ( deq ≫ deq(val) all))
}?;

Context-sensitive property!

VERDICT

4-value logic for the verdict (RV-LTL, Bauer et al.):

  • False
  • Presumably false
  • Presumably true
  • True

IMPLEMENTATION

BENCHMARKS

BENCHMARKS

PAPERS

  • Java-like programs RV (FTfJP'17)
  • Towards IoT testing (EnWoT'17)
  • Towards IoT RV (ICWE'18)
  • Towards Node.js RV (EnWoT'18)
  • IoT testing (IET'18)
  • Java API specification (FTfJP'18)
  • RV/testing IoT comparison (ENASE'19)
  • Deterministic RV (ICTCS'19)

 

  • ROS monitoring
  • RML
  • Deterministic semantics
  • <Programming> paper

PhD evaluation committee meeting

By Luca Franceschini

PhD evaluation committee meeting

  • 910