of Things” Research projects working from different perspectives: testing, model checking, runtime verification… Last year future work… […] combine testing technique with runtime verifica- tion in order to increase the reliability of IoT systems. (Leotta et al. 2018) 1
that deals with the study, development, and ap- plication of those verification techniques that allow checking whether a run of a system under scrutiny sat- isfies or violates a given correctness property. (Leucker and Schallhart 2009) 3
be hard (or even undecidable) to be statically checked • Model of the system unavailable, or we want to verify the actual implementation • Dinamicity of the underlying system 5
be hard (or even undecidable) to be statically checked • Model of the system unavailable, or we want to verify the actual implementation • Dinamicity of the underlying system • Verification after deployment 5
be hard (or even undecidable) to be statically checked • Model of the system unavailable, or we want to verify the actual implementation • Dinamicity of the underlying system • Verification after deployment • Safety-critical systems 5
be hard (or even undecidable) to be statically checked • Model of the system unavailable, or we want to verify the actual implementation • Dinamicity of the underlying system • Verification after deployment • Safety-critical systems • React to failures 5
a specification formalism. Trace expressions are expressly devised for runtime verification purposes: • the basic building blocks are the observed events 7
a specification formalism. Trace expressions are expressly devised for runtime verification purposes: • the basic building blocks are the observed events • a rich set of operators is provided: prefixing, union, intersection, concatenation, interleaving 7
a specification formalism. Trace expressions are expressly devised for runtime verification purposes: • the basic building blocks are the observed events • a rich set of operators is provided: prefixing, union, intersection, concatenation, interleaving • more high-level operators can be introduced for ease of use (e.g., if-then-else conditionals) 7
a specification formalism. Trace expressions are expressly devised for runtime verification purposes: • the basic building blocks are the observed events • a rich set of operators is provided: prefixing, union, intersection, concatenation, interleaving • more high-level operators can be introduced for ease of use (e.g., if-then-else conditionals) • parametric runtime verification supported 7
a specification formalism. Trace expressions are expressly devised for runtime verification purposes: • the basic building blocks are the observed events • a rich set of operators is provided: prefixing, union, intersection, concatenation, interleaving • more high-level operators can be introduced for ease of use (e.g., if-then-else conditionals) • parametric runtime verification supported • recursion allowed: (possibly) non-terminating system can be verified 7
Introduce small changes in code, similar to errors a developer could do (mutants) and see if tests can detect (kill) them. Effectiveness: percentage of killed mutants. Can be used with runtime verification too! 17
if (i == 20) i = 0; if (i >= 20) i = 0; no black-box approach can detect this! • weak input scenarios (w.r.t. boundaries) if (value >= 160) ... if (value > 160) ... 20
be worth studying • It would be nice to automatically get the specification from the requirements… if any • Trace expression semantics implementation (Prolog server) are always the same, but the monitor depends on the system 21
be worth studying • It would be nice to automatically get the specification from the requirements… if any • Trace expression semantics implementation (Prolog server) are always the same, but the monitor depends on the system • We are working on combining runtime verification and testing 21
Approach for Internet of Things Systems”. In: Current Trends in Web Engineering. 2018. Martin Leucker and Christian Schallhart. “A brief account of runtime verification”. In: The Journal of Logic and Algebraic Programming (2009). 22