|
Predicting Problems Caused by Component Upgrades
Stephen McCamant
I'll describe a new, automatic technique to assess whether replacing a
component of a software system by a purportedly compatible component
may change the behavior of the system. The technique operates before
integrating the new component into the system or running system tests,
permitting quicker and cheaper identification of problems, and takes
into account the system's particular use of the component. No formal
specifications are required, permitting detection of problems due
either to errors in the component or to errors in the system.
The technique generates an operational abstraction for the old
component in the context of the system and generates an operational
abstraction for the new component in the context of its test suite (an
operational abstraction is a set of program properties that
generalizes over observed run-time behavior). If automated logical
comparison indicates that the new component does not make all the
guarantees that the old one did, then the upgrade may affect system
behavior and should not be performed without further scrutiny. In case
studies, the technique identified several incompatibilities among
software components.
|