In a recent blog on “The role of QA,” Jack Ganssle emphasized the importance of quality assurance in embedded systems design, and why it is essential in today's much more complex applications.
Such advice has always been important in embedded development, but now it is even more so, as we have to deal with systems of complexity unimagined a decade ago – platforms with multicore processors with four or more CPU cores working in concert as well as with multiple independent MCUs – both internally and externally – handling diverse peripheral functions.
And now with ubiquitously connected IoT-based wireless sensor and machine-to-machine network environments in which embedded systems must now operate, there is the additional danger of tainted software making its way into designs. This makes it even more important to make use of every available code analysis and software testing tool to assure software code quality.
“QA’s role is to demonstrate the absence of defects,” Jack writes. “Sure, life is tough and software complex. Sometimes they will find problems. But that doesn’t absolve the engineers of their responsibility to strive for perfection. We engineers must take pride in our work, demonstrate exceptional craftsmanship, and constantly hone our tools, processes and techniques to achieve the highest quality.”
Long a proponent of a more disciplined approach to embedded programming, Jack also emphasizes the importance of metrics and filters in the form of tools for code checking, static analysis, regression and software testing.
“Engineering without numbers is not engineering – it’s art,” he writes. “Metrics hold us accountable and lets us evaluate the process.”
Included in this week's Tech Focus newsletter are a number of articles and blogs on various tools and techniques to achieve this goal – regression testing, requirements planning, CMMI, and essential software metrics. Of these, my Editor's Top Picks are:
Ten essential elements to guarantee enhanced software quality
Deepti Sharma outlines what she thinks are the ten essential elements in delivering a high quality software design to a customer.
Make legal compliance an integral part of the software quality assurance process
In the age of open source and large scale outsourcing, software quality assurance must also include procedures for ascertaining its legal compliance. Here is a guide to starting that process.
Planning for product quality through better inspection, evaluation, and testing
How to extend the Test and Evaluation Master Plan (TEMP) specified in the IEEE 1220 and MIL-STD-499B (Draft) specifications to support embedded systems hardware and software product quality.
Integrating Quality Assessment Models and Static Analysis
A quality assurance metamodel that integrates and normalizes information obtained by a variety of rules-based static analysis tools to provide and overall assessment of the quality of the code used in a software system.
The bottom line, writes Jack Ganssle, is simple and straightforward: “Aim for the perfect. When imperfections sneak in, figure out why. Take corrective actions as required.”
Embedded.com Site Editor Bernard Cole is also editor of the twice-a-week Embedded.com newsletters as well as a partner in the TechRite Associates editorial services consultancy. If you want to see a calendar of topics for upcoming weekly Tech Focus newsletters or have a topic you would like to see covered on Embedded.com, he welcomes your feedback. Send an email to , or call 928-525-9087.