While undertaking a maintenance task, it is essential to make out and to trace the portion of code that requires altering depending on the perception that is acquired by executing the software and consultation with its use-cases. It is relatively easy to locate a portion of code that requires changing if the system is well documented and high-level documents can be traced to the source code. However, this is rarely the case since the only information available regarding the system is the source code itself. Such instances call for maintainers to read and scrutinize the source code, which may be time-consuming and tiresome since implementing a feature may entail multiple modules and classes.
In an attempt to decrease such a labour-intensive endeavour, various techniques have been developed to automatically identify the software’s features and to trace these features to the source code that executes them. Static analysis techniques are inadequate for an understanding of executables in a large software system and to establish its features, therefore, static analysis techniques ought to be accompanied by complementary dynamic analysis techniques. In most cases, this is completed by instrumenting the software code, executing its pertinent features via a prowler, and then analyzing the execution traces to establish the portions of the code that were executed by the features.
Using necessary tool support, this approach permits developers to situate the code of interest promptly and easily. It can also disclose run-time relationships between modules and between classes, including thread contacts for multi-threaded systems, which static analysis alone cannot detect.
Dynamic analysis is a method used to study the performance of software systems by running it and observing its actions. Despite the existence of techniques based exclusively on static information, hybrid techniques combining static and dynamic information offer a more precise or a quicker solution. .