Our world runs on software. Every business depends on it, every mobile phone uses it, and even every new car
relies on code. Without software, modern civilization would fall apart. Given this reality, the quality of that
software really matters. Because it’s so widely used and so important, low-quality software just isn’t acceptable.
But what exactly is software quality? It’s not an easy question to answer, since the concept means different things
to different people. One useful way to think about the topic is to divide software quality into three aspects:
functional quality, structural quality, and process quality. Doing this helps us see the big picture, and it also helps
clarify the trade-offs that need to be made among competing goals.
Before we do this, however, it’s worth taking a moment to think about what software quality isn’t. It’s tempting to
view software quality through the same lens as other kinds of quality, such as quality in a manufacturing process.
Doing this is misleading, however. In manufacturing, a primary goal is to minimize defects in products created
through a repeatable process. Methodologies such as Six Sigma were created to help do this, and they’ve been
quite effective. Yet every software development project requires some innovation—if this isn’t true, you should be
buying rather than building the software—and so the project isn’t executing an exactly repeatable process.
Because of this, views of quality rooted in manufacturing aren’t the best approach to thinking about software
quality. A broader perspective is required.
PDF source: http://www.chappellassoc.com/writing/white_papers/The_Three_Aspects_of_Software_Quality_v1.0-Chappell.pdf