Main image of article Bug-Free Isn't Enough: The Real Anatomy of Software Quality

What is software quality?

It’s one of those things that you recognize when you see it, but defining it can be a lot harder.

One way to think about it is software with a lot of bugs is poor quality, so software without bugs must be good quality. Right? Well, how does it look? Users are a lot more forgiving of bugs in software if the software looks good.

It turns out that there are quite a few factors that make up software quality. Here’s a list I’ve made of all the factors that I could think of.

Factors involved in software quality

  • Is it bug free?
  • Does it look good?
  • Does the software work and perform well?
  • Does it cost a lot?
  • Is it easy to add new features?

Let’s look at these in detail.

Is it bug free?

Unless you go to extraordinary lengths to test, it’s impossible to guarantee that software is completely bug free.  According to the book Code Complete by Steve McConnell, Microsoft had 10-20 bugs per 1,000 lines of code (LOC), which dropped to 0.5 defects in production code.  Given that it’s believed to be 30 million LOC in size, Microsoft Word might still contain 15,000 bugs, though that does seem on the high side! More likely is that they’ve reduced the error rate.

There are some organizations that have gone to extraordinary lengths to remove bugs. NASA’s space shuttle software was one (unfortunately the link is subscription-walled) and there’s SQLite which uses test code that is 590x the length of SQLite’s own code. Their testing even includes simulating pulling the power cord out to check that powering off doesn’t corrupt the database.

The presumption by users is that a lot of effort has gone in to make the application bug free and that is why it’s rated high for quality.

Does it look good?

Appearance and usability both count a lot.  It must be a quality application because it’s nice looking and has an easy-to-use UI with built-in help and maybe different workflows for beginners and experts. That must have taken a lot of development effort hence the quality rating.

An important point here is the UI. I’ve seen some applications that have little logic to the workflow and are impossible to use without someone explaining how. It needed training courses so users could understand how to use it.

I think it’s different with the web because the days of websites looking amateurish with weird colors and too many fonts are thankfully behind us but there are fewer standards for desktop UI.

Does the software work and perform well?

No matter how good it looks, if it doesn’t do what you want then it’s not going to get used. Does it do what the user wants it in a reasonable time? If it doesn’t then maybe it could be undercut by a faster product. It’s not so clear-cut when it comes to websites’ speed because your own internet speed might affect it. In one case, the users preferred the DOS version of a trading application to the Windows version because they could enter trades far faster by keyboard alone rather than using a mouse as well.

Does it cost a lot?

It’s natural to associate quality with cost. A Rolls-Royce is pricier than a Ford and lasts a lot longer. But cost can also mean effort as in for example artisanal goods which are valued higher because they demonstrate craftsmanship and labor.  With software it’s slightly different but if something claims it has been developed without AI, does that mean it’s higher quality than something developed with AI?  Does vibe software always mean it has to be lower quality code? The answer to that is probably yes but maybe somebody is experimenting with AI prompts that generate quality code,

Is it easy to add new features?

If software has been poorly put together then trying to extend it will not be so easy. A decent architecture may well have provision for extending it but not one that has significant technical debt that needs to be fixed first.  This is also true of AI-crafted software which might need major restructuring to add new functionality.

This is an example of what Martin Fowler calls internal quality- seen only by developers not customers.

Does quality sell software?

I don’t think I’ve ever seen any software sold on quality alone. Once it’s known that a product is high quality then it helps to keep it selling but quality is rarely seen in adverts. There you’re more likely to see what problem it solves. It’s easier to sell correctness than quality.

The mindset that says artisanal products are (probably) better quality than manufactured also applies to software. Big firms are perceived as not really caring about quality but a one-person outfit is going to care more.

Conclusions

Software quality is a nice to have but is not a key factor in products from larger companies. And as products age, quality will inevitably slip. It gets harder to add new features, the ‘look and feel’ starts looking dated and it might not take advantage of newer hardware features like faster processing, GPUs or extra RAM.

If you are a developer working on the product, pressures to ship may rule out improving the quality. Sadly, much as we want to ship quality products, the reality is it’s not a priority.