I. Introduction
The amount of software functions and electronic control units (ECU) in automobiles has been steadily increasing since their first introduction in the 1970's. The autonomously operating ECUs from the early years of automotive electronics have subsequently been replaced by functions distributed over several ECUs collaborating over bus-systems, and in the last years by highly integrated components hosting dozens of functions. Both developments have led to a high complexity of the car's system architecture. For instance, modern luxury cars consist of up to 100 ECU hosting hundreds of functions communicating over five different bus-systems (cf. [1]). Recent studies estimate such cars having several millions lines of source-code [2]. With software functions taking over more and more (safety-relevant) functions in modern cars, their possible faulty behaviour has to be detected and dangerous effects prevented or mitigated. Additionally, information about the fault's root cause has to be provided to support repairs in the garage. These are the central tasks of automotive diagnosis. For the remainder of this paper we will make use of the terminology for errors, faults and failures as defined in [3].