Preparing my thesis, I found another interesting discrepancy. While some books say verification it terms of static analysis of work products is quality control (looking for defects), other say it is actually quality assurance because the process of checking is decreasing the probability of real defects when these deliverables will be used for product manufacture.
I hesitate as both seems to be correct: it is a way of checking for defects (deviation from requirements, design flaws etc.) so it looks like quality control, but also it is a process which does not have to be done and if done, can yield better quality.
Quality Control is the act of looking at products, aimed at detecting defects in individual products as they roll along the production line. Quality Assurance is about the processes implemented to ensure quality control is achieved – now and in the future. Therefore in the software world, the act of performing static analysis is QC, while the process that ensures the analyses is done (and measure how effective it is etc) is QA. (i.e. QA is the act of planing to do it, QC is the act of doing it)
The argument that the act of inspection is QA because it decreases the probably of a defect is flawed in my mind. That is like arguing something like “Using OOP is QA, as it decreases defects….” Simply look at who performs the task. If it’s a Quality Process person, it’s likely to be QA. If it’s a skilled engineer, it’s likely to be QC. Inspection is certainly done by a skilled engineer – it’s QC…
Within the software development community these terms are used loosely and interchanged randomly. In many Software houses Test is QA and QA is Test, even some books don’t distinguish the difference – how do you expect the subtle difference between QA and QC will be understood.
Apart from the focus of the industry and lack of Quality training in general, I believe this is largely the result of what software is. Unlike a factory, where each widget you product is a unique product (for instance – people understand how one car might have a defect that none others have), every software “widget” (i.e. what the customer gets) is exactly the same no matter if you product 2 or 2 billion of them. Therefore, Quality Control on software is only done ‘once’ (per release) – and is only subtly different to the QA process to most people.
2