Joshua Garcia Daniel Popescu Gholamreza Safi William G.J. Halfond Nenad Medvidovic University of Southern California, Los Angeles, CA, USA
1
Nenad Medvidovic University of Southern California, Los Angeles, CA, - - PowerPoint PPT Presentation
Joshua Garcia Daniel Popescu Gholamreza Safi William G.J. Halfond Nenad Medvidovic University of Southern California, Los Angeles, CA, USA 1 Distributed Event-Based (DEB) Systems Financial systems, sensor networks, enterprise software,
1
2
3
public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
consume
Maintenance Challenges:
interfaces
message types
4
public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
Message Dispatching
add result
Maintenance Challenges:
interfaces
message types
5
add result Consumed Message “name” : “add” “num1” “num2”
Maintenance Challenges:
interfaces
message types
6
public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
Consumed Message “name” : “add” “num1” “num2” Published Message “name” : “sum” “val” add result sum
Maintenance Challenges:
interfaces
message types
7
8
9
Consumed Message “name” public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
“name” : “add” “num1” “num2”
add result sum 10
11
public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
Message “name” : “sum” “val”
add result sum Must reach publish statement 12
13 add result sum
14
public class Adder extends Component{ … public void consume(Message m) { String nameAttr = (String)m.getAttr("name"); if ("add".equals(nameAttr)) { Message sumMsg = this.add(m); this.publish(sumMsg);} else if ("result".equals(nameAttr)){ …}} private Message add(Message m3){ Integer n1 = m3.getAttr("num1"); Integer n2 = m3.getAttr("num2"); sum = n1 + n2; Message m4 = new Message(); m4.setAttribute("name", "sum"); m4.setAttribute("val", sum); return m4;}
Consumed Message “name” : “add” “num1” “num2” Published Message “name” : “sum” “val” add result sum tadd tadd tadd tadd tadd tadd tadd intra 15
16
17
sum Adder’s Published Message “name” : “sum” “val”
Printer’s Consumed Message “name” : “sum” sum inter “val”
18
sum Adder’s Published Message “name” : “sum” “val”
Printer’s Consumed Message “name” : “sum” sum inter
19 Consumed Message “name” : “add” “num1” “num2” Published Message “name” : “sum” “val” intra Consumed Message “name” : “result” Published Message “name” : “lastResult” “val” intra
Published Message “name” : “sum” “val” inter
20
21
22
23
24
0.00% 20.00% 40.00% 60.00% 80.00% 100.00% PMT Precision PMT Recall 0.00% 20.00% 40.00% 60.00% 80.00% 100.00% CMT Precision CMT Recall 0.00% 20.00% 40.00% 60.00% 80.00% 100.00% Intra-Flow Dependencies Precision Intra-Flow Dependencies Recall
25
200 400 600 800 1000 1200 1400 1600 1800 2000 KLAX DRADEL ERS Stoxx jms2009-PS Spark Time (ms)
26
27
28
0% 20% 40% 60% 80% 100% Average Precision Average Recall
Eos LSME 0% 20% 40% 60% 80% 100% Average Precision Average Recall
Eos LSME Traditional
29