Empirical software engineering (SE) studies collect and analyze data from software artifacts and the associated processes and variables to quantify, characterize, and explore the relationship between different variables to deliver high-quality, secure software on time and within budget. In this chapter we discuss empirical studies related to failure prediction on the Windows operating system family. Windows is a large commercial software system implemented predominantly in C/C++/C# and currently used by several hundreds of millions of users across the world. It contains 40+ million lines of code and is worked on by several hundreds of engineers.
Failure prediction forms a crucial part of empirical SE, as it can be used to understand the maintenance effort required for testing and resource allocation. For example:
Software quality assurance consumes a considerable effort in any large-scale software development. To raise the effectiveness of this effort, it is necessary to plan in advance for fixing issues in the components that are more likely to fail and thereby need quality assurance most.
Predictions on the number of failures can support other decisions, such as choosing the correct requirements or design, the ability to select the best possible fix for a problem, etc. The associated risk of a change (or likelihood to fail) can help in making decisions about the risk introduced ...