A Component Ranking Framework for More Reliable Software
MetadataShow full item record
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 vulnerable to reliability and security problems due to existence of non-obvious faults. We believe that a systematic approach to detect failures of a component and prioritize components using such failures can help developers decide on appropriate solutions to improve reliability. In this thesis, we present a framework that can help developers in detecting and ranking component failures systematically so that more reliable software can be achieved. Our proposed framework can allow monitoring critical components within a system under instrumentation, detecting failures based on specifications and using failure data and input from developers to rank the components. The proposed approach provides information for developers who could decide if the reliability could be improved by trivial code modification or require advanced reliability techniques. A prototype is designed along with a number of failure scenarios to detect specific failure types within a component. Four major failure types (value, timing, commission, and omission) are detected and used to rank software components. We conducted an experimental evaluation using two subject systems to assess the effectiveness of the proposed framework and to measure its performance overhead. Our experimental results show that the approach can benefit system developers by prioritizing components for effective maintenance with a minimal overhead.