The Use of Self Checks and Voting in Software Error Detection: An Empirical Study
IEEE Transactions on Software Engineering
Using profile information to assist classic code optimizations
Software—Practice & Experience
ACM Transactions on Computer Systems (TOCS)
An annotated bibliography of interactive program steering
ACM SIGPLAN Notices
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
MICRO 30 Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture
An object-based infrastructure for program monitoring and steering
SPDT '98 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
Representation of function variants for embedded system optimization and synthesis
Proceedings of the 36th annual ACM/IEEE Design Automation Conference
A multi-agent architecture for process management accommodates unexpected performance
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 1
A constraint-based application model and scheduling techniques for power-aware systems
Proceedings of the ninth international symposium on Hardware/software codesign
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
ACM SIGCOMM Computer Communication Review
On-the-fly calculation and verification of consistent steering transactions
Proceedings of the 2001 ACM/IEEE conference on Supercomputing
Efficient incremental algorithms for dynamic detection of likely invariants
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Perracotta: mining temporal API rules from imperfect traces
Proceedings of the 28th international conference on Software engineering
The Daikon system for dynamic detection of likely invariants
Science of Computer Programming
Automatically patching errors in deployed software
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Hi-index | 0.01 |
A multi-mode software system contains several distinct modes of operation and a controller for deciding when to switch between modes. Even when developers rigorously test a multi-mode system before deployment, they cannot foresee and test for every possible usage scenario. As a result, unexpected situations in which the program fails or underperforms (for example, by choosing a non-optimal mode) may arise. This research aims to mitigate such problems by creating a new mode selector that examines the current situation, then chooses a mode that has been successful in the past, in situations like the current one. The technique, called program steering, creates a new mode selector via machine learning from good behavior in testing or in successful operation. Such a strategy, which generalizes the knowledge that a programmer has built into the system, may select an appropriate mode even when the original controller cannot. We have performed experiments on robot control programs written in a month-long programming competition. Augmenting these programs via our program steering technique had a substantial positive effect on their performance in new environments.