Starting a software quality program from scratch is time consuming and a task often doomed to failure before it is begun. Inadequate preparation, misused terms, lack of planning, and failure to recognize the roles of all individuals in the organization are only a few of the pitfalls waiting for the overanxious practitioner.
As stated in the Introduction, this is a what-to book. It is intended to serve as an introduction to the concepts involved in software quality systems and to suggest how the system's parts may be implemented. This chapter introduces some software quality terms, the basic elements of the software quality system, and a few important additional concerns. The balance of the book elaborates on each of the elements and concerns and discusses implementation of the overall software quality system.
This text uses several terms that are granted many meanings throughout the computing and, in particular, the software industry. In this text, certain of these variably defined terms are used as defined in this section. Where available and appropriate, previously published definitions are used and their sources identified.
A task or body of effort directed at the accomplishment of an objective or the production of all or part of a product.
Any deviation from expected results or behavior.
A software flaw in a mathematical computation.
"An activity to determine through investigation the adequacy of, and adherence to, established procedures, instructions, specifications, codes, and standards or other applicable contractual and licensing requirements, and the effectiveness of implementation" (ANSI N45.2.10-1973).
That person or organization that causes the product to be developed or maintained. The client is often the customer.
A general term for a portion of a product. A component could be a chapter of a document or a unit or module of software. A component may include the entire product.
That person or organization that acquires a software product. The consumer may be either the customer or the user.
A software flaw in a decision process.
That person or organization that pays for the product.
A flaw in the product resulting from the commission of an error.
See Unit.
Part of the overall company organization (e.g., software quality group, development group).
A mistake made by a person resulting in a defect in the product.
The experienced manifestation of a defect being encountered in the product.
See Defect.
A preferred practice or procedure that is encouraged, but not enforced, throughout the organization.
A software flaw in the process of passing information into or out of the software element.
"A formal evaluation technique in which software requirements, design, or code is examined in detail by a person or group other than the author to detect faults, violations of development standards, and other problems" (IEEE Standard 100-1996).
International quality system standards published by the International Organization for Standardization (ISO). Intended to be used as the international definition of quality systems to be applied by producers or suppliers. Certification of an organization to ISO 9001 attests that the organization has a documented quality system and has evidence of its application.
See Component.
A group of units that together perform some convenient individual function or subfunction within the software system.
The most informal examination, by a coworker of the producer, usually of a small portion of a product.
A review of a product by peers of the producer. In some literature, the term peer review is used to mean any of the informal reviews.
Any of several convenient divisions of the software life cycle. These may typically include: concept development, requirements, design, coding, test, installation and acceptance, operation and maintenance, and retirement. Phases may or may not be sequential.
The group of activities and procedures by which a producer develops or maintains a product.
The person or organization that, following a process, develops or maintains a product.
The final, or intermediate, output(s) from any given phase of the software life cycle. These usually include specifications, code, test results, and so on.
"A schedule or plan that specifies actions to be taken" (IEEE Standard 100-1992).
Compliance of a product with the expectations of the user, based on the product's requirements.
The set of activities intended to detect, document, analyze, and correct process defects and to manage process changes.
A person whose task is to perform one or more of the quality assurance functions or activities comprising the quality system.
The set of activities intended to detect, document, analyze, and correct product defects and to manage product changes.
A person whose task is to perform one or more of the quality control functions or activities comprising the quality system.
The organizational entity responsible for monitoring and reporting the performance of the (software) product development functions and activities.
The empowering, and encouraging, of the producer to identify and submit improvements to the product development process.
A person whose task is to perform one or more of the functions or activities comprising the quality system. The quality practitioner may or may not be assigned to a (software) quality group. This includes both quality assurance and quality control practitioners.
The total set of quality control, quality assurance, and quality management activities dedicated to the provision of quality products.
"A condition of capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents" (IEEE Standard 100-1996).
A formal or informal meeting at which an output (product or component) of the software development life cycle is presented to the customer, user, or other interested parties for examination, evaluation, and approval.
A five-level model of an organization's software process maturity, called the Capability Maturity Model (CMM), developed by the Software Engineering Institute (SEI).
Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.
The portion of the software life cycle devoted to the actual creation of the software system, generally beginning with the requirements generation and ending with the installation of the software system into active production.
The entire period during which a software system is active, beginning with its initial conceptual development and ending with its removal from active use and its archiving.
A total, integrated aggregation of software components that performs the set of specific functions as defined by its approved requirements.
A practice or procedure that is imposed and enforced throughout the organization.
A group of modules that together perform one of the major functions of the software system.
The person or organization that provides the product.
The culture that maximizes the likelihood that a product conforms to its requirements on an ongoing basis.
The set of activities required to provide decision-making, action-capable management with the information it needs to affect the product development process beneficially.
"A software component that is not subdivided into other components" (IEEE Standard 610.12-1990). This is also known as the "smallest replaceable component" and sometimes called an element.
The "diary" of the development of a software component. It usually contains the portion of the approved requirements being addressed by the component, the design and test information that applies, and any additional information applicable to the understanding of the development approach used for the component.
That person who actually performs his or her job functions with the assistance of the product.
A person or organization that sells part or all of a product, usually for inclusion in a larger product being developed by a producer.
A review method in which a producer leads one or more other members of the development team through a product, or portion thereof, that he or she has developed, while the other members ask questions and make comments about technique, style, possible errors, violations of development standards, and other problems.