The purpose of this article is to define the term Software Quality Control, SQC, in relation to Software Quality Assurance.
The formal definitions that are used within this article are:-
Software Quality Assurance
The function of software quality that assures that the standards, processes and procedures are appropriate for the project and are correctly implemented.
Software Quality Control
The function of software quality that checks that the project follows its standards processes, and procedures, and that the project produces the required internal and external (deliverable) products.
These terms appear similar but a simple example highlights the fundamental difference.
Consider a software project that includes requirements, user Interface design and a SQL database implementation.
The SQA team would produce a quality plan that would specify any standards, processes and procedures that apply to the example project. These might include, by way of example, IEEE xyz specification layout (for the requirements), Motif style guide abc (for the user interface design) and Open SQL standards (for the SQL implementation). All of the standards, processes and procedures that should be followed are identified and documented in the quality plan, this is done by SQA.
When the requirements are produced the Software Quality Control team would ensure that the requirements did in fact follow the documented standard (in this case IEEE xyz). The same task, by SQC, would be undertaken for the user interface design and the SQL implementation, that is they both followed the standard identified by SQA. Later the SQA team could make audits to verify that IEEE xyz and not IEEE abc was indeed used as the requirements standard.
In this way a difference between correctly implemented by SQA and followed by SQC can clearly be drawn.
In addition the SQC definition implies software testing, as this is part of the project produces the required internal and external (deliverable) products definition for SQC. The term required refers not only to the functional requirements but also to the non-functional aspects of supportability, performance and usability etc. All of the requirements are Verified or Validated by SQC. For the most part, however, it is the distinction around correctly implemented and followed for standards, processes and procedures that gives the most confusion for the SQA and SQC definitions. Testing is normally clearly identified with SQC, although it is usually only associated with functional requirement testing.
SQA also plays a different role with regard to continuous process improvement and this is discussed in the next section.