The cost of fixing a defect increases exponentially as the defect propagates. And yet, a conventional approach to software development performs only subjective analysis of specifications and designs. But what if there was a way to verify and validate software specifications and designs?
There are various ways in which an intruder might seek to compromise your operations. One of the simplest, blunt force methods is to look for an application with network interfaces and attempt to disrupt it. How certain are you that your software systems are resilient enough to cope with such an attack?
Reengineering legacy software is an undesirable but nevertheless occasionally unavoidable necessity. In this paper, we present a technique by which lost or poorly understood behaviour can be recovered and turned into formally verifiable models.