Trading perfection for robustness in extraordinary software
Benoit Baudry (EPI DiverSE) Journées scientifiques 2015 – June, 19 2015.
1
Trading perfection for robustness in extraordinary software Benoit - - PowerPoint PPT Presentation
Trading perfection for robustness in extraordinary software Benoit Baudry (EPI DiverSE) Journes scientifiques 2015 June, 19 2015. 1 Extraordinary software 2 Unstable environment Users Customization, extensions, add-ons Malicious
Benoit Baudry (EPI DiverSE) Journées scientifiques 2015 – June, 19 2015.
1
2
3
4
5
6
7
8
source code instrumented binary
running program
Managing Performance vs. Accuracy Trade-offs With Loop Perforation. S. Sidiroglou-Douskos, Sasa Misailovic, H. Hoffman, M. Rinard. ESEC-FSE’11.
9
10
Automatic Runtime Error Repair and Containment via Recovery Shepherding. F. Long, S. Sidiroglou- Douskos, M. Rinard. PLDI’14.
11
Post-compiler Software Optimization for Reducing Energy. E. Schulte, J. Dorn, S. Hardning, S. Forrest,
12
source code
running program
Post-compiler Software Optimization for Reducing Energy. E. Schulte, J. Dorn, S. Hardning, S. Forrest,
13
Post-compiler Software Optimization for Reducing Energy. E. Schulte, J. Dorn, S. Hardning, S. Forrest,
14
FlexJava: Language Support for Safe and Modular Approximate Programming. J.Park, H. Esmaeilzadeh, X. Zhang, M. Naik, and W. Harris. ESEC-FSE’15.
15
FlexJava: Language Support for Safe and Modular Approximate Programming. J.Park, H. Esmaeilzadeh, X. Zhang, M. Naik, and W. Harris. ESEC-FSE’15.
16
FlexJava: Language Support for Safe and Modular Approximate Programming. J.Park, H. Esmaeilzadeh, X. Zhang, M. Naik, and W. Harris. ESEC-FSE’15.
17
FlexJava: Language Support for Safe and Modular Approximate Programming. J.Park, H. Esmaeilzadeh, X. Zhang, M. Naik, and W. Harris. ESEC-FSE’15.
18
a u t
a t i c s y n t h e s i s
19
computationally diverse program variants ». ISSTA, 2014.
20 20
don’t compile don’t pass all test cases sosies
computationally diverse program variants ». ISSTA, 2014.
public static boolean isAssignable(Class<?>[] classArray, Class<?>[] toClassArray, final boolean autoboxing) { if (ArrayUtils.isSameLength(classArray, toClassArray) == false) {return false;} if (classArray == null) { classArray = ArrayUtils.EMPTY_CLASS_ARRAY; } if (toClassArray == null) { toClassArray = ArrayUtils.EMPTY_CLASS_ARRAY; } for (int i = 0; i < classArray.length; i++) { if (isAssignable(classArray[i], toClassArray[i], autoboxing) == false) { return false; }} return true; }
21
22
23
24
25