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: extUsersatisfaction=extcompliantproduct+extgoodquality+exton−timedeliveryext{User satisfaction} = ext{compliant product} + ext{good quality} + ext{on-time delivery}

    • 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:

    1. Prevention Costs: Costs incurred to avoid defects, including training and quality planning.

    2. Appraisal Costs: Costs associated with evaluating product quality.

    3. 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:

    1. Identify errors in functionality, logic, or implementation.

    2. Verify that software meets its requirements.

    3. Ensure adherence to standards.

    4. 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 = extMTTF/(extMTTF+extMTTR)ext{MTTF} / ( ext{MTTF} + ext{MTTR})

    • 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:

    1. Functionality

    2. Reliability

    3. Usability

    4. Efficiency

    5. Maintainability

    6. 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.