Defining Software Quality
Here at Grio we strive to constantly improve the quality of our software. But what exactly does that mean? Is there a way to measure software quality? What are the metrics? What are the tools needed for this endeavor?It seems there is no simple answer to this problem. Quality is, well, qualitative, and can elude empirical measurement. It is more prone toward the ‘Porn Test’ (Thanks US Justice Potter Stewart!), which states: “I know it when I see it”. Since software is such a malleable medium and presents itself in in so many forms, practically every application has a unique set of parameters that pertain to its quality.
Probably the most important measurement of software quality is customer/user satisfaction. If the customer is highly satisfied with the software delivered and it is serving its intended purpose, I’d consider that high quality software. Conversely, if the customer/user were not satisfied, I’d say the software is of poor quality.
How do customers determine satisfaction and rate quality? I’ve identified several factors: timeliness, cost, performance and usability.
Timeliness relates to the project schedule. Many projects are time sensitive and can be useless if not delivered as scheduled. For example, what use would a Super Bowl app be that is delivered after the game?
Cost is an extremely important factor. People pay top dollar for a Mercedes Benz, but would you pay the same price for Ford Fiesta? Customers closely tie quality to cost.
Usability means the the product does what it is supposed to do and is easy to use. You can have a rock solid app, but if it does not fulfill the needs of the customer, it will be deemed of low quality.
Note I have not delved into technical aspects, like Quality Assurance Testing, Test Driven Development (TDD), Unit Test Coverage, Software Development Methodologies and the like; these are simply means to an end, and the end is high quality software. While these practices can reduce coding errors and allow for better measurement and predictability, they do not ensure high quality software. You can write great code, but it has to do the right thing for your customers. Even the best written application that is thoroughly QA tested will be deemed of poor quality by the customer if is not appropriately serving their needs.
So how do we define software quality here at Grio? We don’t have an exact definition per se, but we do have a goal in mind: Making our customers love us. This means we work extremely closely with our clients to ensure that we are not only writing robust and well tested code from a technical standpoint, but that code is doing what the customer needs. Frequent communication and feedback greatly facilitate this process.
So when it comes to software quality, let your users and customers decide. Do they love what you do?