Quality of software versus quality of software product

How is quality of software determined ?
We have to distinguish in quality of software and quality of the software application (product) that is developed. Let’s take two cars manufactured in different countries with different quality reputation. Car A and Car B. Both cars can have exactly the same specifications regarding top speed, number of doors that can open and close, windscreen wipers etc. But do the have the same quality ?
No, of course not would the average petrol head claim. Why is that ? Well Car A will start loosing horsepower after already 3 years and not reach it’s claimed top speed anymore, the doors won’t close anymore after 1000 times using them and the windscreen wipers will not remove rain and debris from the windscreen without squeaking and groaning. Car B is still doing all of that without any problems. So does this say that quality is not the same as specifications ? Well, it depends.
You could also specify the number of years the top speed is kept or how many times the doors can be opened and closed without falling off etc, but these specifications are not to be found at the car dealer’s showroom. Maybe they are specified in confident financial accountant files and material buyers documentation but they are not for public eyes. So how can we quantify quality then ? Well it has a relation with specifications and how long these will last so we could say that product quality is inversely proportional to the rate original specifications drop. The same with a software application, we want it to run with the same speed, responsiveness, behavior at the last iteration as it did with the first iteration. A definition of done can help to guarantee this; do everything in an iteration that will give you maximum feedback regarding code quality, tests, performance, load, integration, deployment, specifications, etc. With continuous inspecting, adapting and improving these items in every iteration quality and therefore the specifications of the product is maintained.
What about the quality of software ?  This is best defined with the code quality and this is determined by how fast and easy the software can be maintained, adapted, expanded, tested and deployed. SOLID Design principles  will help to achieve that. So software quality is guarded by SOLID principles, software product quality by using a well defined definition of done in an iterative development process.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s