Software Quality attributes is the sum of functionality, usability, reliability, efficiency, maintainability, security and scalability.
Software quality has been developed over the last few decades and beyond, however, there still many flaws and failures encountered, e.g. missed or misunderstood requirements, errors in design, over budget, poor performance etc. It could also be faults identified by users which were not discovered during the testing phase.
This is where software quality comes into its use. Developing systematic ways to relate software quality attributes of software will arrive in implementing successful software. In addition, with rapid changes and development over the Internet such as email and web evolution in the business environment, software quality needs to be inline and adapt with these changes.
However, because there are so many different attributes and not all of them can be used in all the products. The following section describes how the majority of attributes brings successful implementation to software.
Functionality is when the product performs the requirements and specification. It is the capability of the software to provide and perform its desired functions which meet stated conditions based on agreed user requirements. It is the essential purpose of any product or service. The more functions a product has, then the more complicated it becomes to define its functionality. It is the basic attribute for software quality but can be problematic for complex software. The major goal for quality software must be able to offer the functions that fulfill user requirement. Therefore requirement phase is an initial and critical stage to determine the rest of the phases will run correctly.
User friendliness is the goal of usability, no one likes to crawl through pages of manuals and help pages just to find out how to use a function. In general, usability is the ability to use the software easily and be maintained in a user friendliness way. For example, it should take less time to complete a job, to learn a new function and be easily memorized.
Reliability is about whether the system can perform its intended functions satisfactorily in each of these stages: requirement, design, coding, testing and runtime. It is an important facet of software quality because it should be maintained in a failure-free condition at all times. Once the software is running effectively, then we have to make sure the information provided is accurate and dependable. Reliability must also maintain its level of performance within stated period of time.
Efficiency is the capability of the software to provide appropriate performance, relative to the amount of resources used. This characteristic is concerned with the system resources used when providing the required functionality. The amount of disk space, memory, network and the processing time provides a good indication of this characteristic.
It is the capability of the software product to provide appropriate response time, processing time and throughput rates when performing its function under stated conditions. It is an attribute that can be measured for each function of the system.
This is the amount and type of resources used and the duration of such use in performing its function. It involves the attribute complexity that is computed by a metric involving size (space for the resources used and time spent using the resources). A software product which is considered to be efficient should not allow excessive use of resources. This could mean extra memory and processor speed.
Maintainability is the capability of the software product to be modified. Modifications may include corrections, improvement or adaptations of the software to changes in the environment and in the requirements and functional specifications. The product is said to have a high degree of maintainability if it is easy to understand, enhance and correct for users and developers.
In general, application system has to be support and maintained from time to time. Quality software allows user to easily manage system resources, providing effective functionalities and even automatic house keeping. Thus the software product which is maintainable should be well-documented and understandable for different levels of users and system staffs.
Security is a vital component in enterprise applications. To keep software product away from security threats is one of the critical attribute in software quality. A single attack could lead to the destruction of the system or the entire network. Today, all of us are covered by the network that convenient to communicate. However, the chances of security leak are also increasing. Therefore a strong security protection is always needed.
Other factors which should be taken into consideration are: security policies, security mechanism, security implementation and security testing.
Scalability has the ability to allow systems to be upgraded easily and transparent to users without interruptions. E.g. A scalable online transaction processing system or database management system is one that can be upgraded to process more transactions by adding new processors, devices and storage, and which can be upgraded easily and transparently without shutting it down.
Extensibility is one of the factors in the implementation stage which should be taken into consideration for future growth. E.g. Has memory and storage capacity been reserved for future expansion? If so, how much should we reserve within a certain period?
The business environment keeps changing, and the business processes continue to add new elements for improvement. A software product must have high level of flexibility and extensibility so that it is easily customized to meet requirement changes.