Learn how you can streamline your approach to continuous testing and improve the uptime of your business with Visual Studio 2012.
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.
Download the white paper by David Chappell (THE THREE ASPECTS OF SOFTWARE QUALITY: FUNCTIONAL, STRUCTURAL, AND PROCESS)