Date of this Version
Systems that are written to achieve the same high level specifications can vary in subtle ways. Depending on a programmer's objective, using one variant of a program or algorithm over another may be beneficial, and this objective may change over time. However we do not have sufficient techniques to compare two different system variants side-by-side to find specific behavioral differences, particularly in the absence of source code. Assuming two system implementations take the same inputs and produce the same outputs or exhibit the same behavior under most conditions, we want to find input instances where the behavior diverges for a given objective. In this paper we present a framework called UDivE to fill this gap. UDivE accepts a model of the input space and system constraints, as well as an objective measure for the output behavior that is of interest. It then uses a genetic algorithm to explore the input space of two implementations, guiding the search towards divergent behavior. We have implemented a prototype of UDivE and evaluate it on three different software case studies, each with different input spaces and objectives. In all three cases we find 'unexpected' divergent behavior. In addition, we take a first-step towards applying UDivE to a cyber-physical system by providing a feasibility study in which UDivE interacts with a simulation of an unmanned aerial vehicle (UAV), the results of which are validated on the UAV itself. We show that UDivE can produce promising results, even in the presence of a simplistic simulator.
Advisers: Myra B. Cohen and Sebastian Elbaum