According to IEEE, software quality is (1) the degree to which a system, component, or process meets specified requirements; (2) the degree to which a system, component, or process meets customer or user needs or expectations.

Note

Quality control is the set of activities designed to evaluate the quality of a developed or manufactured product after development before shipment

Software Quality Assurance

This is made up of:

  • Verification
    • Are we building the product right?
  • Validation
    • Are we building the right product?

Objectives

  1. Assuring that the software will conform to functional technical requirements
  2. Assuring that software will conform to managerial scheduling and budgetary requirements
  3. Manages activities for greater efficiency of software development, maintenance, and QA activities

How do we achieve this?

  • Know what we are doing
  • Know what we should be doing
    • This often lacks in practice
    • Requires having explicit Requirements and specifications.
  • Know how to measure the difference
    • Formal methods: mathematical verifications
    • Testing: input/output based method of exercising software
    • Inspections: Human examination of requirements and design code
    • Metrics: Measure a known set of properties

Typical Activities

  1. Requirements validation
  2. Design verification
  3. Static code checking
  4. Dynamic testing
  5. Process engineering
  6. Metrics and CI

SQA Capabilities

  1. Systematically uncover faults in the documents where they are introduced to avoid a ripple effect
  2. Monitor and control quality
  3. Systematically derive effective test cases to uncover Faults
  4. Automate testing
  5. We basically want to systematically measure our software

Software defects are extremely costly, this is why this is important. Software QA aims to minimize the cost of guaranteeing quality.