Software Quality Assurance Notes
Software Quality Assurance (SQA)
Definition: SQA is an umbrella activity integrated into the software development process, aimed at ensuring software quality.
Components of SQA:
A structured software quality assurance process.
Execution of quality assurance (QA) and quality control (QC) tasks.
Application of effective engineering practices, methods, and tools.
Management of changes to software work products.
Compliance with software development standards.
Establishment of measurement and reporting mechanisms.
Quality Concepts
Quality Control Focus: Emphasizes controlling the process, resources, and end product quality attributes.
Definition of Quality:
Design Quality: Characteristics specified by designers for the end product, covering requirements and specifications.
Conformance Quality: The extent to which design specifications are adhered to during product development, critically influencing implementation.
Customer Satisfaction Equation:
Importance of quality is secondary to user satisfaction; if users are unhappy, product quality becomes irrelevant.
Quality Control (QC)
Definition: The procedures and methods used to monitor work and ensure requirements are met, focused on defect removal before product shipment.
Involves inspections, reviews, and testing, with feedback loops to minimize defects.
Key QC Concepts:
All work products have measurable specifications for output comparison.
Activities include operational techniques to fulfill quality requirements. QC is product-oriented.
Quality Assurance (QA)
Definition: QA involves auditing functions that assess QC effectiveness, correctness, and completeness.
Provides management with critical data regarding product quality, generating insight and confidence.
A systematic pattern of actions to ensure software meets technical requirements.
QA vs QC: QA focuses on bug prevention, while QC is predominantly product-oriented.
Cost of Quality
Categories of Quality Costs:
Prevention Costs: Costs incurred to avoid defects, including training and quality planning.
Appraisal Costs: Costs associated with evaluating product quality.
Failure Costs: Costs resulting from defects, categorized into:
Internal costs (detected before shipment).
External costs (found after shipping).
Cost Significance: The cost of correcting defects increases dramatically through the software development stages, illustrating the importance of prevention.
Software Reviews
Purpose: Identifies defects before products proceed to subsequent phases or reach customers.
Characteristics of Reviews:
Conducted by technical personnel for technical assessment.
Not to be confused with project assessments or distribution of information.
Formal Technical Review (FTR):
Effective in uncovering errors and improving quality.
Roles include a presenter, coordinator, recorder, and reviewers who collectively evaluate a work product. Reviews can catch ~80% of errors if conducted properly.
Formal Technical Review Process
Objectives:
Identify errors in functionality, logic, or implementation.
Verify that software meets its requirements.
Ensure adherence to standards.
Aid in manageable projects by developing uniformly.
Review Roles: Typically involves 3-5 trained individuals who critically assess a specific work product, maintaining order and effectiveness.
Quality Assurance Strategies
Statistical SQA: Involves the systematic collection and categorization of software defects to enhance product quality. Applies Pareto principle to focus on critical defect causes for corrective actions.
Six Sigma: A widely employed strategy in industry that aims for extremely high-quality standards, defined by three core steps requiring defined customer requirements, performance measurement, and defect analysis.
Software Reliability and Safety
Software Reliability: Measured by the probability of failure-free operations in a set environment. Metrics include:
Reliability =
Mean-Time-Between-Failure (MTBF): The sum of mean time to failure (MTTF) and mean time to repair (MTTR).
Software Safety: Focused on preventing conditions that can result in harm. Early identification of potential hazards can influence design features to minimize risks.
Quality Standards
ISO-9126: A hierarchical framework defining six quality characteristics for software:
Functionality
Reliability
Usability
Efficiency
Maintainability
Portability
SQA Plan Elements
The SQA Plan serves as a roadmap for instituting software quality assurance for projects, covering:
Management structure of SQA.
Documentation of work products.
Relevant standards and the metrics collected.
Approaches for reviews and audits, testing requirements, and problem reporting procedures.
Goals are to maintain consistency and quality through structured methodologies and practices throughout software development processes.