Automatic Workarounds: Exploiting the Intrinsic Redundancy of Web Applications

被引:13
作者
Carzaniga, Antonio [1 ]
Gorla, Alessandra [2 ]
Perino, Nicolo [1 ]
Pezze, Mauro [1 ,3 ]
机构
[1] Univ Lugano, Lugano, Switzerland
[2] IMDEA Software Inst, Madrid, Spain
[3] Univ Milano Bicocca, Milan, Italy
基金
瑞士国家科学基金会;
关键词
Reliability; Design; Automatic workarounds; Web applications; Web API; SOFTWARE; BPEL; DESIGN; FAULTS;
D O I
10.1145/2755970
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Despite the best intentions, the competence, and the rigorous methods of designers and developers, software is often delivered and deployed with faults. To cope with imperfect software, researchers have proposed the concept of self-healing for software systems. The ambitious goal is to create software systems capable of detecting and responding "autonomically" to functional failures, or perhaps even preempting such failures, to maintain a correct functionality, possibly with acceptable degradation. We believe that self-healing can only be an expression of some form of redundancy, meaning that, to automatically fix a faulty behavior, the correct behavior must be already present somewhere, in some form, within the software system either explicitly or implicitly. One approach is to deliberately design and develop redundant systems, and in fact this kind of deliberate redundancy is the essential ingredient of many fault tolerance techniques. However, this type of redundancy is also generally expensive and does not always satisfy the time and cost constraints of many software projects. With this article we take a different approach. We observe that modern software systems naturally acquire another type of redundancy that is not introduced deliberately but rather arises intrinsically as a by-product of modern modular software design. We formulate this notion of intrinsic redundancy and we propose a technique to exploit it to achieve some level of self-healing. We first demonstrate that software systems are indeed intrinsically redundant. Then we develop a way to express and exploit this redundancy to tolerate faults with automatic workarounds. In essence, a workaround amounts to replacing some failing operations with alternative operations that are semantically equivalent in their intended effect, but that execute different code and ultimately avoid the failure. The technique we propose finds such workarounds automatically. We develop this technique in the context of Web applications. In particular, we implement this technique within a browser extension, which we then use in an evaluation with several known faults and failures of three popular Web libraries. The evaluation demonstrates that automatic workarounds are effective: out of the nearly 150 real faults we analyzed, 100 could be overcome with automatic workarounds, and half of these workarounds found automatically were not publicly known before.
引用
收藏
页数:42
相关论文
共 62 条
[1]   DATA DIVERSITY - AN APPROACH TO SOFTWARE FAULT TOLERANCE [J].
AMMANN, PE ;
KNIGHT, JC .
IEEE TRANSACTIONS ON COMPUTERS, 1988, 37 (04) :418-425
[2]  
[Anonymous], 2011, P 8 WORKSH ASS SELF
[3]  
[Anonymous], P 25 INT S FAULT TOL
[4]  
[Anonymous], P 24 IEEE ACM INT C
[5]  
[Anonymous], P IEEE C EV COMP CEC
[6]  
[Anonymous], P IEEE INT C WEB SER
[7]  
[Anonymous], 2013, P 17 INT C EVALUATIO
[8]   THE N-VERSION APPROACH TO FAULT-TOLERANT SOFTWARE [J].
AVIZIENIS, A .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 1985, 11 (12) :1491-1501
[9]   Self-Supervising BPEL Processes [J].
Baresi, Luciano ;
Guinea, Sam .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2011, 37 (02) :247-263
[10]   Clone detection using abstract syntax trees [J].
Baxter, ID ;
Yahin, A ;
Moura, L ;
Sant'Anna, M ;
Bier, L .
INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, PROCEEDINGS, 1998, :368-377