Application of Information Technology was initially confined to scientific and research related activities, where time was not considered to be a constraint. However, as the IT capabilities and their impact on organisational functioning became apparent, IT emerged as a new, powerful tool to outperform business rivals and gain competitive advantage by improving product quality, adding value to quality, facilitating product delivery and changing the very processes in an organisation. It is now being realized that the development of Information Systems requires a constant trade-off of schedule and cost vs. quality. With operational problems emerging after the installation of the systems and with the high maintenance costs, it is being realized that there is an urgent need that software products, like any other product in the market, should also be evaluated carefully before they are delivered and implemented. Software is ubiquitous and people often behave as if they had complete confidence in it.
For example, the ATMs, online booking of tickets for railways or flights or the mobile network. People do not expect them to fail. Software failures can now impact many areas of people’s lives and are much less likely to be tolerated than in the past when software was used only by a small number of people who understood that they were using an inherently unreliable system. It is, therefore, the responsibility of the software developers and providers to develop and provide quality software, which justifies this level of public confidence. Hence, the expectation and demand for the most stringent Software Quality Assurance Program to provide the required degree of confidence.
NEED FOR SOFTWARE QUALITY ASSURANCE
Software Quality Assurance has also required for the following reasons:
i. Avoiding legal liability if the software fails.
ii. Proving, with due documentation, that the software was developed using the best practices techniques embodied in various standards.
iii. Convincing the users or prospective clients that the developer has a satisfactory Software Quality Assurance Program in place.
iv. Being able to develop/deliver a high quality product, which, in turn, may enable the developer to offer guarantees with software as a part of marketing strategy.
v. Making software development more cost-effective.
vi. Taking advantage of a rigorous Quality Assurance Program as a marketing USP.
Let us first discuss the two terms separately, before considering Software Quality.
Generally, software is defined as a set of instructions. In the context of Software Quality Assurance, let us now view the software as “all directions/ data put into a computer to cause it to function in any code.” It includes “operating systems, supervisory systems, compilers and test routines as well as application programs. It also includes the documents used to define and describe the program, including flow charts, network diagrams, and program listings as well as specifications, test plans, test data, test results and user instructions”.
“Quality indicates the degree of excellence of a product or service.” According to ISO 1986, quality means the totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs. As could be observed, the ISO definition reflects the desire to define quality in a way, which captures the current concept of quality as customer satisfaction in the broadest possible context. Now that we have noted the definitions of “Software” and “Quality,” let us now move over to Software Quality.
Software quality is the inherent ability of software to be used for a specified purpose as the software possesses certain features and characteristics and which enables it to be utilized for that purpose. software quality is “Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software.” IEEE defines software quality as:
1. The degree to which a system, component or process meets specified requirements.
2. The degree to which a system, component or process meets customer or user needs or expectations.
Thus, software quality is the ability of a software to be fit for its purpose and capability to ensure that:
1. It is reliable.
2. It is doing what it is supposed to do.
3. It is performing according to its specifications.
4. It is doing efficiently.
5. It is working efficiently for the time for which it is predicted to work.
There are a set of quality criteria that help in determining the quality of the software. If they are required and not present, they pose a risk to the success of the software. These are given below:
• Correctness: The extent to which a program satisfies its specifications.
• Reliability: The extent to which a program can be expected to perform its intended function with required precision.
• Efficiency: The amount of computing sources and code required by a program to perform its function.
• Integrity: The extent to which access to software or data by unauthorised persons can be controlled.
• Usability: The ease with which a user is able to navigate to the system.
• Maintainability: The effort required to fix and test the error in an operational program.
• Flexibility: The effort required to modify an already operational program.
• Testability: The effort required to test a program so that it performs its intended function.
• Portability: The effort required to transfer software from one configuration to another.
• Reusability: The extent to which a program/sub-program can be re-used in another applications.
• Interoperabffity: The effort required to couple one system with another system.
Software quality would also imply quality of conformance, reflecting the extent to which the developer has succeeded in producing software which implemented the design, and quality of design, which reflects the extent to which a given software product meets a customer’s expectation.