Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Trustworthy numerical computation in Scala
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Randomized accuracy-aware program transformations for efficient approximate computations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuity and robustness of programs
Communications of the ACM
CLSE: closed-loop symbolic execution
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Input-output robustness for discrete systems
Proceedings of the tenth ACM international conference on Embedded software
A systematic review of software robustness
Information and Software Technology
An orchestrated survey of methodologies for automated software test case generation
Journal of Systems and Software
On-the-fly detection of instability problems in floating-point program execution
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Consistency analysis of decision-making programs
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Quantitative reactive modeling and verification
Computer Science - Research and Development
Hi-index | 0.02 |
A key feature of control systems is robustness, the property that small perturbations in the system inputs cause only small changes in its outputs. Robustness is key to designing systems that work under uncertain or imprecise environments. While continuous control design algorithms can explicitly incorporate robustness as a design goal, it is not clear if robustness is maintained at the software implementation level of the controller: two ``close'' inputs can execute very different code paths which may potentially produce vastly different outputs.We present an algorithm and a tool to characterize the robustness of a control software implementation. Our algorithm is based on symbolic execution and non-linear optimization, and computes the maximum difference in program outputs over all program paths when a program input is perturbed. As a by-product, our algorithm generates a set of test vectors which demonstrate the worst-case deviations in outputs for small deviations in inputs. We have implemented our approach on top of the Splat test generation tool and we describe an evaluation of our implementation on two examples of automotive control code.