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:
- Analyze the assessment of the current quality status.
- Identify problem areas requiring attention.
- Determine indicators for measuring quality.
- Prepare criteria for success.
- Compare results to establish improvement metrics.
- 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
- Gather and categorize information on software errors and defects.
- Trace each error/defect to its underlying cause (e.g., design errors, standards violations).
- Utilize Pareto principle: 80% of defects result from 20% of causes.
- 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:
- Define customer requirements and project goals via effective communication.
- Measure existing process performance and collect defect metrics.
- 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):
- 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
- Purpose and scope of the SQA plan.
- Description of software engineering work products covered by SQA.
- Applicable standards and practices in the software process.
- SQA actions and tasks, including their scheduling in the process.
- Tools and methods that support SQA activities and workflows.
- Software configuration management protocols.
- Safeguarding methods for SQA records.
- Clear delineation of organizational roles and responsibilities concerning SQA activities.