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
- Assuring that the software will conform to functional technical requirements
- Assuring that software will conform to managerial scheduling and budgetary requirements
- Manages activities for greater efficiency of software development, maintenance, and QA activities
How do we achieve this?
- Know what we are doing
- What are we building, how is it being built, and what does it currently do? What Gets Measured Gets Managed
- 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
- Requirements validation
- Design verification
- Static code checking
- Dynamic testing
- Process engineering
- Metrics and CI
SQA Capabilities
- Systematically uncover faults in the documents where they are introduced to avoid a ripple effect
- Monitor and control quality
- Systematically derive effective test cases to uncover Faults
- Automate testing
- 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.