Quality simply means the degree of excellence. It is a metrics which describes the state of someone or something. Speaking from a software point of view, quality means to present the best possible software product to the user which will fulfil its needs and give the best possible outcome. In the ever-expanding world of WWW (World Wide Web), to cope up with the tremendous amount of data getting travelled, stored, processed, searched and retrieved within fraction of a second, it is very essential to have the best quality systems that won’t die when they are performing some lifesaving operations in some remote part of the world. Expansion of digital world is responsible for development of complex software products which are used in automobile industries, aviation industries, defence and military, healthcare, logistics, etc. which demands the best reliable software. Huge markets of mobile industry, by the introduction of android operating system based handsets and tablets, and other electronic gadgets have also increased the demand of dependable and genuine software.
Reliability of software is needed when it is highly expected that the piece of software should work without failing under certain operational conditions. This is where Quality Assurance of software comes into picture. Quality engineering can be generalized as ‘the software must do the right things and the things must be done rightly’. The meaning of ‘must do the right things’ here signifies that the software should perform the right functions. For example, train reservation system is developed to handle booking of seats in trains, not developed to change the signals for trains. This part comes under the validation and can be referred to Quality Control. The meaning of ‘things must be done rightly’ here is that the software should perform the required functions without any problem. Using the same above mentioned example, train reservation system should allow the users to book the seat as per the valid date limits, the number of seats, calculation of correct charges as per the number of persons, etc. This is nothing but the verification and is also referred as Quality Assurance. A software product always passes through this verification and validation activities throughout its lifecycle.
Kaoru Ishikawa, Japanese organizational theorists noted for his quality management innovations, in 1968 gave importance on the term called Total Quality Management (TQM), which consists of key elements:
1. Quality is defined by customer’s requirement, which comes first.
2. Active management participation is responsible for quality improvement.
3. Improvement of quality is continuous process.
4. Management driven by cross-functional committees to take decisions which are based on facts and data regarding product planning, product design, purchasing, manufacturing, sales, marketing and distribution.
Quality of software product will improve by repetitively following the test-find bugs-fix cycle when the software product is under development. It doesn’t matter for how many times this test-find bugs-fix cycle is repeated, some faults can likely escape and may take shape at client’s site. This compromises the software reliability. The level of reliability of a system depends on those inputs which cause failures to be observed by the end users. Till now there isn’t any ‘silver bullet’ designed to assure the quality as the software system may consists of highly complex code with millions of lines, developed by hundreds of people over months or years.
Software testing is one of the techniques that play a central role to ensure the quality of software product. Testers can determine the behaviour of a system by running the software system for its mandatory and chosen functions to see whether it sticks to the requirements. Other techniques which determine the quality of software can be like inspections, periodic meetings, and metrics like manual testing metrics, performance and automation testing metrics. Manual testing metrics can have metrics like test case productivity metrics, bad fix defect, test execution productivity, defect severity index, etc. Performance metrics can include metrics like scripting productivity, performance execution summary, performance execution data for both client and server side. Under Automation testing metrics automation coverage, automation test execution productivity, etc. metrics can be present. Irrespective of this there can be other metrics like schedule variance, effort variance, scope change, etc.
Defect prevention is also a part of Quality Assurance which tries to avoid the occurrence of defect in the first place and reducing the cost and efforts which are consumed to fix the defects that follow.
Such tools and technologies should be adopted which will reduce forcing any faults into the system.
Formal methods should be introduced which will precisely design and implement the product specification and help to reduce deviations which can cause faults.
Education and training will help to reduce the misconceptions triggered.
Six Sigma defines a clear way to achieve total quality for any product including software. Under Define, Measure, Analyse, Improve and Control (DMAIC) and Design for Six Sigma (DFSS) methods, certain quality management tools like Critical to quality (CTQ), Root cause analysis (RCA), Quality Function Deployment (QFD), etc. are provided to control and improve quality of a software product.
Agile Testing methodology is also equally weighted in ensuring to deliver the business value asked by the customer on periodic basis. The agile testing team draws out the desired behaviour of the customer and teams up with the developing team which helps them in coding according to specification.
Analysis and improvement of software quality are of great importance to any organization in the field of software development. It is the job of Software Quality Analysis (SQA) department of an organization to periodically bring out new techniques and technologies to improve and maintain the quality of their software product. It’s similar to like a sculpture develops the right shaped, right sized statue from the cast but then by using is right tools, remove the unwanted part from the statue to present the best example of art.