【正文】
appropriate definition of software quality assurance is provided by Bersoff( 1984):Quality assurance consists of those procedures, techniques and tools applied by professionals to ensure that a product meets or exceeds prespecified standards during a products development cycle[3]; and without specific prescribed standards, quality assurance entails ensuring that a product meets or exceed a minimal industrial and / or mercially acceptable level of excellence. This definition is, of course[4], a fairly general one and it suggests that, firstly,software standards can be established and, secondly, the level of excellence of a software product can be estimated. The development of software engineering project standards is an extremely difficult process. A standard is some abstract representation of a product which defines the minimal level of performance, robustness, anization, etc., which the developed product must attain[5]. At the time of writing, some software standards have been developed by the IEEE, ANSI and military anizations. These standards describe configuration management plans, documentation,specification practices, software parisons, etc. Other standards which are currently under development include standards for reliability, measurement, the use of Ada as PDL[6], software testing and others. Bransta d and Powell( 1984) describe both existing and planned software standards as well as discussing standardization in more general terms. The problem with national software standards is that they tend to be very general in nature. This is inevitable as, unlike hardware, we are not yet capable of quantifying most software characteristics. Effective quality assurance within an anization thus requires the development of more specific anizational standards. Of course, the problem which arises in developing software standards for quality assurance and which makes the assessment of the level of excellence of a software product difficult to assess is the elusive nature of software quality. Boehm et al.( 1978)suggest that quality criteria include but are not limited to: Economy Correctness Resilience Integrity Reliability Usability Documentation Modifiability Clarity Understandability Validity Maintainability Flexibility Generality Portability Interoperability Testability Efficiency Modularity Reusability Exactly how some of these criteria may be quantified is not clear. Furthermore,as Buckley and Poston( 1984) point out, parts of this definition may have no value for a particular product. It may be possible to transfer a system from a microputer to a large mainframe but this is often a nonsensical thing to do. Assessment of software quality thus still relies on the judgement of skilled individuals although this does not mean that it is necessarily inferior to quantitative assessment. After all, we cannot assess a painting or a play quantitatively yet this does not preclude a judgement of its quality. Within an anization, quality assurance should be carried out by an independent software quality assurance team who reports directly to management above the project manager level. The quality assurance team should not be associated with any particular development group but should be responsible for quality assurance across all project groups in an anization. The activity of quality assurance involves sitting in on design reviews[7], program walkthroughs, etc. , and reporting on the overall quality of the product as it is developed. It also involves checking that the finished product and its associated documentation conform to those standards which exist. The quality assurance team may also assess if the different representations of a product( requirements, design,code) are consistent and plete. Notice that quality assurance is not the same as system testing. It is the development or testing team’s responsibility to validate the system, with the quality assurance team reporting on both the validation and the adequacy of the validation effort. This naturally involves quality assurance being closely associated with the final integration testing of the system. Software quality assurance is now an emerging subdiscipline of software engineering[8]. As Buckly and Poston point out, effective software quality assurance is likely to lead to an ultimate reduction in software costs. However, the major hurdle in the path of software management in this area is the lack of usable software standards. The development of accepted and generally applicable standards should be one of the principal goals of research in software engineering. (三) SOFTWARE TESTING 1. Purpose of Testing No matter how capably we write programs, it is clear front the variety of possible errors that we should check to insure that our modules are coded correctly. Many programmers view testing as a demonstration that their programs perform properly. However, the idea of demonstrating correctness is really the reverse of what testing is all about. We test a program in order to demonstrate he existence of an error. Because our goal is to discover errors, we can consider a test successful only when an error is discovered. Once an error is found, “debugging”or error correction is the process of determining what causes the error and of making changes to the system so that the error no longer exists. 2. Stages of Testing In the development of a large system, testing involves several stages. First, each program module is tested as a single program, usually isolated from the other programs in the system. Such testing, known as module testing or unittesting, verifies that the module functions properly with the types of input expected from studying the