27.03.2014 Views

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

in the change set. The BFS in call graph stops searching<br />

when the methods in the initial impact set can satisfy the<br />

core condition as defined in Definition 4.<br />

From this definition, we know that the methods in the<br />

IIS are generated from the change set, and satisfy the core<br />

definition as defined above. The methods in the IIS are the<br />

methods most likely impacted by these multiple changes,<br />

that is, the IIS is expected to have few false-positives.<br />

However, it can not meet practical use. On the one hand,<br />

some methods in the IIS are still the noise methods (falsepositives).<br />

These methods are expected to be removed. On<br />

the other hand, there are many other methods that are really<br />

impacted but not included in the IIS, i.e., false-negatives.<br />

These methods should be included in the impact set to guarantee<br />

the consistency of the modification. Therefore, similar<br />

to the propagation of the ripples of the water wave ripple<br />

phenomenon, we should expand the IIS to perform the<br />

propagation analysis to get a final impact set (FIS), which<br />

is hoped to cover more false-negatives and remove some<br />

false-positives from the IIS. The definition of FIS is as<br />

follows:<br />

Algorithm 1 FISComputation<br />

Input:<br />

P : Original program<br />

IIS: Initial impact set<br />

Declare:<br />

m: A method<br />

AS: A set of adjacent methods of the method m in call graph<br />

θ: A threshold<br />

Use:<br />

Adjacent(m): it returns a set of adjacent methods of the method m in call<br />

graph.<br />

Output:<br />

Final impact set FIS<br />

1: FIS = IIS<br />

2: while FIS is not stable do<br />

3: for each m in call graph do<br />

4: AS = Adjacent(m)<br />

5: S = AS ∩ FIS<br />

6: if m/∈ FIS ∧|S|/|AS| θ then<br />

7: FIS = FIS ∪{m}<br />

8: end if<br />

9: if m ∈ FIS ∧|S|/|AS|

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!