Factors for Fault Free Software
? Precise, unambiguous specification
? Organization culture that expects quality
? Approach to software design and implementation that hides complexity (e.g., structured design, object-oriented programming)
? Use of software tools that restrict or detect errors (e.g., strongly typed languages, source control systems, debuggers)
? Programming style that emphasizes simplicity, readability, and avoidance of dangerous constructs