Simply put, static analysis collect information based on source code and dynamic analisys is based on the system execution, often using instrumentation.
Advantages of dynamic analysis
- Is able to detect dependencies that is not possible in static analysis. Ex.: dynamic dependencies using reflection, dependecy injection, polimorphism.
- Can collect temporal information
- Deals with real runtime values
Disadvantages of dynamic analysis
- Much more complex to work with
- Cannot garantee the full coverage of the source code, as is runs based on user interaction or automatic tests
Resources
There's many dynamic analysis tools in the market, being debuggers the most notorious one. On the other hand, it's still an academic research field. There's many researchers studying how to use dynamic analysis for better understanding of software systems. There's an annual workshop dedicated to dependecy analysis.