Other meanings of Software quality assurance
Software Engineering
Software quality assurance (SQA) is a systematic process of ensuring that software products and services meet specified quality standards and requirements. It encompasses a set of activities, methodologies, and practices designed to monitor and improve the software development lifecycle, from requirements definition to maintenance, with the goal of delivering reliable, secure, and user-satisfying software.1
Software quality assurance (SQA) is a set of activities that ensure that software processes and products conform to specified requirements and standards. It is a preventive approach, focusing on the processes used to create the software, rather than just testing the final product. SQA encompasses process definition, implementation, and auditing, as well as product evaluation and quality control.2
The scope of SQA includes all phases of the software development lifecycle, from initial concept and requirements analysis through design, coding, testing, and maintenance. It also covers supporting processes such as configuration management, documentation, and training. SQA aims to build quality into the software from the start, rather than detecting defects after the fact.
The roots of SQA can be traced back to the early days of computing, but it emerged as a distinct discipline in the 1970s and 1980s. The term "software quality assurance" was popularized by the work of researchers such as Barry Boehm and the development of standards like IEEE 730. The rise of the personal computer and the increasing complexity of software systems in the 1980s led to a greater emphasis on formal quality processes. The Capability Maturity Model (CMM), developed by the Software Engineering Institute (SEI) at Carnegie Mellon University in the late 1980s, provided a framework for assessing and improving software processes, and became a cornerstone of SQA practice.
SQA is composed of several key components: quality planning, process assurance, product assurance, and quality control. Quality planning involves defining quality goals and metrics. Process assurance ensures that the development process follows defined standards and procedures, often through audits and reviews. Product assurance focuses on verifying that the product meets its requirements, typically through testing and inspections. Quality control is the operational aspect, including defect tracking and resolution.
Methodologies commonly used in SQA include the Capability Maturity Model Integration (CMMI), ISO 9001, and Agile methodologies. In Agile development, SQA is integrated into each sprint, with continuous testing and feedback. Test-driven development (TDD) and behavior-driven development (BDD) are practices that support SQA by ensuring that code is tested from the outset.
Several international standards guide SQA practices. ISO/IEC 25010 defines a quality model for software product quality, including characteristics such as functional suitability, performance efficiency, compatibility, usability, reliability, security, maintainability, and portability. ISO 9001 provides general quality management principles that can be applied to software development. IEEE 730 is a standard for software quality assurance processes, outlining the required activities and documentation. The CMMI framework, developed by the SEI, provides a model for process improvement, with five maturity levels from initial to optimizing.3
In practice, SQA is carried out by dedicated quality assurance teams, quality engineers, and testers, but it is also a responsibility of all developers and project managers. Key activities include:
In regulated industries, SQA is often mandated by law. For example, the FDA requires software validation for medical devices, and the DO-178C standard governs software in airborne systems.
While the mainstream view of SQA focuses on testing and process, there are several lesser-known dimensions:
SQA faces several challenges in the modern software landscape. The shift to agile and DevOps has led to a need for continuous testing and quality monitoring, which requires automation and integration into CI/CD pipelines. The rise of artificial intelligence and machine learning introduces new challenges, as these systems are often non-deterministic and require novel testing approaches. Additionally, the increasing complexity of software, with distributed systems and microservices, makes it harder to ensure overall quality.
Future directions include the use of AI to predict defects and automate test generation, the adoption of quality engineering as a broader discipline that encompasses user experience and business value, and the integration of SQA into the entire product lifecycle, including operations and feedback loops.
This article focuses on the process of ensuring software quality, distinct from software testing, which is a subset of SQA.
Served from cache
Help improve the encyclopedia. Reports go straight to the site manager.