We collect observations from the running system - all inputs, all outputs, all interactions with the world outside of the application. Various analysiss algorithms then identify patterns across these observations - interfaces, workflows, data flows, business rules, calculations, conditional logic, data transformations, etc. The algorithms discover relationships between data and behavior, building up a complete picture of what the system does. This discovery is systematic and covers all observed cases.