Page 166 -
P. 166
8 - PROJECT QUALITY MANAGEMENT
8.3.2 Control Quality: Tools and Techniques
The tools and techniques for controlling quality in Section 8.3.2 of the PMBOK Guide are applicable for
®
controlling quality for software projects. Additional considerations include the following.
Along with the items listed in the PMBOK Guide, tools and techniques for software quality control (SQC)
®
include reviews, testing, and the version control elements of configuration management. Reviews take many forms,
including walkthroughs and inspections of requirements, design, and code, plus reviews of other work products,
such as user manuals and installation instructions. Static analysis and dynamic testing tools are also used. Reviews
may involve use of tools that check for common programming mistakes, such as uninitialized variables. Defects are 8
corrected when they are found, thereby controlling the quality of the work products.
Walkthroughs and inspections applied early in the development process (i.e., to requirements and design
documentation) are most effective for controlling software quality. Frequent testing of product increments is another
technique that supports software quality control. Testing and demonstration of internal software builds may be
conducted on a daily or even hourly basis during the construction phase of a predictive life cycle software project or
during an internal iteration cycle of an adaptive life cycle software project. Of the QC tools and techniques identified
in the PMBOK Guide, inspection is one of the most effective ways to identify software defects and omissions in
®
software and documentation [15, pages 298–293 and Appendix 7B].
Usability evaluations, in the form of demonstrations and walkthroughs, are cost-effective techniques for finding
defects and discrepancies that might require reworking the software. Video-recorded usability testing with user
representatives, using a “think-aloud” approach, is also useful for finding defects and discrepancies well before a
release to end-users.
Test-driven development has long proven to be useful in controlling the quality of software. In this approach,
test cases are written before writing any software code, and the test cases are run to demonstrate that the tests
will fail. Then the new code is added, and the test cases are run again to demonstrate that they no longer fail. Tools
are commonly used to automate such testing. In addition, desk exercises of walking through the code can be used.
Software testing includes unit testing of code modules, integration and verification testing, validation and
acceptance testing, and regression testing. Often, development teams build scaffolding (temporary modules) to
support early testing by simulating inputs and outputs from parts of the software that have not yet been constructed.
This allows integration or regression testing to be performed at early stages of software development. Testing
can also focus on specific quality attributes, such as performance, load, security, or usability. User observation,
(formalized as usability testing), and user surveys measure quality-in-use characteristics, such as users’ satisfaction
or users’ efficiency in performing work tasks.
Testing tools and automated scripts can repeatedly execute tests in a consistent manner with little or no manual
intervention, automatically collect and store the test results, compare test results to previous results or expectations,
and refresh the test data for another round of testing. Testing tools can provide time for the test team to focus on
issues such as the design of tests and analysis of the results.
©2013 Project Management Institute. Software Extension to the PMBOK Guide Fifth Edition 157
®