Page 156 -
P. 156

8 - PROJECT QUALITY MANAGEMENT







                         •  Cost of quality (COQ). Cost of quality for software includes costs of the following SQC activities:
                                   ○ Appraisal: cost of finding software defects,

                                   ○ Internal: cost to fix defects discovered during software development or modification,
                                   ○ External: cost to fix software defects reported by users, and
                                   ○ Prevention: cost of reducing or eliminating the root causes of software defects.


                      Appraisal techniques for software include testing and demonstration of working software plus reviews and
                   inspections of software work products (requirements, design, code, test plans, documentation).
                                                                                                                          8
                      For software, the cost of quality is not just the cost of correcting the code, but the larger costs associated with
                   the effort to verify the change and validate its effectiveness, to communicate the change to all affected parties, and
                   to change the work products or processes that use or are impacted by the software product. This cost is greatly
                   increased once the software is in use and patches are applied or new versions are released.

                      Software quality planning includes developing a testing policy or testing strategy. In software, a “design
                   of experiments” approach is captured in the testing strategy, and reflected in test plans and scenarios, and
                   the level of test coverage to be achieved. Even relatively simple software may have thousands of potential
                   branches through the code, which could be exercised with a nearly infinite range and extent of valid and invalid
                   inputs. This would require an unacceptable amount of time to exhaustively test the software so a level of test
                   coverage should be specified. In addition, it may be necessary to test the software with previously developed
                   modules in various combinations. A testing strategy that will have a high likelihood of exposing serious defects
                   should be planned.

                      Test planning also takes into account the need for corrective rework, data refresh, and retest, because rarely
                   does one cycle of testing produce completely acceptable results. Since it is almost never possible, too time-
                   consuming, or not cost effective to test everything, part of planning software quality management is choosing the
                   test strategy, so that the most valuable and predictive tests are planned. Risk-based test strategy applies design,
                   development and test resources to the areas with the most impact on successful delivery and use of the software.

                      A goal of planning quality management for a predictive life cycle software project is to arrange the sequence of
                   work activities to obtain feedback from testing and reviews as early as possible by developing the final software
                   product as a series of testable software increments. Software architects and software designers can help in
                   identifying opportunities to build the software in a manner that provides feedback from evaluating successive
                   increments of working software.

                      When using adaptive software project life cycles, different levels of testing happen at different points. Story-
                   level testing involves validation of business rules and code quality relevant to small increments of software as the
                   team develops them. Feature-level testing provides more detailed feedback concerning quality attributes. Verifying
                   the increments with given inputs and outputs during a development cycle helps to find defects quickly and reduces
                   the cost of testing later in the project.

                      Functional testing (including feature-level testing) includes integration testing across software components as
                   well as quality-in-use testing. Good practice is to validate the product as early and as often as possible using real



                   ©2013 Project Management Institute. Software Extension to the PMBOK  Guide Fifth Edition              147
                                                                   ®
   151   152   153   154   155   156   157   158   159   160   161