Dimensions of Quality
QualityQuality is a critical pillar of software development and measuring the performance of your team against this criterion is fundamental.
Quality consists of 5 dimensions: reliability, performance, scalability, supportability, and ergonomics/ease of use.
5 Dimensions of Quality
ReliabilityMeasuring reliability of an application can be pretty straightforward, even if comparisons are not always easy because this information is most of the time kept confidential inside companies.
Basically the best indicator is the # of open bugs and their evolution over time. Of course, the less bugs the better. But be careful, a lack of bugs may indicate insufficient testing or that the application is not being used (except, of course, when you reach this state over the long term). And in general few bugs means that there are few evolution.
PerformanceWe are all software users. Who of us has never grunted against a slow application or an unresponsive web site?
It is obvious when we are on the user side, but some developers tend to minimize the importance of implementing a responsive user interface. In the end, whatever the technical reason behind it or the work that is done by the software, users won’t use a solution that is too slow.
Consequently, when coding, you need to choose technical options that provide a good performance experience for your users.
If some data processing requires a lot of time, you need to think about asynchronous mechanisms, splitting data or using other design options to avoid a bad performance experience for your users.
ScalabilityPeople tend to confuse performance with scalability. These are two different aspects of quality, and sometimes they require contradictory design options.
Scalability is the ability for your application to grow without limit, either in the number of users it supports or in the volume of data it can manage.
With the emergence of the Internet, SaaS and cloud applications, scalability has become often more important than performance. And it is most of the time a technically challenging issue if you have to deal with large number of users sharing the same data.
With the diminishing cost of hardware, multiplying the numbers of machines is clearly less costly than over-optimizing performance with developer work time. But simply adding machines does not work; you need to design your application in a way you can split the work between those machines and still guarantee consistency.
Supportability is the ability of an application to be correctly operated in production.
A production-aware application should also be able to deal with non-forecasted events such as network failures, bandwidth drops or hardware issues.
The speed at which you can reproduce issues is also a key indicator for an application’s supportability.
Thinking about disaster recovery and how you can restore the application in case of major events is also part of this dimension.
Ergonomics and ease of usePeople tend to either underestimate the importance of ergonomics, or – on the other hand – expect every application to have the same ease of use as major consumer web sites, which are developed with tens of millions of dollars.
Some applications bear some intrinsic complexity of their business which might require very specific knowledge making it a specific a challenge to keep usage simple.
The best indicator of ergonomics is the ability to use and learn an application quickly. If possible, we recommend measuring this for new users. How much time does it require to get them on board using the application?
Increased ease of use will lower training costs, improve productivity of your users and ease the acceptance of the applications.
As with performance, a lack of ergonomics may result in user non-acceptance of the application and extra hidden costs.