23
Ehsan Salamati Taba, Foutse Khomh, Ying Zou, Meiyappan Nagappan, Ahmed E. Hassan 1

Predicting bugs using antipatterns

Embed Size (px)

Citation preview

Page 1: Predicting bugs using antipatterns

Ehsan Salamati Taba, Foutse Khomh, Ying Zou, Meiyappan Nagappan,

Ahmed E. Hassan

1

Page 2: Predicting bugs using antipatterns

2

Page 3: Predicting bugs using antipatterns

Predict Bugs

Model

3

Past Defects, History of Churn (Zimmermann, Hassan et al.)

Topic Modeling (Chen et al.)

Page 4: Predicting bugs using antipatterns

4

Page 5: Predicting bugs using antipatterns

not technically incorrect and don't prevent a system from functioning

weaknesses in design

5

Page 6: Predicting bugs using antipatterns

Indicate a deeper

problem in the system

6

Page 7: Predicting bugs using antipatterns

Antipatterns indicate weaknesses in the design that may increase the risk for bugs in the future. (Fowler 1999)

7

Page 8: Predicting bugs using antipatterns

CVS Repository Mining Source Code

Repositories

Detecting Antipatterns

Mining Bug Repositories Bugzilla

Calculating Metrics Analyzing

RQ1

RQ2

RQ3

9

Page 9: Predicting bugs using antipatterns

10

Systems Release(#) Churn LOCs

Eclipse 2.0 - 3.3.1(12) 148,454 26,209,669

ArgoUML 0.12 - 0.26.2(9) 21,427 2,025,730

Studied Systems Studied Systems

Page 10: Predicting bugs using antipatterns

12

13 different antipatterns

DECOR (Moha et al.)

# of Antipatterns

# Files

Systems #Antipatterns

Eclipse 273,766

ArgoUML 15,100

Page 11: Predicting bugs using antipatterns

RQ1: Do antipatterns affect the density of bugs in files?

RQ2: Do the proposed antipattern based metrics

provide additional explanatory power over traditional metrics?

RQ3: Can we improve traditional bug prediction

models with antipatterns information?

14

Page 12: Predicting bugs using antipatterns

Density of bugs in the files with antipatterns

and the other files without antipatterns is the same.

15

Page 13: Predicting bugs using antipatterns

16

Systems Releases(#) DA – DNA> 0 p-value<0.05

Eclipse 12 8 8

ArgoUML 9 6 6

Files with Antipatterns

Density of Bugs

Files without Antipatterns

Density of Bugs

Page 14: Predicting bugs using antipatterns

RQ1: Do antipatterns affect the density of bugs in files?

RQ2: Do the proposed antipattern based metrics

provide additional explanatory power over traditional metrics?

RQ3: Can we improve traditional bug prediction

models with antipatterns information?

17

Page 15: Predicting bugs using antipatterns

Average Number of Antipatterns (ANA)

Antipattern Cumulative Pairwise Differences (ACPD)

18

Antipattern Recurrence Length(ARL)

Antipattern Complexity Metric (ACM)

Page 16: Predicting bugs using antipatterns

19

1.0 2.0 3.0 4.0 5.0 6.0

a.java

b.java

c.java

3 4 0 2 1 3

4 5 1 0 0 3

0 6 5 4 5 4

ANA(a.java) =2.16, ARL(a.java) = 18.76, ACPD(a.java) = 0

Page 17: Predicting bugs using antipatterns

20

Page 18: Predicting bugs using antipatterns

21

Provide additional explanatory power over traditional metrics

ARL shows the biggest improvement

Page 19: Predicting bugs using antipatterns

RQ1: Do antipatterns affect the density of bugs in files?

RQ2: Do the proposed antipattern based metrics

provide additional explanatory power over traditional metrics?

RQ3: Can we improve traditional bug prediction

models with antipatterns information?

22

Page 20: Predicting bugs using antipatterns

Step-wise analysis 1) Removing Independent

Variables 2) Collinearity Analysis

23

Metric name Description

LOC Source lines of codes

MLOC Executable lines of codes

PAR Number of parameters

NOF Number of attributes

NOM Number of methods

NOC Number of children

VG Cyclomatic complexity

DIT Depth of inheritance tree

LCOM Lack of cohesion of methods

NOT Number of classes

WMC Number of weighted methods per class

PRE Number of pre-released bugs

Churn Number of lines of code added modified or deleted

Page 21: Predicting bugs using antipatterns

0

2

4

6

8

Churn PRE LOC MLOC NOT NOF NOM ACM ACPD ARL

ArgoUML

24

02468

1012

Churn PRE LOC MLOC NOT NOF NOM ACM ACPD ARL

Eclipse

ARL remained statistically significant and had a low collinearity with other metrics

# Ve

rsio

ns

# Ve

rsio

ns

Page 22: Predicting bugs using antipatterns

F-m

easu

re

25

ARL can improve cross-system bug prediction on the two studied systems

Page 23: Predicting bugs using antipatterns