Here is a simple question: what is quality? It seems like an easy thing to explain. However, when you try, it does not look like a piece of cake. I have been in software development for 30 years. All this time, I promised my clients to produce quality software. And all my fellow colleagues did the same. But what did we promise in reality? Some define quality as the level of customer satisfaction. Others say it is about meeting the requirements of the customer. For those “living” in the tech world, it is the state of software being free from defects. To me, the latter is closer to the real world but… it’s so boring for customers. Of course, they want quality but consider it “granted”. As such, this “boring” subject is very often excluded from consideration and… budget.
We decided to fix that by intensive research on what the quality of a software product is, and how we can manage it. We started with the replacement of a boring and almost undefined term “quality” by a meaningful “technical debt”. As such, we see the quality of a software product as the amount of various technical debts embedded into the product and delivered to end-users. We can define and measure it to cut and manage technical debt.
With this in our minds, we spent more than 6000 hours of research, defining the critical dimensions of software product quality. These dimensions became the skeleton of our software product evaluation methodology. We called it TETRA, Technical dEbT Reduction plAtform.
But how do we know what really matters in software products and what to assess?
First of all, we identified eight dimensions for assessment:
- Source code quality – assessment of the quality of the product source code by a number of critical parameters.
- Usability, UI & Documentation – evaluation of the product user interface, usability, and documentation.
- Security – valuation of product vulnerabilities according to CVE, CERT, CWE, OSVDB, OWASP, and BID.
- Performance – measurement of product performance and load parameters.
- Business logic – audit of how the product fits into the business objectives.
- Architecture quality – expert assessment of product software core structure and data model.
- Data quality – verification of product resistance to bad data, exception handling, and bad data prevention.
- Open Source code use – detection of the use of open source and other 3rd party code.
For each dimension, we determined the critical metrics and the levels they should achieve. This allowed us running a comprehensive product assessment. The approached helped us to understand how the product actually “feels”. As you see, TETRA gives a full quantitative assessment of the product quality. It goes far beyond the plain “Good” or “Bad” quality estimate.
The important thing about TETRA is that it is not merely for techies. TETRA is an asset for everyone working with the product. Developers and testers get a non-prejudiced assessment of their work. Managers receive the feedback on the product’s overall capacity. While users get the reliable and well-performing product. Moreover, the processes used for the product assessment train the team to follow best practices during the product development. This increases team proficiency and consequently the quality of the product.
Another great thing that the platform provides the product owners and investors with proper business information. The fair analysis of the product tells companies whether the product is ready for the market launch. In case the product already works as the company offer, owners can estimate its efficiency and value on the market. TETRA also allows to check the state of a product for sale, define its market value and assess the investment risks. Simple bug fixing or removal of code duplications will never do that. These activities just not imply “weighty” business facts.
The bottom line is that the quality of software affects all facets of the business. It is not the sole concern of software developers, but it is also an issue for software owners and even users.