Software Quality Assurance Study Notes

Software Quality Assurance (SQA) Overview

  • Definition: Software Quality Assurance (SQA) encompasses the processes and methodologies that ensure the quality of software products throughout their development lifecycle.

Importance of Quality Management

  • Phil Crosby's Insights:
    • The challenge of quality management lies not in ignorance, but in misconceptions regarding quality understanding.
    • General Consensus of Quality:
    • Most people support quality management under certain conditions.
    • Many feel they comprehend it, even if they cannot articulate their understanding.
    • Execution is often regarded as a natural inclination rather than a structured process.
    • Problems in quality management are frequently attributed to others' failures rather than tracking personal execution.

Key Components of Software Quality Assurance

  • Essential Elements of SQA:
    • Standards: Adherence to defined quality standards in software development.
    • Reviews and Audits: Periodic evaluations of processes and outputs to ensure compliance.
    • Testing: Rigorous assessment to identify defects before deployment.
    • Error/Defect Collection and Analysis: Systematic documentation and investigation of issues.
    • Change Management: Process to manage changes in requirements or project scope.
    • Education: Training programs designed to enhance software quality understanding.
    • Vendor Management: Oversight of vendors to ensure quality and compliance.
    • Security Management: Safeguarding software against vulnerabilities.
    • Safety: Identifying and mitigating safety risks.
    • Risk Management: Assessment and management of risks that threaten quality.

Data Driven Software Quality Assurance

  • SQA Process Flow:
    1. Analyze the assessment of the current quality status.
    2. Identify problem areas requiring attention.
    3. Determine indicators for measuring quality.
    4. Prepare criteria for success.
    5. Compare results to establish improvement metrics.
    6. Reiterate the assessment process for continuous improvement.

Role of the SQA Group

Group Responsibilities

  • Project Planning:

    • Create an SQA plan outlining evaluations, audits, and standards applicable to a project.
    • Establish procedures for error reporting and tracking, alongside necessary documentation.
    • Outline the feedback mechanism for the software project team.
  • Compliance Review:

    • Evaluate software engineering activities against the established software process.
    • Document deviations and track resolutions, ensuring compliance with both internal and external standards such as ISO-9001.
    • Report findings periodically to project management.
  • Deviation Management:

    • Ensure documented procedures are in place for managing noncompliance.
    • Maintain records for all deviations until resolution is achieved.

Goals of Software Quality Assurance

  • Quality of Requirements: Ensuring the requirements model is correct, complete, and consistent, influencing the overall quality of work products.
  • Quality in Design: Assessing design elements to ensure high-quality design conforming to requirements.
  • Code Quality: Ensuring source code adheres to coding standards and is maintainable.
  • Quality Control Effectiveness: Employing limited resources efficiently to achieve high-quality outcomes.

Formal Software Quality Assurance

  • Assumes a rigorous syntax and semantics can be defined for programming languages.
  • Allows for rigorous specification of software requirements and application of mathematical proof techniques to assure correctness against specifications.
  • Despite its advantages, formal methods are rarely implemented by commercial developers.

Statistical Software Quality Assurance

  1. Gather and categorize information on software errors and defects.
  2. Trace each error/defect to its underlying cause (e.g., design errors, standards violations).
  3. Utilize Pareto principle: 80% of defects result from 20% of causes.
  4. Focus on correcting these vital few causes of defects.

Six Sigma Methodology for Software Engineering

  • Meaning of Six Sigma: Refers to a standard of quality defined as 3.4 defects per million occurrences.

  • Core Steps in Process:

    1. Define customer requirements and project goals via effective communication.
    2. Measure existing process performance and collect defect metrics.
    3. Analyze these metrics to identify fundamental causes of defects.
  • Improving Existing Processes:

    • Eliminate root causes of defects.
    • Control processes to prevent future defects.
  • Developing New Processes:

    • Design processes that prevent defects and fulfill customer requirements.
    • Verify process models to ensure they achieve desired outcomes.

Software Reliability and Availability

  • Mean Time Between Failure (MTBF): extMTBF=extMTTF+extMTTRext{MTBF} = ext{MTTF} + ext{MTTR}
    • Where:
    • MTTF: Mean Time to Failure
    • MTTR: Mean Time to Repair
  • Software Availability:
    ext{Availability} = rac{ ext{MTTF}}{( ext{MTTF} + ext{MTTR})} imes 100 ext{ ext{%}}

AI and Reliability Models

  • Software Reliability: The probability of failure-free operation of software in a designated environment over a period.
  • Bayesian Inference: A statistical method utilizing Bayes' theorem for probability updates based on evidence.
  • Applications of Bayesian Inference:
    • Estimate probabilities using historical data, accommodating missing information.
  • Predictive Analytics Tools:
    • Regression models to forecast defect occurrence based on MTBF.
  • Genetic Algorithms:
    • Employed to develop reliability models by identifying correlations in historical data to predict future failures.

Software Safety Assurance

  • Definition: A critical SQA activity involves identifying and assessing software-related hazards to prevent system failures.
  • Importance: Early hazard identification allows for design strategies that eliminate or mitigate risks.

ISO 9001:2015 Standard

  • Overview: The quality assurance standard relevant to software engineering.
  • Key Requirements Includes:
    • Management responsibility, quality system, contract review, design control, document control, product traceability, process control, inspection and testing, corrective actions, internal audits, training, and statistical techniques.
  • Certification Process: Organizations must establish procedures, demonstrate compliance with requirements, and maintain quality policies.

SQA Plan Contents

  1. Purpose and scope of the SQA plan.
  2. Description of software engineering work products covered by SQA.
  3. Applicable standards and practices in the software process.
  4. SQA actions and tasks, including their scheduling in the process.
  5. Tools and methods that support SQA activities and workflows.
  6. Software configuration management protocols.
  7. Safeguarding methods for SQA records.
  8. Clear delineation of organizational roles and responsibilities concerning SQA activities.