Quality Characteristics refer to the attributes of a software system that describe how well it performs all the other functions outside of its features. Some people refer to them as quality attributes and you may also have heard them called "non-functional requirements" in the past. The term "Quality Characteristics" is more suitable for modern software development and factually much more accurate. Because let's face it, no part of software is truly 'non-functional,' is it? Each part does something!
These characteristics essentially define the qualities of the system's behaviours, performance and design.
Good examples of quality characteristics include things like:
These characteristics essentially define the qualities of the system's behaviours, performance and design.
Good examples of quality characteristics include things like:
- Accessibility, which ensures the system can be used by as many people as possible regardless of how they interact with it
- Security, which is all about protecting the system and its data from malicious attacks
- Performance, looks at how responsive and efficient the system is
- Usability, focuses on how easy and intuitive the system is to use
- Maintainability, which considers how easy it will be to update and fix the system
There are many more quality characteristics that could be listed and which ones are considered by a project will depend on the context.
ISO 25010 is part of the ISO 25000 standards for software and data quality and defines software product quality under nine categories. It is included in this glossary definition to show there are different opinions and descriptions of quality characteristics. Do you agree checking only these would help define product quality? Or that all these should be checked for every project?
ISO 25010 is part of the ISO 25000 standards for software and data quality and defines software product quality under nine categories. It is included in this glossary definition to show there are different opinions and descriptions of quality characteristics. Do you agree checking only these would help define product quality? Or that all these should be checked for every project?
- Functional stability - the degree to which a product or system provides functions that meet stated and implied needs when used under specified conditions
- Performance efficiency - the degree to which a product performs its functions within specified time and throughput parameters and is efficient in the use of resources (such as CPU, memory etc.)
- Compatibility - degree to which a product, system or component can exchange information with other products, systems or components, and/or perform its required functions while sharing the same common environment and resources
- Interaction capability - degree to which a product or system can be interacted with by specified users to exchange information via the user interface to complete specific tasks in a variety of contexts of use
- Reliability - degree to which a system, product or component performs specified functions under specified conditions for a specified period of time
- Security - degree to which a product or system defends against attack patterns by malicious actors and protects information and data
- Maintainability - degree of effectiveness and efficiency with which a product or system can be modified to improve it, correct it or adapt it to changes in environment, and in requirements
- Flexibility - degree to which a product can be adapted to changes in its requirements, contexts of use or system environment
- Safety - degree to which a product under defined conditions to avoid a state in which human life, health, property, or the environment is endangered