Companies, governments, and open source communities spend a great deal of resources to fix, adapt, and enhance the quality of their software systems. In the context of software engineering, software quality measures how well the software is designed (quality of design), and how well the software conforms to that design (quality of conformance), although there are several different definitions. Whereas quality of conformance is concerned with implementation, quality of design measures how valid the design and requirements are in creating a worthwhile product. Nowadays, a software product is necessary in most of the engineering fields and industrial processes since it helps to save time, space and consequently money. Therefore, as software spreads from computers into auto engines, factory robots, hospital X-ray machines and elsewhere, defects represent a problem to be managed. They are predicted and excised or else unanticipated uses will lead to unintended consequences.