# Intentional qualities

DevFeed: [Intentional qualities](<https://devfeed.tech/articles/intentional-qualities-26023.md>)

Original publisher: [Read original article](<https://elizarov.medium.com/intentional-qualities-7e6a57bb87fc?source=rss-4762e889f8fc------2>)

Author: Roman Elizarov

Published: 2019-10-19T14:36:35Z

Content type: opinion

Language: en

Sources: [Stories by Roman Elizarov on Medium](<https://devfeed.tech/sources/stories-by-roman-elizarov-on-medium.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Usability](<https://devfeed.tech/topics/usability.md>)

Tags: [comparison](<https://devfeed.tech/tags/comparison.md>), [programming](<https://devfeed.tech/tags/programming.md>), [quality](<https://devfeed.tech/tags/quality.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [speed](<https://devfeed.tech/tags/speed.md>), [usability](<https://devfeed.tech/tags/usability.md>)

## AI overview

This commentary explains why software quality attributes such as reliability, efficiency, security, maintainability, and usability require deliberate goals and ongoing attention. It argues that qualities cannot be acquired accidentally and are difficult to evaluate, especially when selecting libraries or comparing non-functional requirements.

## Source excerpt

Vernier Caliper by Michael Brace When we work on a piece of software, being it an application or a library, we often focus on its functional requirements. They are usually quite easy to directly observe and test; functional requirements are featured in software marketing materials in the form of "feature matrix" that compares different products. Yet, many non-functional aspects of software, also known as quality attributes or qualities for short, such as reliability, efficiency, security, maintainability, usability, etc¹ can be important, too. They are not as easy to measure, though. Consider, for a example, a task of picking a library to parse some data interchange format. When you face a problem like this, you might have in mind some specific requirements like "it should be able to parse this and that file we have". You can quickly sketch test code to vet the candidates you've found. It is even simpler if the format is formally defined in some standard or standard-like written document. You'll just read documentation to confirm that the library claims conformance with the corresponding standard and then all you need to do is to perform a straightforward acceptance test. Trust, but verify. But what happens if you want to find a fast parser, for example, or if you have some other quality attribute in mind that shall be satisfied to suit your needs? Measuring qualities is way more complicated and quite a non-trivial endeavor. Even simple things, like speed, being it either response time or bandwidth, need a proper test setup and a lot of skill. It is time consuming. In the past I used to spend a lot of time when faced with a problem like that. You are lucky if you can find a ready-to-use quality comparison in your domain, but more often than not, all kinds of comparisons for non-functional requirements that you can find on the internet are of a very low quality (pun intended). However, over time I've discovered a shortcut. See, the fact is that you cannot accidentall