CSE584: Software Engineering Lecture 9: Tools & Analysis (B)


Click here to start

Table of Contents

CSE584: Software Engineering Lecture 9: Tools & Analysis (B)

Lackwit (O’Callahan & Jackson)



Lackwit analysis

Query commonalities

An example


Underlying technique

Trivial example

Lackwit’s type system

Incomplete type information


Type stuff

PPT Slide

Morphin case study



Program invariants

Invariants and evolution

Other uses for invariants


Today’s focus

Goal: Recover invariants

Experiment 1 [Gries 81]: Recover formal specifications

Test suite

Inferred invariants

Inferred loop invariants

Experiment 2: Code without explicit invariants

Programmer use of invariants

More invariant uses

Experiment 2 conclusions

Other experiments

Ways to obtain invariants

Dynamic invariant detection

Daikon implementation

Running the program

Sample invariants

Checking invariants

Performance: runtime growth

Absolute runtime


Improved invariant relevance

1. Implicit values Find relationships over non-variables

Derived variables

2. Unused polymorphism

Unused polymorphism example

Polymorphism elimination

3. Unjustified properties

Statistical checks: check hypothesized distribution

Duplicate values

Disregard duplicate values

4. Redundant invariants

Suppress redundancies

5. Unrelated variables

Limit comparisons

Comparability results

Richer types of invariant

Pointer experiment

Object invariant

Conditional pointer invariant

Linearize data structures

Conditionals: mechanism

Data splitting criteria


Incremental inference


Path Profiling: Ball and Larus

What does it do? Run it!

Counting arguments

Continuing like this…key numbers are

Pretty printing the program...

PPT Slide

Structure of the program

main: three arguments

Use profiling to extract counts

PPT Slide

The upper left pane shows the statistics about each executed path

Path clusters by frequency: manually identify computational signature


Jinsight: http://www.research.ibm.com/jinsight/


Object histogram view: instances grouped by class, indicating level of activity

Object histogram view

Method histogram view: methods grouped by class

Class names along the left edge

Call tree view: Summarize call paths from or to a given set of method invocations

Execution view: overview and details of communication among objects per thread as a function of time

Object represented by vertical stripe colored according to the object's class

Zoomed in for detail

Execution pattern view: summarizes all invocations of a selected method highlighting the differences

A summary of all the println occurrences in the trace

Reference pattern view

Shows patterns of references to or from a set of objects

Slices (not Weiser slices)

Workspaces: collections of filterings


Author: David Notkin

Email: notkin@cs.washington.edu

Home Page: http://www.cs.washington.edu/education/courses/584

Download presentation source