"Understanding what a program does can be a difficult task. Our "model mining" approach extracts _finite state automata_
from program runs - automata which characterize invariants of object behavior: "A Java Vector object has an empty and a
non-empty state (isEmpty() and ! isEmpty()); using add() and remove(), one can switch between these states." Such models
can be used as a starting point for documentation and specification; they can also be used to detect anomalies in program
runs as well as failure-prone code changes or code smells."
Andreas Zeller is computer science professor at Saarland University; he researches large programs and their history. His
book "Why programs fail" is now available from Morgan Kaufmann.