Software components are meant to be reusable and flexible by design. These characteristics and others continue attracting software developers to adapt a component (typically designed elsewhere) into their systems. However, software components are also believed to be most vulnerable to reliability and security problems due to the existence of non-obvious faults. In this paper, we present a framework that can help software system developers in detecting and ranking components failures systematically. Our approach can allow monitoring critical components within a software system under instrumentation and detecting failures based on specifications. Furthermore, the approach uses failure data and input from developers and rank the components accordingly. A prototype tool is designed along with a number of failure scenarios to detect specific failure types within a component of software system. We conducted an experimental evaluation to assess the effectiveness of the proposed approach and prototype tool and to measure its performance overhead. Our experimental results show that the approach can benefit system developers by prioritizing the maintenance of components with a minimal overhead.