Nathan Taylor provides an introduction to the dynamic analysis research space, suggesting integrating these techniques into various internal tools.
The authors introduce Alembic, a new static analysis tool that frees programmers from having to manually move computation to exploit locality in PGAS programs.
Adam Tornhill teaches how to predict bugs, detect architectural decay and find the code that is most expensive to maintain, how to evaluate knowledge drain in a codebase, and much more.
Bjorn Freeman-Benson suggests “listening” to the code, refactoring it based on various factors such as the defect rate or underperforming services, providing strategies and tools.
Patrick Smacchia shares code analysis-related practices - structuring code, measuring code quality, automated tests, code contracts, reporting progress, trending- based on his experience with NDepend.
Daniel Spiewak and Aaron Bedra take a look at code verifying starting with Tony Hoare’s paper on testing(1969), type theory, and language-integrated proof systems.
William Pugh explains how to use FindBugs, a Java static code analysis tool, to discover bugs. The talk covers general issues regarding code bugs with advice on how to make sure you get rid of them.
Erik Dörnenburg shares techniques for estimating code quality by collecting and analyzing data using the toxicity chart, metrics tree maps, size&complexity pyramid, complexity view, code city, etc.
Michael Feathers analyzes real code bases concluding that code is not nearly as beautiful as designers aspire to, discussing the everyday decisions that alter the code bit by bit.
Bernhard Merkle advices on preventing architectural degradation of a project by using tools for constant monitoring of the code, exemplifying with an analysis of Ant, Findbugs and Eclipse.
Erik Dörnenburg explains how to use various visualization tools to spot patterns, trends and outliers in the code that are an indication of code quality level.
Cliff Click discusses the Von Neumann architecture, CISC vs RISC, Instruction-Level Parallelism, pipelining, out-of-order dispatch, cache misses, memory performance, and tips to improve performance.