Quality assurance is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meet user needs.
Quality assurance is a staff function, responsible for implementing the quality policy defined through the development and continuous improvement of software development processes.
Quality assurance is an activity that establishes and evaluates the processes that produce products. If there is no need for process, there is no role for quality assurance. For example, quality assurance activities in an IT environment would determine the need for, acquire, or help install:
- System development methodologies
- Estimation processes
- System maintenance processes
- Requirements definition processes
- Testing processes and standards
Once installed, quality assurance would measure these processes to identify weaknesses, and then correct those weaknesses to continually improve the process.
Quality control is the process by which product quality is compared with applicable standards, and the action is taken when non-conformance is detected. Quality control is a line function, and the work is done within a process to ensure that the work product conforms to standards and requirements.
Quality control activities focus on identifying defects in the actual products produced. These activities begin at the start of the software development process with reviews of requirements and continue until all application testing is complete.
It is possible to have quality control without quality assurance. For example, a test team may be in place to conduct system testing at the end of development, regardless of whether that system is produced using a software development methodology.