Recovering runtime structures of software systems from static source code
While software building blocks and their interdependencies can be recovered from the source code using static fact extraction, behavior and communication paths at runtime are typically gathered from instrumented executions of the system. However, more often than not it is not possible to retrieve data from the running system - either due to a high effort for instrumentation, missing (hardware) infrastructure, or because of advanced communication mechanisms hidden by middleware, frameworks or platforms. In this paper, we present an approach to semi-automatically reconstruct runtime components and connectors using source code analysis, pattern matching, and expert knowledge. We present two applications where we could recover runtime communication paths and component interactions despite the absence of runtime traces.