Analyzing Big Programs: Taking Approximate Information to Task
CSE
UW
Analyzing Big Programs: Taking Approximate Information to Task
Today’s plan
Software evolution is costly
My research
Analysis is ubiquitous
Common requirement
Alternative premise
Outline
Example: call graphs
Experiment: call graph extractors
Application sizes
Selected call graph extractors
Example data: Field vs. cflow
Variance from “truth”
So?
Source model extraction
Some possible approaches
A lightweight lexical approach
Lexical patterns
Hierarchical patterns
Adding action code
Producing a C calls graph
Refining a source model
...producing a source model
The scanner generator
Performance
Sample extractors
Supporting software change
The problem
Software reflexion model
Terminology
The approach
1. State a high-level model
2. Extract a source model
3. State a mapping
4. Investigate an RM
Iteration
Refined reflexion model
The computation
Two-pronged effort
Experimental re-engineering
Syntactic models
Declarative maps
Feedback
Lightweight technique
Approximation and task
Feedback and iteration
Acknowledgments