What is Dynamic Code Analysis? How does it work?