Research Talk: Using machine learning to detect faulty program states in avionics systems
Software fails, often due to bugs in the system. This may have fatal consequences if the software failure occurs on a modern commercial aircraft, where the software flies the plane. Software development processes in aviation emphasize near exhaustive testing but not all bugs can be avoided by best practices. In addition, current run-time fault detection methods, including assertion-based methods, do not appear to be suitable for the aviation domain due to complex relationships between program variables.
In this talk, I will present a method for detecting faulty program states using a Machine Learning approach. Compared to current run- time methods, statistical approaches are more suitable to detect bugs that produce complex relationships between program variables. This is at the cost of larger overhead. The method was evaluated using a simulated aircraft autopilot. Using the proposed Machine Learning method, I recorded the values of program variables over time between normal and faulty runs. By looking at the dynamics over the total set of program variables, I obtained better classification results than just by looking at each variable individually. I will present experimental results on two injected bugs on the simulated aircraft autopilot.