28
Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Embed Size (px)

Citation preview

Page 1: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Impact Analysis for Event-Based Systems

Daniel PopescuAdvisor: Nenad Medvidović

March 9, 2010

Page 2: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style

Page 3: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Explicit vs. Implicit Invocationpublic class HelloWorld {

public static void main(String[] args) {ConsoleWriter.out("Hello World");

} }

public class HelloWorld {public static void main(String[] args) { Message helloWorld = new Message("Hello World"); MessageHandler.send(helloWorld);}

}

Page 4: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Event Message Routing

Page 5: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Runtime Adaption (1)

Page 6: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Runtime Adaption (2)

Page 7: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Event-Based Application

Page 8: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

Page 9: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Impact of Changing Code

Page 10: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Call Graph Dependencies (1)

Page 11: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Call Graph Dependencies (2)

Page 12: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Call Graph Dependencies (3)

Page 13: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

2. Impact Analysis in Event-Based Systems• Challenges and Dependence Types

Page 14: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Call Graph Dependencies (4)

Page 15: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Component Interfaces

Vs.

Page 16: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Challenge: Ambiguous Interfaces

public void handle (Notification n){

if (n.name.equals(StateSelector)){…

} else if (n.name.equals(Tick)){

…send(n2);

} }

Interfaces of Event-Based Components need to be recovered

Page 17: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Dependence Types

Page 18: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

2. Impact Analysis in Event-Based Systems• Challenges and Dependence Types• Specifying Component State

Page 19: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Challenge of Recovering State Accesspublic class Store {

private Stack s1 = new Stack();

void foo(Stack s2) {s1.push("1");

}

void bar(Stack s2) {s2.push("2");

}}

Page 20: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Specifying and Checking State@ClassStates({

@State(name = "state", inv = "share(s1)")})public class Store {

private Stack s1 = new Stack();

@Share("state")void foo(Stack s2) {

s1.push("1");}

@Pure("state")void bar(Stack s2) {

s2.push("2");}

}

Page 21: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

2. Impact Analysis in Event-Based Systems• Challenges and Dependence Types• Specifying Component State• Iterative Data-Flow Analysis

Page 22: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Iterative Data-Flow Analysis • Propagating message through component

statements• Name Checks • Outgoing Messages• State Access

public void handle (Notification n){ if (n.name.equals(StateSelector)){

… } else if (n.name.equals(Tick)){

…send(n2);

} }

Page 23: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Iterative Data Flow Equations

Page 24: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

2. Impact Analysis in Event-Based Systems• Challenges and Dependence Types• Specifying Component State• Iterative Data-Flow Analysis• Preliminary Results

Page 25: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Experimental Subjects

Page 26: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Improvement over Black-Box Approach

Including State-Based Dependencies

Only Control-Flow Dependencies

Page 27: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

1. Background• Event-Based Architectural Style• Impact of Changing Procedural Implementations

2. Impact Analysis in Event-Based Systems• Challenges and Dependence Types• Specifying Component State• Iterative Data-Flow Analysis• Preliminary Results

Page 28: Impact Analysis for Event-Based Systems Daniel Popescu Advisor: Nenad Medvidović March 9, 2010

Impact Analysis for Event-Based Systems

Daniel [email protected]

http://softarch.usc.edu/~popescu/March 9, 2010