I. Introduction
The use of software is ubiquitous in present world. We interact with software on a daily basis in some or the other way. The increasing size and complexity of software demands the need of maintaining software quality. Maintaining software quality and reliability is a challenging task and has become an important area of research. A fault or bug in a program causes an error condition that may lead to system failure. A failure of the system is a state when it behaves incorrectly.