Software is pervasive in modern society, but we are often unaware of its presence until problems arise. Software is one of the most important and yet one of the most economically challenging techniques of this era. As a purely intellectual product, it is among the most labor-intensive, complex, and error-prone technologies in human history. Until the 1970s, programmers were very meticulous in planning their code, rigorously checking code, providing detailed documentation, and exhaustive testing before the software is released to users. However, as computer became widespread, attitudes changed. Instead of meticulously planning code, the attitude of the average programmer today is possibly hacking sessions or writing any sloppy piece of code and the compiler will run diagonally, a situation called, “code and fix”, where the programmer tried to fix errors one by one until the software compiled properly. As programs grew in size and complexity, the limits of this “code and fix” approach became evident. In this paper, we studied the various reasons why software fails. Our studies reveal that the major reasons why software fails are poor or no design at all, inadequate testing of codes, and attitudinal changes among programmers and other factors.
 Kumaresh, S. and Ramachandran, B. (2012) Defect Prevention Based on 5 Dimensions of Defect Origin. International Journal of Software Engineering & Applications (IJSEA), 3, 87-98.
 Rothenberger, M.A., Dorley, K.J., Kulkarin, U.R. and Nada, N. (2003) Strategies for Software Reuse: A Practical Component Analysis of Reuse Practices. IEEE Transactions on Software Engineering, 29, 825-837. http://dx.doi.org/10.1109/TSE.2003.1232287
 Chu, T.L., Martinez-Guridi, G., Yue, M. and Lehner, J. (2006) A Review of the Software-Induced Failure Experience. American Nuclear Plant Instrumentation Control and Human Machine Interface Technology.
 Robertson, P. and Williams, B. (2006) Automatic Recovery from Software Failure. Communications of the ACM, 49, 41-47. http://dx.doi.org/10.1145/1118178.1118200
 Mann C. C. (2002) Why Software Is So Bad, Technology Review, July/August, 2002, 33-38. www.technologyreview.com,
 Chillarge, R., Bhandari, I.S., Chaar, J.K., Halliday, M.J., Moebus, D.S., Ray, B.K. and Wong, M.-Y. (1992) Orthogonal Defect Classification—A Concept for In-Process Measurements. IEEE Transactions on Software Engineering, SE-18, 94-96.
 Slabodkin, G. (1998) Software Glitches Leave Navy Smart Ship Dead in the Water. Government Computer News, July 13. http://gcn.com/Articles/1998/07/13/Software-glitches-leave-Navy-Smart-Ship-dead-in-the-water.aspx
 Ehrlich, W.K., Iannino, A., Prasanna, B.S., Stampfel, J.P. and Wu, J.R. (1999) How Faults Cause Software Failure: Implications for Software Reliability Engineering. Int’l Symposium on Software Reliability Engineering, Austin.
 Smedley, R. (2009) Trusted Software? Between the Button and the Bomb, Is There an Operating System You Can Trust? LinuxPro, March, 70-73. http://www.linuxformat.co.uk
 Williams, L. (2006) Testing Overview and Black-Box Testing Technique, 34-59.
 Carlone, R.V. (1991) Patriot Missile Defense: Software Problems Led to System Failure at Dhahran, Suadi Arabia. http://www.ima.umn.edu/~arnold/disasters/patriot.html
 Chillarege, R. (1996) What Is Software Failure? IEEE Transactions on Reliability, 45, 354-355. http://dx.doi.org/10.1109/TR.1996.536980
 Charette, R.N. (2005) Why Software Fails [Software Failure]. IEEE Spectrum, 42, 42-49. http://dx.doi.org/10.1109/MSPEC.2005.1502528
 Dowson, M. (1997) The ARIANE-5 Software Failure. ACM SIGSOFT Software Engineering Notes, 22, 84. http://dx.doi.org/10.1145/251880.251992