Static analysis can uncover a variety of defects and weaknesses in system source code, even before the code is ready to run. Runtime analysis, on the other hand, looks at running software to detect problems as they occur, usually through sophisticated instrumentation. This paper begins with static analysis, then explores runtime analysis, and, finally, discusses how developers can combine static and runtime analysis to prevent regressions as a product matures.