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
    Incremental validation
21