EE 569, Software Design and Analysis

subject: Program Analysis for Software Engineering

Lecture:   M W F 11:00-11:50 AM    Room:  Rowley 142

Instructor: Daqing Hou

Office: CAMP 127   Office hours: M W F  9:00-11:00
Email: dhou at clarkson dot edu              Phone: 7675

Schedule & Lecture Notes

dates
slides
misc.
Jan.
introduction Nancy Leveson's intent spec paper
Feb.
overview of compilation write a lexer and parser (partial) for Java
HW #1 lexical analysis (5%)


HW#2 extend the lexer (15%)


HW#3 extend the parser (5%)


HW#4 draw AST (5%)
Feb. 29
Dataflow analyses HW#5 flow graph
HW#6 reaching def's
Mar. 1
Context- and flow-insensitive pointer analysis

Mar. 7

findbugs
Mar. 17
Points-to analysis for Java















































Intended Audience

Graduate and senior undergraduate students of computer science and computer engineering interested in the general issue of ensuring software quality. Students should be confident with at least one high-level programming language, such as C/C++ and Java. Confidence and interest in programming is definitely a plus. Prior exposure to compilers construction is helpful, but not necessary. Students intending to work with the instructor in the future must take this course.

Objectives

Software quality. Programmers intent. Expression and discovery of intent. Program-analysis-based tools for software engineering. Data structures for program analysis. Data flow analysis. Control flow analysis. Pointer analysis. Data dependence. Control dependence. Side-effect analysis. Evaluation of selected tools.

Learning Outcomes

1. Students will understand the fundamentals of program analysis.
2. Students will understand the challenges/limitations in this area and apply this understanding to criticizing existing tools.
3. Students will learn how to evaluate an existing tool.