It is generally considered as the capability of a software system to conform to requirements. The following are the list of software quality attributes;
Accessibility - It refers to design of product, services or devices that are accessible to users with disabilities as well. It helps an application to be equally accessible for user with disabilities and provide equal opportunities.
Availability - It means the probability that a product or an application will run successfully at stated time, condition and environment. A failure to operate at stated time and condition can cause a heavy loss for an organization.
Understandability - It is a concept of how a system should be presented so that engineer can understand it. Lack of understandability can leads to wrong interpretation that may in turn lead to misunderstanding and fault results.
Usability - It is a measure of how well a user can use the product or services to achieve a defined goal efficiently, effectively and satisfactorily. If a product lacks usability then it will be a waste of time, money and energy.
Interoperability - It is an ability of a system to work with other system without any restrictions. It is important because it enable a system to exchange information and data with other systems without any interruption.
Safety - It refers to the condition of being protected from harms and attacks. It is important because it enable applications to work without harming it users and other systems.
Security - It is an ability of a system to provide secure access. It ensures that the data are validated and protects from malicious attack.
Reliability - It is an ability of a system to perform a task at any stated time, condition and environment successfully. Testing a reliability in software helps to predict system failure on all levels.
Generality - It means an ability of a system to handle changes easily. It helps software to be more reliable, reusable and develop faster at lower cost.
Operability - It is an ability of a software to be easily operated by users and operation teams at given time environment. It helps software system to be easy to operate and maintain, lower the cost of ownership and reduce operational problems.
Simplicity - It is a state of being simple and easy to understand. It is a key goal in design and any complexity must be avoided.
Mobility - It means an ability to move. Mobility is important so that software can be accessed using different devices by the users.
Nomadicity - It is a system support needed to provide rich set of computing and communication services. It helps system to adjust to processing, communication and access available in different computing environment such as the computer platform for user may vary from low powered personal digital assistant while travelling to supercomputers in science laboratory.
Portability - It is an ability to move from one environment to another. It is important so that system can be easily moved to new computing environment.
Accuracy - It means how close is the measurement to the specific value. It is important because human error, bad equipment can leads to inaccurate results.
Efficiency - It means use of resources in a best way to perform specific function. It shows effort that's been put in to develop system and measures the user satisfaction.
Footprint - It refers to a space occupied by particular unit of hardware or software. It indicates runtime memory requirements while the program executes.
Responsiveness - It means an ability of a system or unit to complete assigned task in a given time. Delay can cause frustration and lead to false believe that system is broken.
Scalability - It is the property of a system that add resources to handle the growing amount of works. For example; search engine which supports the increasing number of users and the topics. It determines the user limit of a web application.
Schedulability - It an ability of a system to complete task within a specified time. It enables task to be completed in a real time system.
Timeliness - It is an ability to deliver a system on time. It is important as the availability and accessibility of information helps to make better decision.
CPU utilization - This is the work that’s handled by the CPU. Also used to measure performance. It helps to find out how effective the test is and how any changes done have affected the system performance.
Latency - This is the delay that occurs in data transfer when data starts following a command for its’ transfer. It indicates the quality of connection within the network.
Throughput - Throughput is the rate of successful packet arrival in a destination over a network. It is used to check the amount of request a software can process per second, minute or an hour.
Concurrency - Concurrency refers to several computations happening at the same time. It helps to detect defect in a system when many users logs in at the same time.
Flexibility - It refers to how flexible a system is in response to different user and system requirement. It helps to adopt when external change occurs.
Changeability - It means how easy it is to change something within a system. It supports improvements in software at different stages of development.
Evolvability - It is the simplicity of gradually furthering the development of a system. It's important so that a system can withstand and adapt any new changes and requirement.
Extensibility - It means how easy it is to add further functionality to a system. It is important in an open source software system as they grow according to the user's community and can head towards wrong direction.
Modifiability - It refers to an ability of a system to receive any changes. It allows developer to make changes in a system based on user requirement.
Tailorability - It is the capability of users to adapt a system to their own particular situation. It allows user to select their desired functionalities from a system.
Upgradeability - It is an ability to change the software with the better version of it to keep the system up to date. It helps to prevent bugs and attacks from hacker.
Expandability - It means future growth. The capability of a system to expand its units helps to enhance its performance and usefulness.
Consistency - It is a series of measurement of same project carried out by using same method producing same result. Consistency leads to great achievements.
Adaptability - It an ability to tolerate any changes without any intervention. It reduces the risk of errors.
Openness - According to Currie (2009), "it is a degree of accessibility to view, use, and modify computer code in a shared environment with legal rights generally held in common and preventing proprietary restrictions on the right of others to continue viewing, using, modifying and sharing that code."
Composability - It is a system design principle in which components are stateless and self-contained. Composable system are more reliable and secure because it is easier to evaluate its individual parts.
Integrability - It is an ability to link different systems and applications to act as a whole. It helps to boost the company's productivity.
Accountability - It is the state of being responsible for sharing information, decision making and the results. It provides directions, purpose and boundaries to work with others.
Completeness - It is a state when a desired system are complete. All the listed features and requirements must be available for the completeness of a system.
Conciseness - It means brief and to the point. Eliminating repetitive code helps developers to understand the codes, debugging, finding errors and provides more storage space.
Correctness - Correctness is when a system behaves as intended. More programs are involved, and the complexity level gets higher, so a system correctness is one of the most important attributes.
Testability - It is an ability to carry out testing activities on software artifact i.e. software system, requirement and design documents, etc. It helps to determine effort needed to execute test on particular software artifact depending on testability.
Traceability - Traceability in software engineering is the ability to trace work items across the development lifecycle. It's used to keep track of what's going on in the development lifecycle — and show what's happened. Achieving regulatory compliance is a common purpose for traceability in software engineering.
Coherence - It measures the relationship and strength of the various responsibilities of software modules. It helps to reduce module complexity, increase system maintainability and reusability.
Analyzability - The capability of the software product to be diagnosed for deficiencies or causes of failures in the software, or for the parts to be modified to be identified. It enables easier debugging and maintenance.
Modularity - It is an ability to divide a program into smaller programs to execute variety of tasks. It enables developers to work at a same time and reduce the time taken for development.
Reusability - Reuse of existing assets within the software development process. It increases productivity and helps to minimize risk of new development projects.
Configurability - According to Manufacturing.Net (2014), "Configurability means being able to drive more efficient operations and better high-level decisions with a tool that can work the way you want it to — not one driven by a programmer’s assumption of how your unique enterprise should operate."
Distributability - Quality designing of a software that support distributed software development.
Confidentiality - It means only authorized users are allowed to access data. It prevents frauds.
Integrity - It refers to quality of source code. Code with high integrity are important for software that needs to follow coding standard and industry regulations. It provides security, safety and maintenance of the code.
Maintainability - Able to modify software system to correct faults, improve performance and adapt to changed environment.
Affordability - Ability to keep the cost of a software system within the price range of an operator.
Serviceability - Ease and speed of which corrective and preventive maintenance can be conducted on system. It consists of various method to diagnose faults in the system.
References:
Currie, C., 2009. What Is Openness, Anyway?. [online] Available at: <https://er.educause.edu/articles/2009/3/what-is-openness-anyway> [Accessed 10 November 2020].
Currie, C., 2009. What Is Openness, Anyway?. [online] Available at: <https://er.educause.edu/articles/2009/3/what-is-openness-anyway> [Accessed 10 November 2020].