Mastering Software Quality Assurance: Best Practices, Tools and Techniques for Software Developers available in Hardcover
This comprehensive reference on software development quality assurance addresses all four dimensions of quality: specifications, design, construction and conformance. It focuses on quality from both the micro and macro viewpoint. From a micro view, it details the aspect of building-in quality at the component level to help ensure that the overall deliverable has ingrained quality. From a macro view, it addresses the organizational-level activities that provide an environment conducive to fostering quality in the deliverables as well as developing a culture focused on quality in the organization. Mastering Software Quality Assurance also explores a process driven approach to quality and provides the information and guidance needed for implementing a process quality model in your organization. It includes best practices and valuable tools and techniques for software developers.
|Publisher:||Ross, J. Publishing, Incorporated|
|Edition description:||New Edition|
|Product dimensions:||6.00(w) x 9.00(h) x 1.00(d)|
About the Author
Murali Chemuturi is an information technology and software development subject matter expert, hands-on programmer, author, consultant and trainer. He has more than 25 years of information technology and software development experience and several years of academic experience teaching a variety of computer & IT courses. In 2001, he formed his own IT consulting, training and software development firm known as Chemuturi Consultants. Mr. Chemuturi's undergraduate degrees and diplomas are in Electrical and Industrial Engineering and he holds an MBA and a Post Graduate Diploma in Computer Methods & Programming. He is a published author in professional journals, a member of IEEE, a senior member of the Computer Society of India and a Fellow at the Indian Institute of Industrial Engineering. His first book, Software Estimation Best Practices, Tools, & Techniques is fast becoming a best seller.
Read an Excerpt
QUALITY ASSURANCE BASICS
* Connotations of the word quality from the standpoint of end users, providers of goods and services, industry associations, and government bodies
* Existing definitions and a proposed comprehensive definition for the term quality
* Difference between quality and reliability
* Evolution of the concepts of quality
* Brief sketches of the quality gurus
* Introduction to total quality management
* Importance given to quality in software development organizations
CONNOTATIONS OF THE WORD QUALITY
We often see the word quality used as a stand-alone term, without any adjectives attached to it. People do not normally use the term good quality to express their satisfaction with the products or services they use. To say that a certain product is a quality product implies that the product is of good quality. On the other hand, people certainly use the term bad quality to express their dissatisfaction with the products or services they use. Therefore, the adjective good is implicitly attached to the word quality in the minds of most people. Thus, the word quality connotes good quality to most people, including technical professionals.
Before attempting a more elaborate definition of quality, let us consider the various connotations the word invokes, as it means different things in different sections of society: For a customer or end user of a product, quality connotes defect-free functioning, reliability, ease of use, acceptable levels of fault tolerance during use, and safety from injury to people or property.
* For a customer or end user of a service, quality connotes reliability of performance, ease of obtaining service, expert service, pleasant service, and protection from consequential damage.
* For a producer of goods, quality connotes conformance of the product to specifications, which may be defined by a government body, an industry association or standards body, or by the producer's own organization.
* For a provider of services, quality connotes meeting deadlines and delivery of service that conforms to customer specifications and standards which may have been set by a government body, an industry association or standards body, or by the provider's own organization.
* For government bodies, quality connotes safety and protection of consumers from fraud.
* For an industry association or standards body, quality connotes safeguarding the industry's reputation, protecting the industry from fraud and lawsuits, and addressing the concerns of consumers, government bodies, and the industry itself.
Given the above distinctions in the meaning of quality, it is clear that the word has multiple connotations attached to it.
WHAT IS QUALITY?
Before proceeding further, we first need to define the word quality in a manner that addresses all the connotations noted above. The International Organization for Standardization (ISO 9000, second edition, 2000) defines quality as the degree to which a set of inherent characteristics fulfills requirements. Quality can be used with such adjectives as poor, good, or excellent. Inherent, as opposed to assigned, means existing inside something, as a permanent characteristic.
This definition contains three key terms: requirements, characteristics, and degree. Requirements can be stated by a customer in a made-to-order scenario or by product specifications in a commercial off-the-shelf product scenario. Characteristics refers to the capability of the deliverable or, in other words, the robustness (fitness) of the product. The word degree implies that quality is a continuum, beginning with zero and moving toward, perhaps, infinity. This inference, however, is ambiguous and leads to the wrong perception. What is the level at which quality is called "poor" or "good" or "excellent"? More importantly, who is authorized to define the terms "poor," "good," and "excellent"?
Another popular definition of quality, as defined by Joseph Moses Juran, is fitness for use, with fitness and use being crucial to proper understanding of quality. Unless we define these two key words, the definition of quality is incomplete. Consumer interpretations and provider interpretations of these two terms often are at loggerheads.
Because fitness and use are crucial terms, they cannot be left open to interpretation. Organizations often define these two terms in their specifications for a product or service they provide. Let us look closely at the attributes of specifications:
* Specifications may be explicit or implicit. Explicit means that the provider selects the specifications and makes them available to customers. Implicit means that the specifications are not defined but are understood to be necessary; examples include safety, security, and fault tolerance requirements.
* Specifications may be defined by either the provider or an external body, such as a government organization, an industry association, or a standards body. They are made available to customers, and they are adhered to by the provider.
Oftentimes, providers resort to unethical definitions of specifications and provide services or products that can be detrimental to customers and perhaps to the industry. This has resulted in industry organizations coming together to form associations, such as manufacturers associations and service provider associations, which define specifications for their particular industry's products or services. Governments also step in and form standards bodies, which define specifications for various products and services. Defense departments of various countries often define specifications for the diverse range of products to be used by their armed forces. These specifications stipulate a minimum set of standards to be adhered to by providers of products or services, so that fitness for use is defined and ensured.
Such formally defined specifications become industry standards and are released by industry associations to the general public for a nominal fee that covers the cost of production and distribution of these standards. Examples of bodies that release standards on a regular basis include the American National Standards Institute, British Standards Institute, Joint Services Specifications, Deutsches Institut für Normung, ISO, International Electrotechnical Commission, International Telecommunications Union, National Electrical Manufacturers Association, and Institute of Electrical and Electronics Engineers. In recognition of their contributions to quality and general consumer well-being, a day has been set aside every year to celebrate such organizations: World Standards Day is October 14.
Standards specify, at a minimum, the following:
1. Attributes of the components that make up a product, which may include the material used and the dimensions and methods of testing the product
2. The intended use of the product or service
3. The limitations of the product that need to be conveyed to customers
4. The process by which the components are made
5. The security and safety parameters that need to be built in
Understanding that specifications are at the heart of quality, we can now define the term in a more cogent manner. Moreover, it is important that quality be defined from the standpoint of the provider, as it is the provider that builds quality into products or services, and it is at the provider's location where quality is ensured.
DEFINITION OF QUALITY FROM THE STANDPOINT OF THE PROVIDER
Quality is an attribute of a product or service provided to consumers that conforms in toto to or exceeds the best of the available specifications for that product or service. It includes making those specifications available to the end user of the product or service.
The specifications that form the basis of the product or service provided may have been defined by a government body, an industry association, or a standards body. Where such a definition is not available, the provider may define the specifications.
This definition of quality mandates that the provider:
* Define specifications if they are not already defined by a higher body, such as a government body, an industry association, or a standards organization
* Adhere to the best of the available definition of specifications
* Ensure conformance is 100% or better — no less
* Make available to the customer the specifications to which conformance is ensured
The result of a product or service that meets the above definition of quality is that the customer is able to effectively use the product for the length of its life or enjoy the service fully. This result further mandates that the provider is responsible for providing any support that is required by the customer for the enjoyment or utilization of the product or service throughout its life.
Any product or service that meets the requirements of this definition is rated a "quality product/service," and any product or service that does not meet the requirements of this definition is rated "poor quality."
QUALITY AND RELIABILITY
Quality and reliability are intertwined and are inseparable, but what does reliability mean?
Reliability of a product is its capability to function at the defined level of performance for the duration of its life.
Two phrases are critical in this definition:
1. Defined level of performance — Performance level is defined in the specifications for the product or service. It should be 100% or more of the specifications and no less. Continuous use is also a specification. For example, a car may be capable of being driven at 100 miles per hour, but how long can a car withstand being driven continuously at that speed? Normally, performance is defined at two levels: normal performance and peak performance.
2. Duration of its life — Duration needs to be specified for normal performance as well as peak performance. A product has two lives:
* First life or initial life — Initial life, before any repairs become necessary, normally is specified as the warranty or guarantee period. After expiration of this life, regular maintenance may be required to maintain performance at the level specified for the product.
* Operating life — The period of time after the warranty expires, assuming maintenance is performed. After expiration of this life, it may not be economical to maintain the product to operate at the specified level of performance.
In other words, quality involves delivering the specified functionality under the specified conditions, and reliability involves delivering the specified functionality at a specified level of performance over the duration of the product life, even with slight deviations in the specified conditions.
While initial life is specified by manufacturers as the warranty period, the life after the warranty period usually is not specified. If it is, it is specified with such stipulations as "subject to the condition that the product is maintained and serviced by our own expert technicians" or something similar. If product maintenance is entrusted to the manufacturer or its authorized maintenance shop, the manufacturer specifies two norms: mean time between failures and mean time to repair.
Mean time between failures is the average period between two successive failures, assuming that proper maintenance is performed every time and maintenance conforms to the manufacturer's stipulations. It is expressed in the number of running hours for the product. Mean time to repair is the average time it takes to restore the product to its original functionality by carrying out the necessary repairs. It is expressed in the number of clock hours it takes to repair the product. Reliability is gauged by these two measures.
In terms of software, an observation often made is that software has no moving parts that cause the product to deteriorate through wear and tear. Once a software product functions at its defined level of quality and functionality, there should be no need for maintenance. Therefore, the term reliability should not be applicable to software. However, this reasoning is true only if the configuration on which the software product runs remains unaltered. If the hardware and software configurations are unchanged, no repairs should be necessary, rendering the attribute of reliability inapplicable. These days, however, many other factors play a role in how stable the hardware and software configuration remains. The following are a few common situations that can alter the configuration of hardware and software:
1. New operating systems enter the market every three years.
2. New Web browsers or updates to current browsers are released regularly.
3. New viruses and spyware are unleashed on unsuspecting Internet users.
4. Computers often are flooded with a host of new tools, ranging from office suites to antivirus software to downloadable utilities.
5. Changes are introduced to tiers (middleware) in multitier architecture software products.
6. Software products may make use of shared libraries that are part of the system software supplied along with the operating system. It is likely that these shared libraries are updated or modified.
7. Software products may make use of third-party code libraries to perform special functions such as rules processing, database independence, etc. These third-party code libraries may be updated or modified.
8. Installing and uninstalling utilities on a system may result in changes to or removal of the shared libraries used by a software product.
All of these activities change the configuration of the system on which a software product is running, and this is where the question of software reliability comes into play. A software product is said to be reliable if it can withstand minor patches to the operating system and to the middleware.
As software quality professionals cannot predict what future upgrades will be made to the system software (be it the operating system, database, browser, or middleware), they cannot specify the reliability of software in running hours. They also may not be able to specify the mean time between failures of a software product in running hours, because a software product does not fail due to use over a number of hours. It can, however, fail due to a change in the system configuration. Such is the case with mean time to repair, because the repair is not to restore the software to as near the original condition as possible but rather to remove the impact of some change in the system configuration.
Nonetheless, software quality professionals recognize that the term reliability is applicable to the domain of software. Some hints for building reliable software are offered in this book.
EVOLUTION OF THE CONCEPTS OF QUALITY
Although quality is an age-old word, its understanding at the organizational level has evolved in recent times, especially since World War II. Initially, it was thought that only the artisan could achieve a "quality" product state. However, as the Industrial Revolution moved manufacturing out of artisans' shops and into factories, with multiple artisans working on a single product, the supervisor became pivotal in achieving a quality product. If a part was missing or a bolt was loose, it was the supervisor's fault for not noticing it. As pressure on the supervisor to ensure quality increased, actual supervision took a back seat, which affected productivity and production.
It finally dawned on management that appointment of an independent inspector was needed to ensure that every part was mounted properly and every bolt was tightened. Thus came about the profession of inspection, along with the development of a host of inspection tools, techniques, and methods. Inspection became a research area in itself. Examples of tools developed specifically for inspection that are now standard in manufacturing milieus include "go/nogo" gauges and inspection jigs.
Inspection, as a link in the manufacturing chain (see Figure 1.1), served well for some time, but became inadequate as the functionality of products became more varied. Ensuring that every part is properly mounted and that every bolt is properly tightened was soon found to be inadequate to ensure proper functioning of products. This was especially true for electrical products like motors and machines, as such products required functionality testing in addition to overall inspection. It was realized that inspection alone was not enough to ensure the quality of products and that products leaving the factory should be tested for their functionality as well.
Around the same time, subcontracting of the manufacture of parts to specialized manufacturers began to take place, starting in the auto industry. This brought in a new issue: ensuring the quality of inputs. Thus, inward inspection (inspection of parts received from suppliers and subcontractors) and testing also arose. Batch and job manufacturing also began to emerge around the same time, resulting in a new concept: quality control (see Figure 1.2). A host of new literature on methods of quality control came into being, including sampling inspection, statistical quality control, control charts, and so on.(Continues…)
Excerpted from "Mastering Software Quality Assurance"
Copyright © 2011 Murali Chemuturi.
Excerpted by permission of J. Ross Publishing, Inc..
All rights reserved. No part of this excerpt may be reproduced or reprinted without permission in writing from the publisher.
Excerpts are provided by Dial-A-Book Inc. solely for the personal use of visitors to this web site.
Table of Contents
About the Author,
Web Added Value,
Chapter 1. Quality Assurance Basics,
Chapter 2. Four Dimensions of Quality,
Chapter 3. Software Product Quality,
Chapter 4. Organizational Environment that Fosters a Quality Culture,
Chapter 5. Software Verification,
Chapter 6. Validation,
Chapter 7. Software Product Quality: Reliability,
Chapter 8. Process Quality,
Chapter 9. New Paradigm for Software Quality,
Appendix A. Audit Process,
Appendix B. Defect Resolution Methodology,
Appendix C. Guidelines for Error Guessing,
Appendix D. Guidelines for Graphical User Interface Quality Conformance,
Appendix E. Guidelines for Stress Testing,
Appendix F. Guidelines for Negative Testing,
Appendix G. Measurement of Quality,
Appendix H. Quality Assurance of Databases,
Appendix I. Coding Guidelines,
Appendix J. Sample Review Process,
Appendix K. Software Quality Assurance Plan,
Appendix L. Abbreviations,