Project Details
EMPEROR: Learning Causes of Program Behavior
Subject Area
Software Engineering and Programming Languages
Term
since 2015
Project identifier
Deutsche Forschungsgemeinschaft (DFG) - Project number 261444241
All program behavior is triggered by some program input. Which parts of the input do trigger program behaviors, and how? In the EMPEROR project, we aim to automatically produce explanations for program behaviors—notably program failures. To this end, we (1) use grammars that separate inputs into individual elements; (2) learn statistical relations between features of input elements and program behavior; and (3) use systematic tests to strengthen or refute inferred associations, including internal features of the execution. As a result, we obtain an approach that (1) automatically infers the (input) conditions under which a specific behavior occurs: “The program fails whenever the mail address contains a quote character”; (2) automatically (re)produces behaviors of interest via generated test inputs: “andr'e@foo.com”; and (3) refines and produces cause-effect relationships via generated test cases, involving execution features: “The input foo''''''''@bar.com” causes a recursion depth of more than 128, leading to a crash”.EMPEROR is the successor to EMPRESS, in which we showed that statistical relations between input elements and program behavior exist, and how prototypical implementations would exploit them for testing and debugging. EMPEROR takes the approaches from EMPRESS and unifies and extends them in a single modular approach, going way beyond simple statistical relations. By learning and refining predictive and generative models, EMPEROR will be able to infer and refine relationships involving arbitrary
DFG Programme
Research Grants