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
- 1,021