Fault tolerant approach for verified software: Case of natural gas purification simulator

Well logically verified and tested software may fail because of undesired physical phenomena provoking transient faults during its execution. While being the most frequent kind of faults, transient faults are difficult to localize because they have a very short life, but they may cause the failure of software. A fault tolerant method against transient faults under the hypothesis of statically verified software is presented. In order to ensure the right experimental environment, first the specification of the application is validated by Alloy analyzer, second a JML annotated Java code is statically verified. The proposed approach is based on some rules transforming basic Java statements like assignments, conditional and iterative statements into equivalent fault tolerant ones. The current research has exhibited some natural redundancy in any code, and the corrective power of repetitive statements. It also proved that the proposed method makes more efficient fault tolerant versions compared with natural error recovery, i.e. without inserting any additional code for detecting or repairing the damaged state. Illustrated by Gas purification simulator, one can see the natural error recovery in case of fault injection in the code, and how fault tolerant rules recover more errors in less time compared to the natural recovery. The proposed approach is preventive because it avoids the propagation of errors at early stages by repeating low level statements until some “stability” of their behavior.

[1]  Risat Mahmud Pathan,et al.  Scheduling Algorithms For Fault-Tolerant Real-Time Systems , 2010 .

[2]  Sigurd Skogestad,et al.  Self-Optimizing and Control Structure Design for a CO2 Capturing Plant , 2010 .

[4]  Juan P. Galeotti Verificación de software usando Alloy , 2010 .

[5]  Goutam Kumar Saha,et al.  A Single-Version Algorithmic Approach to Fault Tolerant Computing Using Static Redundancy , 2006, CLEI Electron. J..

[6]  Sorren Hanvey,et al.  Verification of JML generic types with Yices , 2011, 2011 6th Colombian Computing Congress (CCC).

[7]  Andy J. Wellings,et al.  State restoration in Ada 95: a portable approach to supporting software fault tolerance , 2000, J. Syst. Softw..

[8]  S. Ghribi,et al.  Increasing Software Reliability Using a Signature Method , 1997, Inf. Sci..

[9]  Ali Mili An introduction to program fault tolerance: A structured programming approach , 1990 .

[10]  Raoul Velazco,et al.  A Survey on Fault Injection Techniques , 2004, Int. Arab J. Inf. Technol..

[11]  Marcelo F. Frias,et al.  Analysis of invariants for efficient bounded verification , 2010, ISSTA '10.

[12]  Nancy G. Leveson,et al.  Analysis of Faults in an N-Version Software Experiment , 1990, IEEE Trans. Software Eng..

[13]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[14]  Deming Chen,et al.  A fault-tolerant programmable voter for software-based N-modular redundancy , 2012, 2012 IEEE Aerospace Conference.

[15]  Jean Arlat,et al.  Definition and analysis of hardware- and software-fault-tolerant architectures , 1990, Computer.

[16]  Christian Engelmann,et al.  Development of Naturally Fault Tolerant Algorithms for Computing on 100,000 Processors , 2002 .