The Fault Detector component of EVOSS aims to offer a fully automatic, cost-effective and pragmatic way of improving the quality of the system. The fault detector checks the system configuration model and the running system for discovering faults. The checks for faults are performed by means of queries. There are two kinds of queries: those requiring for their evaluation only the system configuration model, and those requiring both the system configuration model and the running system. The former are realized by means of OCL queries, whereas the latter are realized by means of queries written in Java and embodied in JAR files.
We have these two kinds of queries since the model is an abstraction of the running system and then some system elements are not directly represented (and should not be) in the model. This abstraction has been iteratively defined by involving domain experts and by deeply studying the domain of interest . However, modeling elements might imply the existence in the running system of corresponding elements that are “abstracted” in the model (and then not considered in the system configuration model). The detection of faults involving such elements requires queries that consider both the system configuration model and the running system.
Since it is not possible to define once forever a complete catalogue of faults (faults are based on experience and acquired know-how), the fault detector has been designed to be open and extensible so that new queries can be added whenever new classes of faults are discovered. To exploit the distributions community knowhow, the fault detector is realized by following a client-server architectural style. In this way the community of users is involved in an iterative and possible never ending process, and can contribute in the definition of queries for detecting new classes of faults. It is also possible to associate a solution to identified faults.