Intraprocedural Dataflow Analysis for Software Product Lines Claus Brabrand Márcio Ribeiro Társis...

Preview:

Citation preview

Intraprocedural Dataflow Analysis for Software

Product LinesClaus BrabrandMárcio RibeiroTársis TolêdoPaulo Borba

Preprocessor Directives

Image logo;

#ifndef GLIDERlogo = Image.create(“/icon.png”);#endif

UILabel uimg = new UILabel(logo);

Preprocessor Directives

Image logo;

#ifndef GLIDERlogo = Image.create(“/icon.png”);#endif

UILabel uimg = new UILabel(logo);

Possibly unitialized variable!

Dataflow Analysis for Software Product Lines

But first…

Control Flow Graph (CFG)

x = 0;while (...){

x++;}

1

Lattice

2

Transfer Functions

3

x++;

Putting It All Together

The Real Deal

A1: Brute Force

A2: Consecutive Analysis

A3: Simultaneous Analysis

A4: Shared Simultaneous Analysis

A1:Brute Force

int x = 0;#ifdef (A) x++;#ifdef (B) x--;

A2: Consecutive Analysis

A3: Sim.Analysis

A4: Shared Analysis

All possible configurations!

Evaluation

Study Settings

CIDE as the preprocessorSOOT as the compiler technology

Performance (time)Memory consuption (space)

Reaching definitionsDefinite assignments

4 Product Lines

The Product Lines

Performance (Reaching Defs.)

Performance(Reaching Defs.)

Memory Consumption

Maximum memory consumption of lattice on one method

In the Near Future...

INTERprocedural

Thank You!

Questions?

Recommended