In their nature consumer programs are component based, constructed out of various building blocks dispersed all over the globe by various authors on network nodes with varying capabilities. Developing applications in such a heterogeneous and volatile environment enables creativity on an unprecedented scale but also poses inevitable dependability issues. Our goal is to push the boundaries in making consumer applications more robust by avoiding, detecting and mitigating faults. We aim to answer the following questions:
How reliable are the component-based consumer applications?
- How can reliability models be utilized with aim of aiding the application development process?
How can consumers construct reliable applications?
- What tools should be at their disposal?
- What fault mitigation techniques should be used?
Designing Reliable Component-Based Systems
As a significant portion of our research we plan to study reliability models for component-based systems. More specifically, we will investigate how probabilistic graphical models, such as Bayes networks or Markov chains, can be used to reason about dependability of composite based applications. We will specially focus on utilizing models to detect weak points in the composite application logic and thus aid the development process, as shown on the image below. The resulting applications should be less prone to failures. In addition, we will incorporate fault mitigation techniques by introducing specialized fault tolerant components. We will encompass traditional fault tolerance techniques including single version fault tolerance, like checkpointing, and multi version fault tolerance mechanisms, like recovery blocks and N-version programming.