Table of Contents
CSE584: Software EngineeringLecture 9: Tools & Analysis (B)
Lackwit (O’Callahan & Jackson)
Placement
Lackwit
Lackwit analysis
Query commonalities
An example
Claim
Underlying technique
Trivial example
Lackwit’s type system
Incomplete type information
Polymorphism
Type stuff
PPT Slide
Morphin case study
Example
Recap
Program invariants
Invariants and evolution
Other uses for invariants
However…
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
Relevance
Improved invariant relevance
1. Implicit valuesFind 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
Scaling
Incremental inference
Summary
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
More
Jinsight: http://www.research.ibm.com/jinsight/
Tasks
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
Tools
|