Page 238 -
P. 238

CHAPTER 8  SOFTWARE QUALITY ASSURANCE                              209

                              software organization should experiment to determine what approach works best in
                              a local context. Porter and his colleagues [POR95] provide excellent guidance for this
                              type of experimentation.



                        8.6   FORMAL APPROACHES TO SQA

                              In the preceding sections, we have argued that software quality is everyone's job;
                              that it can be achieved through competent analysis, design, coding, and testing, as
                              well as through the application of formal technical reviews, a multitiered testing strat-
                              egy, better control of software work products and the changes made to them, and
                              the application of accepted software engineering standards. In addition, quality can
                              be defined in terms of a broad array of quality factors and measured (indirectly) using
                              a variety of indices and metrics.
                                Over the past two decades, a small, but vocal, segment of the software engineer-
                              ing community has argued that a more formal approach to software quality assur-
                 XRef
                              ance  is required. It can be argued that a computer program is a mathematical object
                Techniques for formal  [SOM96]. A rigorous syntax and semantics can be defined for every programming
                specification of
                software are  language, and work is underway to develop a similarly rigorous approach to the spec-
                considered in Chapter  ification of software requirements. If the requirements model (specification) and the
                25. Correctness proofs
                are considered in  programming language can be represented in a rigorous manner, it should be pos-
                Chapter 26.   sible to apply mathematic proof of correctness to demonstrate that a program con-
                              forms exactly to its specifications.
                                Attempts to prove programs correct are not new. Dijkstra [DIJ76] and Linger, Mills,
                              and Witt [LIN79], among others, advocated proofs of program correctness and tied
                              these to the use of structured programming concepts (Chapter 16).



                        8.7   STATISTICAL SOFTWARE QUALITY ASSURANCE

                              Statistical quality assurance reflects a growing trend throughout industry to become
                              more quantitative about quality. For software, statistical quality assurance implies
                              the following steps:
                ?  What steps  1. Information about software defects is collected and categorized.
                   are required
                to perform
                statistical SQA?  2. An attempt is made to trace each defect to its underlying cause (e.g., non-
                                   conformance to specifications, design error, violation of standards, poor
                                   communication with the customer).
                               3. Using the Pareto principle (80 percent of the defects can be traced to 20 per-
                                   cent of all possible causes), isolate the 20 percent (the "vital few").
                               4. Once the vital few causes have been identified, move to correct the problems
                                   that have caused the defects.
   233   234   235   236   237   238   239   240   241   242   243