Abstract
A fault is an attribute of a program that precludes it from satisfying its specification; while this definition may sound clear-cut, it leaves many details unspecified. An incorrect program may be corrected in many different ways, involving different numbers of modifications. Hence neither the location nor the number of of faults may be defined in a unique manner; this, in turn, sheds a cloud of uncertainty on such concepts as fault density, and fault forecasting. In this paper, we present a more precise definition of a program fault, that has the following properties: it recognizes that the same incorrect behavior may be remedied in more than one way; it recognizes that removing a fault does not necessarily make the program correct, but may make it less incorrect (in a sense to be defined); it characterizes fault removals that make the program less incorrect, as opposed to fault removals that may remedy one aspect of program behavior at the expense of others; it recognizes that isolating a fault in a program is based on implicit assumptions about the remaining program parts; it identifies instances when a fault may be localized in a program with absolute certainty.
Acknowledgement: This publication was made possible by a grant from the Qatar National Research Fund, NPRP04-1109-1-174. Its contents are solely the responsibility of the authors and do not necessarily represent the official views of the QNRF.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Avizienis, A., Laprie, J.C., Randell, B., Landwehr, C.E.: Basic Concepts and Taxonomy of Dependable and Secure Computing. IEEE Transactions on Dependable and Secure Computing 1, 11–33 (2004)
Boudriga, N., Elloumi, F., Mili, A.: The Lattice of Specifications: Applications to a Specification Methodology. Formal Aspects of Computing 4, 544–571 (1992)
Debroy, V., Wong, W.E.: Using Mutations to Automatically Suggest Fixes for Faulty Programs. In: Proceedings, ICST, pp. 65–74 (2010)
Dennis, G., Yessenov, K., Jackson, D.: Bounded Verification of Voting Software. In: Shankar, N., Woodcock, J. (eds.) VSTTE 2008. LNCS, vol. 5295, pp. 130–145. Springer, Heidelberg (2008)
Desharnais, J., Jaoua, A., Mili, F., Boudriga, N., Mili, A.: A Relational Division Operator: The Conjugate Kernel. Theoretical Computer Science 114, 247–272 (1993)
Frappier, M., Desharnais, J., Mili, A.: A Calculus of Program Construction by Parts. Science of Computer Programming 6, 237–254 (1996)
Gonzalez-Sanchez, A., Abreu, R., Gross, H.-G., van Gemund, A.: Prioritizing Tests for Fault Localization through Ambiguity Group Reduction. In: Proceedings, Automated Software Engineering, Lawrence, KS (2011)
Gopinath, D., Malik, M.Z., Khurshid, S.: Specification Based Program Repair Using SAT. In: Abdulla, P.A., Leino, K.R.M. (eds.) TACAS 2011. LNCS, vol. 6605, pp. 173–188. Springer, Heidelberg (2011)
Jose, M., Majumdar, R.: Cause Clue Clauses: Error Localization Using Maximum Satisfiability. In: Procedings, PLDI (2011)
Laprie, J.C.: Dependability —Its Attributes, Impairments and Means. In: Predictably Dependable Computing Systems, pp. 1–19. Springer (1995)
Laprie, J.C.: Dependability: Basic Concepts and Terminology: in English, French, German, Italian and Japanese. Springer, Heidelberg (1991)
Laprie, J.C.: Dependable Computing: Concepts, Challenges, Directions. In: Proceedings, COMPSAC (2004)
Ma, Y.S., Offutt, J., Kwon, Y.R.: Mu Java: An Automated Class Mutation System. Software Testing, Verification and Reliability 15, 97–133 (2005)
Mili, A., Desharnais, J., Mili, F.: Computer Program Construction. Oxford University Press, New York (1994)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Mili, A., Frias, M.F., Jaoua, A. (2014). On Faults and Faulty Programs. In: Höfner, P., Jipsen, P., Kahl, W., Müller, M.E. (eds) Relational and Algebraic Methods in Computer Science. RAMICS 2014. Lecture Notes in Computer Science, vol 8428. Springer, Cham. https://doi.org/10.1007/978-3-319-06251-8_12
Download citation
DOI: https://doi.org/10.1007/978-3-319-06251-8_12
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-06250-1
Online ISBN: 978-3-319-06251-8
eBook Packages: Computer ScienceComputer Science (R0)