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

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.
- systematic approach to conform to all technical requirements
- activities evaluating the process in which products are developed or manufactured
- 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)