
I’ve been working in software development for a while, but I’m still getting used to the usage of the term QA. The activities of the software QA groups that I have seen are centered around proving, with some level of confidence, that a software
works, where works means
it-does-what-the-requirement-says-it-should-do.
While this is important, it does not embrace the more important aspects in my understanding of Quality Assurance. So here’s my take on defining QA & QC based on experience in Software & Hardware development as well as Manufacturing management and engineering:
QA - Provides information to upper management regarding the likelihood that the marketplace will accept (buy) the product; and analyzes and improves the process that produce the products.
QC - Measures the outcomes of the process through testing and inspection and passes the results to QA for analysis.
To give this some practical sense, consider a company which designs and manufactures bicycle sprockets. At a high level the product life cycle follows a path like:
Marketing sniffs about to determine what customers want to buy, and they detail the features, timeframes, and price that would be attractive to customers and profitable to the company.
Engineering creates a design that achieves the product definition and creates prototypes to prove the correctness of the design.
Process engineers create manufacturing processes to produce the design at appropriate volumes.
Production faithfully replicates the design.
Quality Control measures performance of Production in terms of conformance of each sprocket to the design.
Sales finds customers and encourages them to trade money for sprockets by taking them to lunch and giving them free pens.
Service helps customers use, maintain, and repair their sprockets.
Notice that the QC department is mostly concerned with
measuring what goes on in production. They inspect, measure and test sprockets produced by production. The results are tallied as “50 type 2 sprockets produced, 1 defect” etc.
The QA group looks at all processes used to get from Marketing’s Big Idea through design, manufacturing, delivery, and service; all the way to assessing customer satisfaction. Their focus is on the
business sense of all the operations that are the essence of the business. It is not about perfection, but rather cost-risk-benefit balance. What process does the design group use? Is it defined, complete, and sufficient to produce a manufacturable, testable, serviceable product? Is it used? Is it cost effective? What changes can be made to the process to increase profitability and/or quality (that is the market’s perception of quality). And what about the processes in manufacturing? In QC?
In short, QC checks whether the results are good; QA worries about whether it all makes sense.
I think the physical product model makes sense to most people in an intuitive way. Even if we haven’t been involved in the development and production of physical products, we use them. We have opinions about which ones are better values, higher quality, more prestigious to own, etc.
Software development, however, is significantly different than physical product design & manufacture. The activities in the sprocket company are part creative and part repetitive. Designing the product, and designing all the processes to produce the product is highly creative. Producing instances of the product is intended to be devoid of creativity; the intent is to do the same thing faithfully, over and over. Make a sprocket. Make another sprocket, just like the previous sprocket, make more sprockets... The single most important metric is uniformity.
Software is almost entirely creative. The “production” element consists of copying the disc, which is straightforward, simple, and commoditized. It is a tiny fraction of the overall effort, and has very low risk of failure.
Software development is costly and can have significant risks. Benefits, however, are often huge. The physical product model of QC does not offer much to software development. Sure we can test that the requirements are met. And while this is like Quality Assurance because it proves the design
works, it resembles QC more than QA; we check off each requirement without thinking about whether it has value to the business.
The physical product QA model is even more important in software development than physical product development because it gives us a way to manage risk in creative endeavors. Creative endeavor; this
is software development.
One of the simplest concepts is the idea that finding a problem sooner is much less costly than finding it later. This is certainly true for bicycle sprocket production, and we all agree that it is true for software development too. But often, we don’t do much about it.
Where’s the process improvement part of QA? Why is no budget expended to determine if the whole process makes sense? How will improvements in efficiency come about if no effort is directed to analyzing where we are and where we need to be?
Is this lack of effort because of the relative youth of Software Engineering as a pursuit? Or is it because most of the players are more creative than disciplined?
And who are the practitioners that can recognize the need for processes of appropriate ceremony, understand the intimate details of developing requirements, benefits analysis, environment structure, methodology, policies and procedures that produce continuous improvement? While an MBA (probably) won’t hurt, technical expertise is essential. Only by having a thorough understanding of the landscape and its ruminants can a meaningful effort be mounted.
I don’t believe that lack of practitioners is the gating issue. I think the organization must have the direction, desire, drive and perseverance to change. Business transformation is never easy; it requires an environment that allows failure and encourages reasonable risk taking.
The most important ingredient, in my opinion, is a top manager with the vision to demand better and the grit to make the investment necessary to achieve it.
-------------------
Jeff Howell has thirty years experience in computer industry, spanning hardware, manufacturing, QA and software in engineering, management and consulting.
---------------------
Also recommended:
User experience posts