| CPC G06F 9/4843 (2013.01) [G06F 2209/483 (2013.01)] | 21 Claims |

|
1. A non-transitory computer-readable medium storing:
a first software component comprising:
an input interface configured to receive, from a controller, an indication to execute the first software component and one or more variables;
first instructions that, when executed by one or more processors, cause the one or more processors to:
execute the first software component by processing the one or more variables and responsive to receiving the indication, wherein the processing the one or more variables is accomplished by the first software component executing one or more processor-executable instructions; and
receive a product of the execution of the first software component, wherein the product represents an output value based on the processing of the one or more variables by the first software component; and
an output interface configured to output the product to the controller; and
the controller comprising second instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:
receiving a log file generated by a vehicle, wherein the log file comprises a sequence of events associated with a historical execution of one or more software components of the vehicle;
controlling values of the one or more variables provided to the input interface;
controlling a time at which the first software component executes based at least in part on the sequence of events in real-time, wherein controlling the time comprises:
serializing, as a keyframe, an internal state of the first software component;
skipping a discrete execution of the first software component specified by the keyframe at a time subsequent to serializing the keyframe;
deserializing the keyframe to set the internal state of the first software component to match the internal state serialized by the keyframe; and
causing the first software component to execute, starting from the discrete execution by transmitting the indication to the input interface;
receiving the product from the output interface; and
publishing, to a second controller controlling execution of a second software component, a message including the product, wherein the product is used as input to the second software component.
|