Click here to access press info

Analysis of Software Artifacts

Where you learn to reason about artifacts, from code to specifications

The ability to build, maintain and reuse software systems depends on the capacity to effectively analyze the products of software development. This course focuses on various kinds of software artifacts and introduces methods for analyzing them. Special emphasis is given to the analysis of functionality for discovering defects in artifacts and to support maintenance and reverse engineering. The course introduces various kinds of analysis to address other kinds of systems properties, such as performance and security. It considers the fundamental similarities among analysis methods to highlight limitations and scopes, and balances theoretical discussions with lab exercises in which students apply the ideas they are learning to real artifacts.

After completing this course, students will be equipped to:
› Understand what kinds of analyses are available and how to use them
› Understand the scope and power of various forms of analysis, when they can be applied, and what conclusions can be drawn from their results
› Use fundamental principles to evaluate new kinds of analyses when they are developed
› Have some experience selecting analyses for a real piece of software, applying them and interpreting the results




"For the overwhelming majority of the bankrupt projects we studied, there was not a single technological issue to explain the failure" 



DeMarco & Lister,