Modern society’s dependence on software requires it to be as reliable as possible. However, software is developed by fallible humans, inevitably resulting in software with bugs. Ironically, one solution to identifying bugs is to use more software. The software development process has an increasing need for quality assurance (QA) tools, which may be grouped into several categories. For example, QA tools may enable developers to work together more effectively or examine source code for problems. Other tools may help project managers to prioritize fixes by quantifying variables for fixing a particular bug such as programmer productivity, code quality and cost effectiveness.