You are on page 1of 2

Introductions

• Instructor
Course Introduction – Jonathan Aldrich
aldrich+ at cs.cmu.edu
• TAs
– Nicholas Sherman
nds at cs.cmu.edu
17-654/17-765 – Dean Sutherland
Analysis of Software Artifacts dfsuther at cs.cmu.edu
• Students
Jonathan Aldrich
– What would you like to learn from this course?

What is Analysis? What to Analyze?


My definition: • Software engineering degree
The systematic examination of an artifact ⇒ Analyze software artifacts
to determine its properties • Product primacy
⇒ Focus on analysis of code
⇒ Also consider analysis of designs, tests, etc.
• Properties
– Functional: code correctness
– Quality attributes: performance, reliability,
security

Course Goals Course Structure


• Understanding
Non-Functional Core Analysis Concepts Life Cycle
– Where different analyses are appropriate • Performance Taught through dataflow analysis • Architecture
• Reliability • Abstraction - Lattice theory • Design
– Tradeoffs between analysis techniques • Security • Soundness and completeness • Testing
• Others? • Flow-, path-, context-sensitivity • Reverse Eng.
– Theory sufficient to evaluate new analyses • Interprocedural analysis
• Incrementality and scalability
• Experience
– Writing simple analyses
– Applying analysis to software artifacts Other Techniques Code Analysis Applications
• Model Checking • Bug-finding (PREfix)
• Theorem Proving • Concurrency assurance (Fluid)
• Dynamic Anal. • Alias Analysis (Steensgaard)
• Type Systems • Optimization
• User-defined Properties (Metal)

1
Analysis Tradeoffs Evaluation
Automated, Manual, • Class participation (~10%)
Increasing Cost
Incremental Global – Discussion and presentations
• Homework (30%)
– Basic understanding of analysis techniques
Dynamic Static (dataflow,
Increasing Guarantees – Engineering tradeoffs
(testing, model checking)
profiling) • Mini-projects (30%)
– Evaluate analysis tools on studio or other project
• Written reports and in-class presentations
– Write and apply custom analyses
Common Theme: engineering tradeoffs between different
• Midterm and final exams (10% and 20%)
analysis techniques – Theory and engineering

Ph.D. Projects Readings


• Possible topics • Textbook
– Literature survey – Principles of Program Analysis by Neilson, Neilson,
• Study techniques, put into framework, identify open problems
and Hankin
– Comparative evaluation
• Your experience with multiple techniques or tools – Won’t be in the bookstore until end of January
• Higher standard than mini tool evals • Badly timed re-printing
– Development of a new analysis technique • Will do much of the reading before then
– Application of an analysis technique to a new problem domain • Try to get it online—a link to bookstores is on the course
home page
• Requirements
• Share if you can
– Written report
• I’ll do my best to make the lectures self-contained
• Length depends on nature of project
– Class presentation • Papers from the analysis literature
• Details to be arranged with instructor – Will be provided in class and on the web

Course Emphasis Free Advice


• Differs slightly from textbook • Slides will be provided on the web
– Broader: we will analyze non-code artifacts – Focus on asking, answering questions
and consider techniques not in the book – Write down what’s NOT in the slides
– Shallower: we will not cover all the theory and • Come to class
techniques in the book
– Participation is required and graded
– Motivation: we focus on engineering rather
– Exercises worked in class will help you
than optimization
– The book and papers are terse and
• The text will still be a very useful reference incomplete

You might also like