Quality Assurance and the Software Development Life Cycle

Get Complete Project Material File(s) Now! »

CHAPTER 2 Elements of Software Quality


Quality is an important concept in software development. Before one can begin to examine the relationship o f quality assurance and testing, it is imperative that a comprehensive understanding of quality be established as it relates to object-oriented software development. The techniques and methods supporting these attributes are considered. Once the elements o f software quality have been identified, the ways in which various software development methods assist in incorporating quality are examined. The role o f testing and quality assurance is also discussed.

Software Quality

The IEEE Glossary o f Software Engineering defines software quality as ‘The degree to which software possesses a desired combination o f attributes’ [IEEE, 1990]. That statement does not give a very workable definition since it is not clear which attributes are important. Building upon Crosby’s definition o f quality, ‘conformance to requirements’, the meaning o f software quality can be expanded to conformance with requirements [Crosby, 1980]. These requirements include the user requirements and the standards adopted by the software development group, as well as accepted standards such as those created by the IEEE and the ISO. Compliance with standards implies that the relevant standards o f concern must be documented unambiguously. Testing must be carried out that measures these requirements and standards against the end product and vice versa. The end product consists o f the requirements and its compliance with the presented standards. The issue o f standards is discussed later in this chapter.Verification, the process o f measuring the implementation against the specifications or requirements, must be carried out during the entire life cycle and must include not only the software products but the process as well. The software development process itself should be viewed in the light o f continuous process improvement, where the process is examined and changes are made that are aimed at improving the quality o f the final product. Deming points out that it is often the process, not the worker, that ultimately affects the quality o f a product [Walton, 1986]. Deming illustrates this point in his famous bead experiment in which individuals are instructed to use a scoop to produce a product consisting o f white beads. Within the raw material, beads, are a number o f red ones reflecting flaws in the input materials. No m atter how closely the workers follow the instructions they still produce an unacceptable product, red beads.Deming’s point was that the process was flawed, not the desire or ability o f the worker to produce quality (white) beads [Walton, 1986]. The same result can be derived from a software development process that is flawed.Before the process can be properly evaluated one m ust have a working knowledge o f what constitutes quality within software. Characteristics o f software quality, as outlined by [Sanders and Curran, 1994] and presented in Table 2.1, may be used as guidelines for software development. When developing software, one should measure these elements o f quality against the end product. Additional quality guidelines are required that relate to how the software is being developed, tested, and maintained. Guidelines in support o f quality assurance and control should also form part o f the methods that are used for software development and maintenance.The following table is designed to provide an understanding o f the elements o f quality that correspond to quality software. Sub-elements o f the primary quality concepts o f functionality,reliability, usability, efficiency, maintainability, and portability are presented.[Thornton, 1992] uses quality elements and divides them into two major categories which represent technical quality and user quality. Table 2.2 presents another list o f criteria for evaluating software quality. Some o f the same quality elements are included, however, in this instance emphasis is placed on the issues related to the software development process and to standards which are applied to the development o f the code. In addition, the elements o f quality related to the external view o f the end-user are included in this list o f quality components. All o f these items are quite important. These elements provide the software development group with a useful measure that can be applied to evaluating both the process and the product. This set o f criteria is helpful in the development o f quality software within a process that supports such development.Additional elements o f quality must be devised that relate specifically to the software development process. The application o f quality assurance and quality control are vital to producing quality software.Quality focus can be either external or internal to the software itself. Internal elements o f quality are dependent upon the skills o f those individuals designing and developing the software. It is strongly suggested that one refer to the work o f [Kemingham and Pike, 1999] Mid [McConnell,1993] for further insight into those aspects o f programming that contribute to overall software quality.In addition to the limited discussion o f quality and software development presented in this thesis,a number o f other individuals have examined the issue o f software quality and the elements that one should consider. Dunn, Glass, Weinberg, Deutsche and Willis, as well as others, have examined the issues surrounding software quality and quality assurance. The results o f their research are important when considering what constitutes quality in software and how one manages the process in order to assure that such quality is built into the software product.

READ  Law of mixture in an austenite-ferrite dual phase material

1.1 Introduction
1.2 Problem Statement U Scope of the Research
1.3.1 Hypothesis
1.3.2 Constraints on this Investigation
1.3.3 Proposed Solution
1.4 Method of Investigation
1.5 Format of the Thesis
2.1 Introduction
2.2 Software Quality
2.3 Software Process Models
2.3.1 Revised Spiral Model (du Plessis and van der Walt, 1992)
2.4 Object-Oriented Development Methods
2.4.1 Booch’s Life Cycle
2.4.2 Rumbaugh’s OMT
2.4.3 The Unified Software Development Process of Jacobson, Rumbaugh, and Booch
2.4.4 Wirfe-Brock
2.4.5 Jacobson’s Use Cases
2.4.6 Eiffel
2.4.7 The Catalysis Approach
2.5 Quality Assurance and the Software Development Life Cycle
2.5.1 Role of Quality Assurance
2.5.2 Standards for Software Development and Quality Assurance
2.6 Frameworks for Software Process Improvement
2.6.1 Capability Maturity Model (CMM)
2.6.2 Trillium *
2.6.3 Belcore TR-179
2.6.4 Bootstrap
2.7 Software Testing
2.7.1 Role of Software Testing
2.7.2 Quality Assurance Through Testing
2.8 Summary and Conclusions
3.1 Introduction
3.2 Software Testing Phases
3.2.1 Unit Testing
3.2.2 Integration Testing
3.2.3 System Testing
3.3 Goals of Integration Testing
3.4 Integration Testing Tools and Techniques
3.4.1 Integration Strategies Top-Down Integration/Testing Bottom-Up Integration/Testing Big-Bang Integration/Testing Unification of Top-Down, Bottom-Up, and Big-Bang Data Flow Testing
3.4.2 System Testing
3.5 Summary


Related Posts