Introduction to Software Quality Assurance

Software is both the internal code and the interface that is used for users to interact with it.

Software Views (5 Major Views)

Transcendental View

  • The 'feel' of the product
  • Hard to quantify

User View

  • The functionality of the product

Manufacturing View

  • How the product is built
  • Quality of materials and build

Product View

  • Internal product qualities
    • i.e. good, well-documented code

Value-based View

  • depends on how much customers are willing to pay

Software Quality

"degree to which the software product satisfies stated and implied needs when used under specified conditions"

ISO/IEC 25010

Characteristics

  • meets requirements
    • lack of defects (low rate: # of defects/size unit)
  • reliable
  • customer satisfaction

Software Quality Model

ISO/IEC 25010 System/Software Product Quality

Errors, Faults, and Failures

Human errors leads to faults which leads to failure. Therefore human errors are the root of the failure.

Examples of Errors

  • faulty requirement definition
  • client-developer communication failures
  • deviation from requirements
  • design errors
  • coding errors

Failure Situations

  • software is missing requirement
  • software does something that it shouldn't do
  • software does something specification doesn't mention

Importance of Software Quality

Software is incorporated into many parts of life. Defects in software is often very costly in terms of money, reputation, and health.

Recall the Zune 30 LeapYear freeze and the more recent Boeing 737 Max incidents.

Software Quality Assurance

The set of activities that ensure few, if any, faults remain in system when delivered.

  1. systematic approach to conform to all technical requirements
  2. activities evaluating the process in which products are developed or manufactured
  3. activities implemented to provide adequate confidence that an entity will perform as expected

Three General Principles of QA

  • know what you are doing
    • project management and defect tracking
  • know what you should be doing
    • requirement analysis, acceptance tests, frequent user feedback
  • know how to measure the difference
    • formal methods (strict, math-like, analysis based on theory and axioms), testing, reviews, metrics

Software Quality Assurance Activities

Ways to minimize failures

  • unit tests
  • error checking with tools
  • redundancy (multiple copies running so if one fails, other continues)
  • verification (building the product right)
  • validation (build the right product)