250 likes | 622 Views
Software Quality Assurance. What is software quality?. Outline. 2.1 What is software? 2.2 Software errors, faults and failures 2.3 Classification of the causes of software errors 2.4 Software quality – definition 2.5 Software quality assurance – definition and objectives
E N D
Software Quality Assurance What is software quality?
Outline • 2.1 What is software? • 2.2 Software errors, faults and failures • 2.3 Classification of the causes of software errors • 2.4 Software quality – definition • 2.5 Software quality assurance – definition and objectives • 2.5.1 Software quality assurance definitions • 2.5.2 Software quality assurance vs. software quality control • 2.5.3 The objectives of SQA activities • 2.6 Software quality assurance and software engineering
Software quality – definition • Frame 2.3 offers two alternative definitions of software quality, held by the founders of modern quality assurance, Philip B. Crosby and Joseph M. Juran. • Each definition reflects a different conception of software quality
Software quality – definition • Additional aspects of software quality are included in the definition suggested by Pressman (Pressman, 2000, sec. 8.3), shown in Frame 2.4.
Software quality – definition • Pressman’s definition suggests three requirements for quality assurance that are to be met by the developer: • Specific functional requirements, which refer mainly to the outputs of the software system. • The software quality standards mentioned in the contract. • Good Software Engineering Practices (GSEP), reflecting state-of-the-art professional practices, to be met by the developer even though not explicitly mentioned in the contract. • In effect, Pressman’s definition provides operative directions for testing the degree to which the requirements are met.
Software quality assurance – definition and objectives • SQA should not be limited to the development process. Instead, it should be extended to cover the long years of service subsequent to product delivery. • SQA actions should not be limited to the technical aspects of the functional requirements, but should include also activities that deal with scheduling and the budget
Software quality assurance – definition and objectives • The expanded SQA definition corresponds strongly with the concepts at the foundation of the ISO 9000 standards regarding SQA • The expanded definition also corresponds to the main outlines of the Capacity Maturity Model (CMM) for software. • Table 2.2 compares elements of the expanded SQA definition with:
Software quality assurance – definition and objectives • Table 2.2 compares elements of the expanded SQA definition with: (read the table from the book and notice the differences) • The IEEE SQA definition • The relevant ISO 9000-3 sections • CMM requirements.
Software quality assurance vs. software quality control • According to the IEEE software quality assurance definition, “quality control” is to be contrasted with “quality assurance”. • These two terms represent separate and distinct concepts: • Quality control is defined as “a set of activities designed to evaluate the quality of a developed or manufactured product” (IEEE, 1991); in other words, activities whose main objective is the withholding of any product that does not qualify. Accordingly, quality control inspection and other activities take place as the development or manufacturing of the product is completed yet before the product is shipped to the client.
Software quality assurance vs. software quality control • The main objective of quality assurance is to minimize the cost of guaranteeing quality by a variety of activities performed throughout the development and manufacturing processes/stages. • These activities prevent the causes of errors, and detect and correct them early in the development process. • quality assurance activities substantially reduce the rate of products that do not qualify for shipment and, at the same time, reduce the costs of guaranteeing quality in most cases.
Software quality assurance and software engineering • According to the IEEE (1991), software engineering is defined as follows: • The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. • The characteristics of software engineering, especially the systematic, disciplined and quantitative approach at its core, make the software engineering environment a good infrastructure for achieving SQA objectives
Software quality assurance and software engineering • It is commonly accepted that cooperation between software engineers and the SQA team is the appropriate way to achieve efficient and economic development and maintenance activities that, at the same time, assure the quality of the product of these activities.