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