Applying Software Dependence Analysis for Automotive Embedded Software 2011-01-1263
The size and complexity of embedded software in automotive systems has been increasing rapidly. This makes the analysis of such systems difficult. For instance, in many analyses it is required to trace the dependences between variables in the software. E.g., in checking compliance to On-Board Diagnostics (OBD) standards one needs to ensure that only OBD compliant data-items are used (directly or indirectly) in an algorithm that is to be OBD compliant. Similarly, for safety analysis such as Design Failure Mode Effects Analysis (DFMEA), all the inputs to a safety critical system, all inputs to them, etc., have to be found, so that failure modes associated with these can be analysed. Currently such tracing of dependences is performed manually at great cost and effort.
We describe the application of a technique (and tool) that automates the tracing of software dependence. Essentially, a software variable V (directly) depends-on another variable U when the value of U is used in determining the value of V. This relation can be chained together (transitive closure) to obtain all the (direct or indirect) dependences of any variable, thus allowing variable dependences to be traced.
Our tool takes as input the entire software source code (in C) and computes all the dependence relations in the software. The tool presents an engineer a query interface that allows him/her to view the (direct and indirect) dependences of a chosen variable. The dependences can be visualised as trees and lists and various filters can be applied on these. The tool is sound (it will not miss any potential dependences), scalable (for entire control software exceeding a million lines of code), handles full ANSI C, supports multitasking, and is fully automatic. The tool has been successfully validated on control software in GM in the context of a number of applications.